一、测试环境:

    ns1为新搭建的DNS服务器作本地DNS客户机,没有任何域名信息记录,它的LDNS(Local DNS,本地DNS服务器)IP地址为192.168.2.2。现假定LDNS没有主机www.baidu.com的缓存记录,要求ns1解析得到www.baidu.com的IP地址,并且将解析过程显示出来。


二、实验数据:

[root@ns1 ~]# dig +trace -t A www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 <<>> +trace -t A www.baidu.com
;; global options: +cmd
.                       3600    IN      NS      m.root-servers.net.
.                       3600    IN      NS      l.root-servers.net.
.                       3600    IN      NS      k.root-servers.net.
.                       3600    IN      NS      j.root-servers.net.
.                       3600    IN      NS      i.root-servers.net.
.                       3600    IN      NS      h.root-servers.net.
.                       3600    IN      NS      g.root-servers.net.
.                       3600    IN      NS      f.root-servers.net.
.                       3600    IN      NS      e.root-servers.net.
.                       3600    IN      NS      d.root-servers.net.
.                       3600    IN      NS      c.root-servers.net.
.                       3600    IN      NS      b.root-servers.net.
.                       3600    IN      NS      a.root-servers.net.
;; Received 449 bytes from 192.168.2.2#53(192.168.2.2) in 3545 ms

com.                    172800  IN      NS      m.gtld-servers.net.
com.                    172800  IN      NS      h.gtld-servers.net.
com.                    172800  IN      NS      g.gtld-servers.net.
com.                    172800  IN      NS      c.gtld-servers.net.
com.                    172800  IN      NS      j.gtld-servers.net.
com.                    172800  IN      NS      i.gtld-servers.net.
com.                    172800  IN      NS      b.gtld-servers.net.
com.                    172800  IN      NS      a.gtld-servers.net.
com.                    172800  IN      NS      k.gtld-servers.net.
com.                    172800  IN      NS      d.gtld-servers.net.
com.                    172800  IN      NS      f.gtld-servers.net.
com.                    172800  IN      NS      e.gtld-servers.net.
com.                    172800  IN      NS      l.gtld-servers.net.
;; Received 491 bytes from 199.7.91.13#53(199.7.91.13) in 4095 ms

baidu.com.              172800  IN      NS      dns.baidu.com.
baidu.com.              172800  IN      NS      ns2.baidu.com.
baidu.com.              172800  IN      NS      ns3.baidu.com.
baidu.com.              172800  IN      NS      ns4.baidu.com.
baidu.com.              172800  IN      NS      ns7.baidu.com.
;; Received 201 bytes from 192.33.14.30#53(192.33.14.30) in 195 ms

www.baidu.com.          1200    IN      CNAME   www.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns1.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns3.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns5.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns4.a.shifen.com.
a.shifen.com.           1200    IN      NS      ns2.a.shifen.com.
;; Received 228 bytes from 119.75.219.82#53(119.75.219.82) in 28 ms

[root@ns1 ~]# nslookup www.baidu.com
Server:         192.168.2.2
Address:        192.168.2.2#53

Non-authoritative answer:
www.baidu.com   canonical name = www.a.shifen.com.
Name:   www.a.shifen.com
Address: 115.239.210.27


三、结果分析:

    ns1准备访问www.baidu.com,并向LDNS提交一个递归查询。收到地址解析查询的域名服务器将会采用迭代查询的方式,依次查询每个相关的域名服务器,直至获得一个满意的答案,最后返回ns1。整个地址解析的查询过程如下:

1)当因访问www.baidu.com而生成一个IP地址查询请求时,ns1将根据DNS配置文件(/etc/resolv.conf)的定义,向LDNS域名服务器提交一个递归的地址解析查询请求。

[root@ns1 ~]# cat /etc/resolv.conf 

nameserver 192.168.2.2
nameserver 192.168.1.1

2)LDNS域名服务器(IP: 192.168.2.2/ Hostname: DC01,以下简称DC01)收到递归查询后,发现自己的域名地址数据库中没有匹配www.baidu.com的检索结果。于是,DC01向负责根域地址解析的域名服务器发送一个迭代查询。

3)负责根域地址解析的域名服务器(IP: 199.7.91.13/ Hostname: d.root-servers.net.)收到迭代查询请求之后,发现自己的域名地址数据库中也没有匹配www.baidu.com的检索结果。于是,d.root-servers.net.向查询服务器DC01返回一个负责com域地址解析的DNS域名服务器的IP地址:192.33.14.30(Hostname:b.gtld-servers.net.)。

4)在收到DNS域名服务器的IP地址之后,承担递归查询的服务器DC01接着向负责com域地址解析的域名服务器发送一个迭代查询请求。

5)负责com域地址解析的域名服务器:b.gtld-servers.net.收到迭代查询请求之后,发现自己的域名地址数据库中也没有匹配www.baidu.com的检索结果。于是,服务器b.gtld-servers.net.向查询服务器DC01返回一个负责baidu.com域地址解析的域名服务器的IP地址:119.75.219.82(Hostname:ns7.baidu.com.)。

6)在收到另一个DNS域名服务器的IP地址之后,承担递归查询的服务器DC01接着向负责baidu.com域地址解析的域名服务器发送一个迭代查询请求。

7)负责baidu.com域地址解析的域名服务器:ns7.baidu.com.收到迭代查询请求之后,发现自己的域名地址数据库中确实存在匹配www.baidu.com的检索结果。于是,服务器:ns7.baidu.com.向查询服务器DC01返回一个www.baidu.com的IP地址:115.239.210.27(Hostname: www.a.shifen.com./ CName/Alias: www.baidu.com )。

8)在收到www.baidu.com的IP地址之后,承担递归查询的服务器DC01向ns1返回最终的查询结果。


附图:DNS域名地址解析的过程

wKiom1O-1cbginGlAAChrk_grGs391.png