挖掘查找不返回 namservers

Ric*_*ckD 5 domain-name-system

在将一些名称服务器添加到我的域以进行子委托后,我看到如果我运行跟踪和/或直接查询名称服务器,我会返回正确的名称服务器,但是如果我只是通过 dig 查询名称服务器记录,我不会得到响应,

递归查找 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.
Run Code Online (Sandbox Code Playgroud)

痕迹

    ; <<>> 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
Run Code Online (Sandbox Code Playgroud)

标准查询

; <<>> 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
Run Code Online (Sandbox Code Playgroud)

额外的

[root@monty webtools]# dig ns1.macmonster.co.uk +short
1.1.1.1
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?

Fal*_*mot 8

递归 DNS 解析器要求它递归获取的信息具有权威性,才能将其作为对查询的响应返回;它不做推论。

使用 SOA 和 NS 记录在 DNS 中建立权限。前者用于在权威服务器之间建立权限,从区域内提供服务。例如,当某个区域的权威 DNS 服务器进行区域传输时,SOA 记录指示区域数据的哪个副本更新。后者用于在查询时建立权限。

当一个子域的 NS 记录在一个域中,并且拥有它的服务器不是被查询名称的权威服务器时,这个 NS 记录是一个委托记录。因此,递归解析器将查询以 root 开头的委托记录.。在您的情况下,它会从以下响应中向上链dns2.stabletransit.com.

subdomain.codecrab.org. 300     IN      NS      ns1.macmonster.co.uk.
Run Code Online (Sandbox Code Playgroud)

这是一个创纪录的代表团,因为这个数据并没有存在:

subdomain.codecrab.org. 300     IN      NS      dns2.stabletransit.com
Run Code Online (Sandbox Code Playgroud)

实际存在的是这样的:

codecrab.org.           86400   IN      NS      dns2.stabletransit.com.
Run Code Online (Sandbox Code Playgroud)

因此,服务器 atdns2.stabletransit.com.可以为 提供权威答复codecrab.org.,因为先前的解析器将该区域委托给它。但它对 不具有权威性subdomain.codecrab.org.,因此无法回答查询;它只能委托。

DNS 解析器当然可以配置为对管理员想要的任何名称具有权威性。但是,如果他们被配置为对他们试图委派的区域具有权威性,他们将改为提供回复(没有数据),所以这显然没有完成。

递归的工作方式很简单,即使最初不是很直观。递归解析器将完整查询发送到名称服务器.(它在其根区域的提示文件中)。该.域名服务器发送一个回复,但回复了我们关心为此,两个组成部分:授权部分,并回答部分(也有附加部分和问题部分)。回复将包含以下记录:

org.                    172800  IN      NS      b0.org.afilias-nst.org.
Run Code Online (Sandbox Code Playgroud)

这告诉递归解析器在那里重复它的查询,因为该区域是委托的。它还在附加部分中包含“胶水”,在授权部分中提供名称服务器的 IP 地址,因为它知道您将无法找到名称服务器来查询它。这是管理 DNS 的行政决定;如果不存在粘合记录,递归解析器将在继续之前查询权威服务器之一的AAAAA记录。

因此,您可能会注意到,当您将查询发送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
Run Code Online (Sandbox Code Playgroud)

请注意您如何既没有获得附加部分也没有获得答案部分(还有NOERROR返回状态)。这是因为记录是对ns2.macmonster.co.uk.for的委托subdomain.codecrab.org.,因为它dns2.stabletransit.com.知道它不是权威的。没有额外的部分,因为名称服务器已经结束,co.uk.并且在管理上没有必要包含胶水,因为它们在那里是可解析的(当然,胶水可以被包含在内)。因此,要回答您的查询,因为答案必须来自答案部分(意味着它被回复服务器识别为答案,来自权威),您的递归解析器将尝试查找ns1.macmonster.co.uk.,并在 找到它1.1.1.1,将发送它在那边的查询。

当然(因为这个地址在 debogon 前缀中)那里(还)没有名称服务器。至于ns2.macmonster.co.uk.at 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.
Run Code Online (Sandbox Code Playgroud)

一半的时间(与选择该名称服务器一样频繁),该查询将now.go.away.or.i.will.taunt.you.a.second.time.作为您区域的名称服务器返回,即使常识表明它应该是ns2.macmonster.co.uk.(即使是后者权威地给出了答案)。