使用下面的例子
挖掘 +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
使用+trace
,dig
将继续查询域的实际名称服务器。因此,您看到的响应不是来自本地 DNS 解析器,而是来自域的实际“主服务器”。
如果我们查看google.com
和yahoo.com
,我们分别使用ns1.google.com
和ns1.yahoo.com
作为名称服务器。查询 Google 的名称服务器中的 Google.com 将显示 12 条带有 IP 的 A 记录,而查询 Yahoo 的名称服务器中的 Yahoo.com 将显示 3 条 A 记录、6 条 NS 记录和其他一些记录。
无需使用。您可以直接使用(查找名称服务器) 和(使用 查询域)+trace
的组合来查询服务器。dig ns yahoo.com
dig @ns1.yahoo.com yahoo.com
ns1.yahoo.com
此行为由相关 DNS 服务器决定。例如,如果我通过 Windows DNS 服务器查询 google.com,我将仅获得 A 记录,但如果我通过本地 BIND 实例执行相同操作,我将获得大量授权记录。这个问题,具有/不具有权限的 DNS 应答,附加部分,涉及同一主题,但他们还没有找到控制它的设置。