如果递归查看DNS停止点,它会从dns2.stabletransit.com检索NS记录(nsX.macmonster.co.uk)并将其传回客户端?
subdomain.codecrab.org. 300 IN NS ns1.macmonster.co.uk. subdomain.codecrab.org. 300 IN NS ns2.macmonster.co.uk.
跟踪
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> +trace subdomain.codecrab.org ns ;; global options: printcmd . 94441 IN NS f.root-servers.net. . 94441 IN NS g.root-servers.net. . 94441 IN NS h.root-servers.net. . 94441 IN NS i.root-servers.net. . 94441 IN NS j.root-servers.net. . 94441 IN NS k.root-servers.net. . 94441 IN NS l.root-servers.net. . 94441 IN NS m.root-servers.net. . 94441 IN NS a.root-servers.net. . 94441 IN NS b.root-servers.net. . 94441 IN NS c.root-servers.net. . 94441 IN NS d.root-servers.net. . 94441 IN NS e.root-servers.net. ;; Received 228 bytes from 83.138.151.80#53(83.138.151.80) in 0 ms org. 172800 IN NS a0.org.afilias-nst.info. org. 172800 IN NS b2.org.afilias-nst.org. org. 172800 IN NS c0.org.afilias-nst.info. org. 172800 IN NS a2.org.afilias-nst.info. org. 172800 IN NS d0.org.afilias-nst.org. org. 172800 IN NS b0.org.afilias-nst.org. ;; Received 442 bytes from 192.5.5.241#53(f.root-servers.net) in 96 ms codecrab.org. 86400 IN NS dns2.stabletransit.com. codecrab.org. 86400 IN NS dns1.stabletransit.com. ;; Received 95 bytes from 199.19.56.1#53(a0.org.afilias-nst.info) in 108 ms subdomain.codecrab.org. 300 IN NS ns1.macmonster.co.uk. subdomain.codecrab.org. 300 IN NS ns2.macmonster.co.uk. ;; Received 92 bytes from 65.61.188.4#53(dns2.stabletransit.com) in 0 ms ;; connection timed out; no servers could be reached
标准查询
; <<>> DiG 9.3.6-P1-RedHat-9.3.6-20.P1.el5_8.6 <<>> subdomain.codecrab.org NS ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY,status: SERVFAIL,id: 50516 ;; flags: qr rd ra; QUERY: 1,ANSWER: 0,AUTHORITY: 0,ADDITIONAL: 0 ;; QUESTION SECTION: ;subdomain.codecrab.org. IN NS ;; Query time: 1 msec ;; SERVER: 83.138.151.80#53(83.138.151.80) ;; WHEN: Thu Sep 26 16:32:34 2013 ;; MSG SIZE rcvd: 40
额外
[root@monty webtools]# dig ns1.macmonster.co.uk +short 1.1.1.1
有任何想法吗 ?
解决方法
使用SOA和NS记录在DNS中建立权限.前者用于在权威服务器之间建立权限,并在区域内提供服务.例如,当某个区域的权威DNS服务器正在进行区域传输时,SOA记录指示区域数据的哪个副本更新.后者用于在查询时建立权限.
当子域的NS记录在域中,并且具有它的服务器不是要查询的名称的权威服务器时,此NS记录是委派记录.因此,递归解析器将查询以root开头的委托记录.在您的情况下,它从dns2.stabletransit.com向上响应此响应:
subdomain.codecrab.org. 300 IN NS ns1.macmonster.co.uk.
这是一个委托记录,因为这个数据不存在:
subdomain.codecrab.org. 300 IN NS dns2.stabletransit.com
实际存在的是:
codecrab.org. 86400 IN NS dns2.stabletransit.com.
所以,服务器在dns2.stabletransit.com.可以为codecrab.org.提供权威回复,因为之前的解析器将该区域委托给它.但它对subdomain.codecrab.org不具有权威性,因此无法回答查询;它只能委托.
DNS解析器当然可以配置为对管理员想要的任何名称具有权威性.但是,如果它们被配置为对他们试图委派的区域具有权威性,那么它们将提供回复(没有数据),因此显然没有这样做.
递归的工作方式很简单,如果不是最初直观的话.递归解析器将完整查询发送给名称服务器. (它在根区域的提示文件中有).这个. nameserver发送回复,但回复有两个我们为此目的关心的组件:权限部分和答案部分(还有附加部分和问题部分).回复将包含以下记录:
org. 172800 IN NS b0.org.afilias-nst.org.
这告诉递归解析器在那里重复其查询,因为区域是委派的.它还在附加部分中包含“胶水”,在权限部分提供名称服务器的IP地址,因为它知道您将无法找到名称服务器来查询它.这是管理DNS的管理决策;如果胶水记录不存在,递归解析器将在继续之前查询其中一个权威服务器的AAAA或A记录.
因此,当您发送查询IN NS subdomain.codecrab.org时,您可能会注意到.到最后一个代表团,dns2.stabletransit.com.,回复如下:
;; ->>HEADER<<- opcode: QUERY,status: NOERROR,id: 35461 ;; flags: qr rd; QUERY: 1,AUTHORITY: 2,ADDITIONAL: 1 ;; WARNING: recursion requested but not available ;; OPT PSEUDOSECTION: ; EDNS: version: 0,flags:; udp: 4096 ;; QUESTION SECTION: ;subdomain.codecrab.org. IN NS ;; AUTHORITY SECTION: subdomain.codecrab.org. 300 IN NS ns2.macmonster.co.uk. subdomain.codecrab.org. 300 IN NS ns1.macmonster.co.uk. ;; Query time: 104 msec ;; SERVER: 65.61.188.4#53(65.61.188.4) ;; WHEN: Sat Sep 28 14:50:45 MDT 2013
注意你既不会得到一个额外的部分也不会得到一个答案部分(而且还有NOERROR的返回状态).这是因为该记录是ns2.macmonster.co.uk的一个代表团.对于subdomain.codecrab.org.,为dns2.stabletransit.com.知道它不具有权威性.没有额外的部分,因为名称服务器在co.uk中结束.在行政上,没有必要包括胶水,因为它们可以在那里解析(当然,胶水本来可以包括在内).因此,要回答您的问题,因为答案必须来自答案部分(意味着它由答复服务器识别为来自权威机构的答案),您的递归解析器将尝试查找ns1.macmonster.co.uk.,并在1.1.1.1找到它,将在那里发送它的查询.
当然(因为这个地址是debogon前缀),那里还没有名称服务器.至于ns2.macmonster.co.uk.在2.2.2.2,如果Wanadoo France的某个人决定要为subdomain.codecrab.org提供一个带有权威记录的域名服务器.特别是:
subdomain.codecrab.org 99999999 IN NS now.go.away.or.i.will.taunt.you.a.second.time.
一半的时间(通常选择该名称服务器),查询将返回now.go.away.or.i.will.taunt.you.a.second.time.作为你的区域的名称服务器,即使常识表明它应该是ns2.macmonster.co.uk. (即使是后者的名称服务器权威地给出了答案).