DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
域名
在讲解DNS之前,首先粗略的说一下域名这个东西,比如说我们在用浏览器访问网址的时候,我们输入的网站的地址就是一个域名,例如 www.google.com,但其实标志互联网中的每一个机器都是有一个IP地址的,我们若需要访问一个网站的服务器,实际上是需要输入该网站的IP地址来进行访问的,但是IP地址往往难以记忆,IPv4尚且难记,IPv6就更不用说了,所以我们就通过使用域名来对其进行管理,但是在访问的时候,系统底层还是通过ip地址来进行访问的,域名和IP地址直接的转换就是通过DNS服务器来完成的。
nsswitch框架
域名简单了解过了,再来说一说nsswitch框架这个东东。nsswitch(name service switch configuration,名称服务切换配置),规定通过哪些途径以及按照什么顺序来查找特定类型的信息。还可以指定某个方法奏效或失效时系统将采取什么动作,是一种通用框架,与各种类型存储进行交互的公共模块化的实现。nsswitch是Linux中的一种解析框架,负责在程序跟存储方式之间做了一层对接。让用户可以更好地选择存储方式,如把用户名解析为UID,服务解析为PORT,域名解析为IP等。这些堆成映射解析的存储方式可以有多种,如nis,ldap,file,mysql等。而nsswitch这种框架就是提供给用户可以方便更换存储方式的;比如默认的用户名和密码等配置默认在/etc/passwd文件中,但是用户可以选项把用户和密码存储在ldap或mysql中,而上层只要通过nsswitch就框架编写的程序,在用到系统用户时就不需要关心这些账号密码存储在哪里了(不需要变动程序),由nsswitch这个中间层来搞定了。在nsswitch的配置文件/etc/nsswitch.conf中有这么一行语句,”hosts: files dns“,就表示域名解析时先找本机的/etc/hosts文件然后再找dns服务器。
需要详细了解可以看/etc/nsswitch.conf配置文件,nsswitch.conf中的每一行配置都指明了如何搜索信息,每行配置的格式如下:
Info: method[[action]] [method[[action]]…]
其中,info指定该行所描述的信息的类型,method为用来查找该信息的方法&