我应该如何理解`dig`的输出?

Tim*_*Tim 5 dig

我该如何理解 的输出dig

DNS 服务器存储资源记录的数据库。

是否dig返回某个 DNS 服务器的数据库中的资源记录?如果是,dig返回的是哪个 DNS 服务器的数据库资源记录?

例如,dig似乎没有返回 DNS 服务器数据库中的资源记录a.edu-servers.net

$ dig @a.edu-servers.net robot.cs.washington.edu

; <<>> DiG 9.11.3-1ubuntu1.3-Ubuntu <<>> @a.edu-servers.net robot.cs.washington.edu
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2401
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 7
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;robot.cs.washington.edu.   IN  A

;; AUTHORITY SECTION:
washington.edu.     172800  IN  NS  marge.cac.washington.edu.
washington.edu.     172800  IN  NS  hanna.cac.washington.edu.
washington.edu.     172800  IN  NS  holly.s.uw.edu.

;; ADDITIONAL SECTION:
marge.cac.washington.edu. 172800 IN A   140.142.5.13
marge.cac.washington.edu. 172800 IN AAAA    2607:4000:200:43::13
hanna.cac.washington.edu. 172800 IN A   140.142.5.5
hanna.cac.washington.edu. 172800 IN AAAA    2607:4000:200:42::5
holly.s.uw.edu.     172800  IN  A   173.250.227.69
holly.s.uw.edu.     172800  IN  AAAA    2607:4000:301:1::69

;; Query time: 46 msec
;; SERVER: 192.5.6.30#53(192.5.6.30)
;; WHEN: Mon Feb 11 16:27:09 EST 2019
;; MSG SIZE  rcvd: 253
Run Code Online (Sandbox Code Playgroud)

Ser*_*nyy 1

在此命令中,您使用@a.edu-servers.net服务器来解析robot.cs.washington.edu域的子域washington.edu,但这并不意味着有解析相关查询的权限a.edu-servers.net。在递归名称服务器的世界中,它的工作方式是,如果您的系统没有缓存记录并且没有,则首先查询根服务器以找出谁负责回答有关域的问题,然后响应谁负责回答谁域的答案。a.edu-servers.net..eduwashington.edu

这导致了答案

washington.edu.     172800  IN  NS  marge.cac.washington.edu.
washington.edu.     172800  IN  NS  hanna.cac.washington.edu.
washington.edu.     172800  IN  NS  holly.s.uw.edu.
Run Code Online (Sandbox Code Playgroud)

其中有 3 个域名服务器负责回答有关washington.edu.域名的问题。这就是它变得重要的地方 - 它依赖于名称服务器来提供资源记录,例如 SOA、TXT 等。引用相关答案

在 RFC 没有严格要求的情况下,是否希望提供 AUTHORITY 部分取决于各个名称服务器的实现。BIND 是默认显示此信息的服务器实现之一,但它还提供了用于禁用该行为的最小响应选项。

现在,根据我的最低经验,我通过 VPS 提供商提供的域名服务器获得了比 OpenDNS 等公共域名服务器更多的信息,所以我的猜测是,这还取决于查询的来源(住宅 IP 地址或其他),但到目前为止我还没有找到对这个想法的证实。

  • AFAIK 推荐的做法是将 DNS 服务器角色拆分为一些服务器作为**权威**服务器(即回答任何人的查询,但前提是它们与服务器具有权威性的域有关),而其他服务器则作为**解析**服务器(=代表其客户端查询其他名称服务器,在此过程中建立大型 DNS 缓存)。您通常不希望随机的外部人员在您的解析器 DNS 服务器上到处进行查询,因为这可能会导致 DNS 缓存污染攻击和其他恶意行为。 (2认同)