为什么 dig +trace 有时会回复权威名称服务器列表以及记录?

为什么 dig +trace 有时会回复权威名称服务器列表以及记录?

使用下面的例子

挖掘 +trace stackoverflow.com 挖掘 +trace google.com

挖掘 +trace yahoo.com 挖掘 +trace bbc.com

前两个仅显示查询域的 A 记录,而后两个显示 A 或 CNAME 以及多个 NS 记录。

有人能解释一下 DNS 服务器上的哪些配置控制此行为,导致您的所有名称服务器都响应此类挖掘查询而发送。此外,是否可以禁用此行为,以便在前两个示例中……仅发送 A 记录而不发送权威名称服务器?

我想将我的域名与 UltraDNS 同步,并将域名配置为使用其名称服务器,以避免 DNS DDoS 攻击我们的 DNS 服务器。但是对于上述行为,当人们“挖掘 + 跟踪”域名时,它会使用我们的名称服务器进行回复,因此试图隐藏它们的行为毫无意义。

谢谢 fLo

答案1

不同之处在于 yahoo.com 和 bbc.com 返回了一个AUTHORITY部分,但是 stackoverflow.com 和 google.com 没有返回。

$ dig @ns1.yahoo.com +noall +question +authority yahoo.com
;yahoo.com.                     IN      A
yahoo.com.              172800  IN      NS      ns2.yahoo.com.
yahoo.com.              172800  IN      NS      ns6.yahoo.com.
yahoo.com.              172800  IN      NS      ns5.yahoo.com.
yahoo.com.              172800  IN      NS      ns4.yahoo.com.
yahoo.com.              172800  IN      NS      ns3.yahoo.com.
yahoo.com.              172800  IN      NS      ns1.yahoo.com.
$ dig @ns1.google.com +noall +question +authority google.com
;google.com.                    IN      A

您可以使用选项将其从跟踪中隐藏+noauthority,但这也会使输出变得毫无用处,因为您也会隐藏AUTHORITY中间名称服务器中的部分。(除非您设置了,否则几乎所有内容都是委托,否则只能看到这些内容+additional

在 RFC 未严格要求的情况下,各个名称服务器实现是否希望提供AUTHORITY部分内容取决于它们。BIND 是服务器实现之一,它默认情况下显示此信息,但它也提供了minimal-responses禁用此行为的选项。我强烈建议在面向客户的递归场景中使用此选项,因为它可以减少针对欺骗源 IP 的放大攻击的开销。(遗憾的是,38号作战计划没有得到应有的广泛实施)

来自 BIND ARM:

最小反应
如果是,则在生成响应时,服务器将仅在需要时(例如授权、否定响应)将记录添加到权限和附加数据部分。这可能会提高服务器的性能。默认为否。

答案2

使用+tracedig将继续查询域的实际名称服务器。因此,您看到的响应不是来自本地 DNS 解析器,而是来自域的实际“主服务器”。

如果我们查看google.comyahoo.com,我们分别使用ns1.google.comns1.yahoo.com作为名称服务器。查询 Google 的名称服务器中的 Google.com 将显示 12 条带有 IP 的 A 记录,而查询 Yahoo 的名称服务器中的 Yahoo.com 将显示 3 条 A 记录、6 条 NS 记录和其他一些记录。

无需使用。您可以直接使用(查找名称服务器) 和(使用 查询域)+trace的组合来查询服务器。dig ns yahoo.comdig @ns1.yahoo.com yahoo.comns1.yahoo.com

此行为由相关 DNS 服务器决定。例如,如果我通过 Windows DNS 服务器查询 google.com,我将仅获得 A 记录,但如果我通过本地 BIND 实例执行相同操作,我将获得大量授权记录。这个问题,具有/不具有权限的 DNS 应答,附加部分,涉及同一主题,但他们还没有找到控制它的设置。

相关内容