linux下的DNS解析之原理篇

一:DNS概念及原理


   1、DNS是域名系统 (Domain Name System) 的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。

   早期互联网的规模确实非常小,每台主机利用一个Hosts文件就可以把互联网上所有的主机都解析出来。后来随着互联网的逐渐庞大,互联网的管理者们及时为Hosts文件找到了继任者-DNS。

   目前DNS采用的是分布式的解析方案。

   具体是这样的,互联网管理委员会规定,域名空间的解析权都归根服务器所有,也就是说,根服务器对互联网上所有的域名都享有完全的解析权!且慢,有读者要提问了,那这个根服务器不就相当于全世界唯一的Hosts文件了吗?呵呵,不要着急。

   根服务器把com结尾的域名解析权委派给其他的DNS服务器,以后所有以com结尾的域名根服务器就都不负责解析了,而由被委派的服务器负责解析。而且根服务器还把以net,org,edu,gov等结尾的域名都一一进行了委派,这些被委派的域名被称为顶级域名,每个顶级域名都有预设的用途,例如com域名用于商业公司,edu域名用于教育机构,gov域名用于政府机关等等,这种顶级域名也被称为顶级机构域名。根服务器还针对不同国家进行了域名委派,例如把所有以CN结尾的域名委派给中国互联网管理中心,以JP结尾的域名委派给日本互联网管理中心,CN,JP这些顶级域名被称为顶级地理域名。    

   每个被委派的DNS服务器同样使用委派的方式向下发展,例如和讯公司想申请使用xxx.com域名,这时和讯就要向负责.com域名的DNS服务器提出申请,只要xxx.com还没有被其他公司或个人使用,而且申请者按时足额缴纳了费用,负责.com域名的服务器就会把xxx.com域名委派到xxx公司自己的DNS服务器172.16.12.1。只要DNS服务器使用委派,域名空间就会逐步形成现有的分布式解析架构。这种架构把域名解析权下放到各公司自己的DNS服务器上,既有利于及时更新记录,同时对平衡

   流量压力也很有好处。

   那么,在这种分布式的解析结构中,DNS服务器如何进行域名解析呢?换句话说,其他的DNS服务器怎么知道由172.16.12.1负责解析xxx.com的域名呢?如果一个互联网用户想解析域名www.xxx.com,过程是怎么样的呢?用户把解析请求发送到自己使用的DNS服务器上,DNS服务器发现自己无法解析www.xxx.com这个域名,于是就把这个域名发送到根服务器请求解析,根服务器发现这个域名是以com结尾的,于是告诉查询者这个域名应该询问负责com的DNS服务器。这时查询者会转而负责com的域名服务器发出查询请求,负责com域名的DNS服务器回答说www.xxx.com是以xxx.com结尾的域名,以xxx.com结尾的域名已经被委派到DNS服务器172.16.12.1了,因此这个域名的解析应该询问172.16.12.1。于是查询者最后向172.16.12.1发出查询请求,这次应该可以如愿以偿了,172.16.12.1会告诉查询者所需要的答案,查询者拿到这个答案后,会把这个查询结果放入自己的缓存中,如果在缓存的有效期内有其他DNS客户再次请求这个域名,DNS服务器就会利用自己缓存中的结果响应用户,而不用再去根服务器那里跑一趟了。


以上介绍的域名解析过程


   2、递归查询与迭代查询


       a、递归查询

       当客户端按照它的DNS服务器列表向DNS服务器发出查询请求的时候,该DNS服务器会查询自己的区域文件、缓存,如果没有找到结果该DNS服务器就向其它DNS服务器查询。该DNS服务器最终将IP地址或失败信息发给客户端。像客户端与DNS服务器这种发出一次请求,就返回最终信息的查询模式,就叫递归查询。

       注意:

       因为递归查询比较占用系统资源,有安全方面的隐患,所以可以设置DNS服务器不接受递归查询。

       b、迭代查询

       一般DNS服务器之间属迭代查询,如:DNS1向DNS2发出请求,若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS1,以便其再向DNS3发出请求,以此类推直到找到拥有目标记录的DNS服务器,或者直到查询出错或超时为止。像这种DNS1与DNS2,3...之间的查询模式,就叫迭代查询。

   

    3、正反向解析IP和域名


       访问一个网站,只要输入一个网址就可以获取到对应的页面信息,而不是用输入IP地址访问,能够完成这一功能的过程(将FQDN转换成IP地址)这就是正向解析,有了正向解析,那么反向解析又有什么用呢,正向可以将域名转换成IP地;反向解析的作用是将IP地址转换成域名。正向解析是通过正向查找区域(即数据文件中的A记录来查找)反向解析是通过反向查找区域(即数据文件中的PTR来查找),PTR记录是邮件交换记录的一种,邮件交换记录中有A记录和PTR记录,A记录解析名字到地址,而PTR记录解析地址到名字。地址是指一个客户端的IP地址,名字是指一个客户的完全合格域名。通过对PTR记录的查询,达到反查的目的.


   4、补充

   DNS除了最主要的功能从主机名到IP地址的转换,还有提供了一些其它的服务。

      1、主机别名

      2、邮件服务器别名

      3、负载分担



二、DNS配置文件解析


    ①、/etc/host.conf当系统中同时存在DNS域名解析和/etc/hosts主机表机制时,由该/etc/host.conf确定主机名解释顺序

       cat /etc/host.conf

   

          order hosts,bind    #名称解释顺序

          multi on            #允许主机拥有多个IP地址

          nospoof on          #禁止IP地址欺骗

       order是关键字,定义先用本机hosts主机表进行名称解释,如果不能解释,再搜索bind名称服务器(DNS)。

   

   ②、/etc/hosts:一般而言Hosts文件是一个用于存储计算机网络中节点信息的文件,它可以将主机名映射到相应的IP地址,实现DNS的功能

       cat /etc/hosts

     

   

       第一列是主机的IP地址,第二列是FQDN(Fully qualified domain name,完全限定域名),第三列为别名.

   

       ③/etc/resolv.conf:DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。

       cat /etc/resolv.conf

     

        DNS列表:

          domain 域名     #声明主机的域名

          search 域名     #当要查询没有域名的主机,主机将在由search 声明的域中分别查找

          nameserver 172.16.12.1  #主DNS服务器地址

          nameserver 172.16.12.2   #辅助DNS服务器地址


   ④、(yum -y install bind   #安装bind后的各配置文件)

       DNS主配置文件/etc/named.conf

       

       

   ⑤、区域数据文件:/var/named/ 目录下      

       /var/named/ 目录    # named.conf中directory中定义的数据文件存放位置

       named.ca            # 根的数据文件

       named.localhost     # 本机正向数据文件

        named.loopback      # 本机反向数据文件

       


本文出自 “斜视天花板” 博客,请务必保留此出处http://lemidi.blog.51cto.com/8601832/1379879

linux下的DNS解析之原理篇,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。