14.3.2 根服务器文件named.root
在主配置文件/etc/named.conf中,定义了一个根域,区文件是/var/named目录下的named.root文件。它是一个非常重要的文件,包含了Internet根服务器的名字和IP地址。当Bind接到客户端的查询请求时,如果本地不能解释,也不能在Cache中找到相应的数据,就会通过根服务器进行逐级查询。
例如,当服务器收到DNS客户机的一个查询请求,要求查询一个不在本域的www.example.com域名时,如果Cache里没有相应的数据,DNS服务器就会向named.root文件中列出的Internet根服务器请求,然后根服务器将查询交给负责域.com的授权名称服务器,域.com授权名称服务器再将请求交给负责域example.com的授权名称服务器进行查询,最后再把结果返回给客户机。
由于Internet根服务器的地址经常会发生变化,因此named.root也应该要随之更新。最新的根服务器列表可以从ftp://ftp.rs.internic.net/domain/下载,文件名也是named.root,它包含了国际互联网络信息中心(InterNIC)提供的最新数据。另外,也可以用Bind提供的命令dig列出最新的根服务器,命令如下:
# dig
; <<>> DiG 9.3.3rc2 <<>>
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46053
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 15
;; QUESTION SECTION:
;. IN NS
;; ANSWER SECTION:
. 459744 IN NS F.ROOT-SERVERS.NET.
. 459744 IN NS M.ROOT-SERVERS.NET.
. 459744 IN NS I.ROOT-SERVERS.NET.
. 459744 IN NS E.ROOT-SERVERS.NET.
…
. 459744 IN NS D.ROOT-SERVERS.NET.
;; ADDITIONAL SECTION:
M.ROOT-SERVERS.NET. 546144 IN A 202.12.27.33
J.ROOT-SERVERS.NET. 546144 IN A 192.58.128.30
C.ROOT-SERVERS.NET. 546144 IN A 192.33.4.12
A.ROOT-SERVERS.NET. 546144 IN A 198.41.0.4
…
I.ROOT-SERVERS.NET. 546144 IN A 192.36.148.17
;; Query time: 2 msec
;; SERVER: 10.10.1.2#53(10.10.1.2)
;; WHEN: Tue Nov 18 16:48:23 2008
;; MSG SIZE rcvd: 492
以上列出的就是Internet根服务器的IP地址,如果使用以下命令,可以把这些内容存到named.root文件中,这个文件就可以做为主配置文件中指定的根域的区文件。
dig > /etc/named/named.root