为什么 dig 不显示权威部分以及如何让它显示保存 DNS 查询答案的权威名称服务器?

为什么 dig 不显示权威部分以及如何让它显示保存 DNS 查询答案的权威名称服务器?

我最近开始学习 DNS,但在使用 Linux 中的 dig 命令时遇到了困难。更确切地说,我想查看保存 DNS 查询答案的权威名称服务器(它们的名称或 IP 地址),但我不知道如何操作。您可能已经知道,dig 的命令输出有 5 个部分:HEADER、QUERY、ANSWER、AUTHORITY 和 ADDITIONAL。最后 3 个包括在 dig 发送的 DNS 请求回复中找到的资源记录。我感兴趣的是 AUTHORITY 部分,它通常应该显示 NS(名称服务器)类型的资源记录,这些记录提供有关从中检索初始查询答案的权威名称服务器的信息。权威服务器当然不同于可以提高效率的缓存服务器。

现在,我的问题是每次我调用 dig 时,答案都不包含任何 AUTHORITY 记录。可能是我不知道正确的选项,或者发生了我不知道的其他问题。没有得到任何权威答案的原因可能是什么?应该怎么做才能得到它?我会放一张终端的图片,但我还没有 10 点声誉,但问题仍然存在。

答案1

更确切地说,我想查看保存我的 DNS 查询答案的权威名称服务器(它们的名称或 IP 地址),但我不知道如何做。

这完全取决于您查询哪个名称服务器。如果您未使用标志指定任何名称服务器,@它将使用本地递归名称服务器为您提供最终答案。递归名称服务器可能在得出答案之前查询了许多不同的权威名称服务器,从而计算出此答案,因此在这种情况下不存在“一个”权威名称服务器。

如果您可以进行挖掘,+trace它将像递归名称服务器一样运行,并将向您显示解析的每个步骤,每个权威名称服务器都被查询及其答案。

我感兴趣的是 AUTHORITY 部分,它通常应该显示 NS 类型(名称服务器)的资源记录,这些记录提供有关从中检索初始查询答案的权威名称服务器的信息。

实际情况比这更复杂。这取决于你查询哪个名称服务器,以及你执行什么查询。

让我们使用它serverfault.com作为示例(记住默认dig执行A记录类型查询),并比较递归名称服务器、名称权威和父级权威。

询问递归名称服务器

$ dig serverfault.com  @9.9.9.9 +noall +auth +nottlunits
$

正如预期的那样,AUTHORITY 部分中没有数据。递归名称服务器对数据没有权威性,因此它只会为您提供您请求的答案。

询问区域权威名称服务器

$ dig serverfault.com NS +short
ns-cloud-c1.googledomains.com.
ns-cloud-c2.googledomains.com.
ns-1135.awsdns-13.org.
ns-860.awsdns-43.net.
$ dig serverfault.com @ns-cloud-c1.googledomains.com. +noall +auth +nottlunits
$

也没有 AUTHORITY,因为您根本不需要它,这是一种优化。请注意,如果您查询 AWSDNS 名称服务器,您将获得一个 AUTHORITY 部分,但它没有用。

询问父级权威域名服务器

$ dig com. NS +short
b.gtld-servers.net.
k.gtld-servers.net.
d.gtld-servers.net.
i.gtld-servers.net.
j.gtld-servers.net.
f.gtld-servers.net.
h.gtld-servers.net.
c.gtld-servers.net.
e.gtld-servers.net.
g.gtld-servers.net.
m.gtld-servers.net.
a.gtld-servers.net.
l.gtld-servers.net.
$ dig serverfault.com @g.gtld-servers.net. +noall +auth +nottlunits
serverfault.com.    172800 IN NS ns-860.awsdns-43.net.
serverfault.com.    172800 IN NS ns-1135.awsdns-13.org.
serverfault.com.    172800 IN NS ns-cloud-c1.googledomains.com.
serverfault.com.    172800 IN NS ns-cloud-c2.googledomains.com.

在这里,您总是会(无论您查询上述哪个名称服务器)获得一个 AUTHORITY 部分(实际上没有 ANSWER 部分),因为这些名称服务器没有您查询的答案,因为它们对该名称没有权威性,但它们知道存在委托,因此它们会在 AUTHORITY 中返回您应该查询的名称服务器列表。

这都是正常的 DNS 委派工作流程。

附言:

我想放一张终端的图片,但我还没有 10 点声誉

不,无论如何都不要放图片。终端是文本行。在任何问题中,请复制并粘贴相关的文本。绝对不要附上屏幕截图,这对各方面都不好。

答案2

我刚刚意识到,“dig”隐式使用在 /etc/resolv.conf 中找到的名称服务器。默认情况下,“dig”会将任何 DNS 查询发送到这些服务器。因此,如果我输入例如“dig google.com”,则不会在输出中获得任何权威记录,但如果我通过其 IP 地址指定要查询的某个名称服务器,例如“dig @byte.byte.byte.byte google.com”,则可能会得到包含非零权威部分的答案。因此,据我目前了解,“dig”命令的输出可能会有很大差异,具体取决于您查询的名称服务器,如果该服务器的数据库定义为包含权威记录作为查询的答案,那么您会在回复中获得权威记录。希望我没有偏离事实。如果您发现任何错误或可能添加的信息,请添加评论。

相关内容