添加一些名称服务器到我的域的subdelegation我看到,如果我直接运行一个跟踪和/或查询名称服务器,我得到正确的名称服务器回来,但是,如果我查询名称服务器logging只是通过挖我没有得到一个回应,
当它从dns2.stabletransit.com检索NSlogging(nsX.macmonster.co.uk)时,不应该查看DNS站点,并将其传递回客户端?
新增的名称服务器logging是:
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
有任何想法吗 ?
recursionDNSparsing器要求recursion获取的信息是权威的,以便将其作为对查询的响应返回; 它并没有作出推论。
pipe理局是使用SOA和NSlogging在DNS中build立的。 前者用于在权威服务器之间build立权限,并在区域内提供服务。 例如,当某个区域的权威DNS服务器正在进行区域传输时,SOAlogging指示区域数据的哪个副本更新。 后者用于查询时build立权限。
当一个子域的NSlogging在一个域中,并且具有它的服务器不是被查询名称的权威服务器时,这个NSlogging就是一个委托logging。 所以,recursionparsing器将查询以root开头的委托logging. 。 在你的情况下,它从dns2.stabletransit.com.向这个响应上链dns2.stabletransit.com. :
subdomain.codecrab.org. 300 IN NS ns1.macmonster.co.uk.
这是一个委托logging,因为这个数据不存在:
subdomain.codecrab.org. 300 IN NS dns2.stabletransit.com
实际上存在的是这样的:
codecrab.org. 86400 IN NS dns2.stabletransit.com.
那么,在dns2.stabletransit.com.服务器dns2.stabletransit.com. 可以给codecrab.org.权威的答复codecrab.org. ,因为之前的parsing器将该区域委托给它。 但是它对于subdomain.codecrab.org.并不是权威的subdomain.codecrab.org. ,所以不能回答查询; 它只能委托。
DNSparsing器当然可以configuration为pipe理员想要的任何名称的权威。 但是,如果他们被configuration为对他们正在尝试委派的区域具有权威性,他们将会给予答复(不具有数据),所以显然这是不能做到的。
recursion的方式很简单,如果不是最初的直觉。 recursionparsing器将完整查询发送给名称服务器. (它在它的根区域的提示文件中)。 的. 域名服务器发送一个回复,但是回复有两个我们关心的部分:权限部分和回答部分(也有附加部分和问题部分)。 答复将包含如下logging:
org. 172800 IN NS b0.org.afilias-nst.org.
这告诉recursionparsing器在那里重复查询,因为该区域被委托。 它还在授权部分提供了名称服务器的IP地址的附加部分中包含“glue”,因为它知道您将无法find名称服务器来查询它。 这是pipe理DNS的pipe理决定; 如果胶水logging不存在,recursionparsing器将在继续之前查询其中一个授权服务器的AAAA或Alogging。
所以,你可能会注意到当你发送你的查询IN NS subdomain.codecrab.org. 到最后一个代表团, dns2.stabletransit.com. ,回复如下所示:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35461 ;; flags: qr rd; QUERY: 1, ANSWER: 0, 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 )。 这是因为该logging是ns2.macmonster.co.uk.的代表团ns2.macmonster.co.uk. 为subdomain.codecrab.org. ,为此dns2.stabletransit.com. 知道这不是权威。 没有额外的部分,因为名称服务器已经在co.uk.中结束了。 而且从pipe理angular度来说,没有必要包含胶水,因为它们在那里是可以解决的(尽pipe肯定可以包括胶水)。 因此,为了回答您的查询,因为答案必须来自答案部分 (意思是答复服务器将其标识为来自权威机构的答案),您的recursionparsing程序将尝试查找ns1.macmonster.co.uk. ,并在1.1.1.1find它,将在那里发送它的查询。
当然(因为这个地址是在一个debogon前缀),那里没有名称服务器(还)。 至于ns2.macmonster.co.uk. 在2.2.2.2 ,如果Wanadoo France的某个人决定要有一个名字服务器,并在subdomain.codecrab.org.有权威的loggingsubdomain.codecrab.org. 特别是:
subdomain.codecrab.org 99999999 IN NS now.go.away.or.i.will.taunt.you.a.second.time.
一半的时间(经常select名称服务器),查询将返回now.go.away.or.i.will.taunt.you.a.second.time. 作为你的区域名称服务器,即使常识会表明它应该是ns2.macmonster.co.uk. (即使是后来的名称服务器,权威性地给出了这个答案)。
Zoredache在评论中回答了这个问题。 挖掘轨迹显示答案,在域级别的名称服务器不解决:
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 dig: couldn't get address for 'ns1.macmonster.co.uk': not found
…所以,这两个挖掘查询失败,但+跟踪输出显示你失败的地方。 当您运行dig + trace时,您将遵循DNS服务器从“根”名称服务器开始parsing查询的path。 你的第二个查询请求你的DNS服务器(83.138.151.80),做了同样的事情(有效),但是当它不能解决ns1 / ns2.macmonster.co.uk,所以它失败了,没有给出答案。 为了得到答案,这些名称服务器将需要parsing为该子域的DNS运行的IP地址,并且这些服务器的NS查询的结果是将返回的答案。
〜汤米
问题:您的代表团logging正确,但所用的名称服务器(ns1.macmonster.co.uk和ns2.macmonster.co.uk)没有正确的IP地址。 在我的情况下,ns1.macmonster.co.uk具有IP 1.1.1.1和n2.macmonster.co.uk具有IP 2.2.2.2。 这些IP地址是真实有效的,但我不相信这些IP地址是指向DNS服务器。
如何解决:我假设你出于某种原因使用了这些名称服务器。 明确与macmonster.co.uk为什么这些名称服务器不能从互联网连接(也许他们只是为本地或内联网的目的)或使用不同的名称服务器为您的代表团。
为什么这不起作用:嗯,如果我的记忆为我服务,那么有一个Asterix和Obelix试图获得通过/徽章A38的故事,他们必须从一个房间到另一个房间才能得到它。 但是DNS比这更方便用户使用。 如果你要求host1.subdomain.codecrab.org。 您的DNS会尝试将其parsing为IP地址。 它要求组织。 对于codecrab.org。,codecrab.org。 为subdomain.codecrab.org。 和subdomain.codecrab.org。 为host1.subdomain.codecrab.org。 如果这个链不起作用 – DNSparsing失败。