我想找出权威的名称服务器瑞典银行域。我查询了一些缓存名称服务器瑞典银行有些服务器响应权威域名服务器,而其他服务器则没有。例如 Google 公共 DNS 服务器:
$ dig @8.8.8.8 swedbank.se +noall +authority
; <<>> DiG 9.6.1-P1 <<>> @8.8.8.8 swedbank.se +noall +authority
; (1 server found)
;; global options: +cmd
$ dig @isp-nameserver swedbank.se +noall +authority
; <<>> DiG 9.6.1-P1 <<>> @isp-nameserver swedbank.se +noall +authority
; (1 server found)
;; global options: +cmd
swedbank.se. 2719 IN NS ns2.foreningssparbanken.se.
swedbank.se. 2719 IN NS ns1.foreningssparbanken.se.
swedbank.se. 2719 IN NS ns3.foreningssparbanken.se.
$
这仅仅是缓存名称服务器配置的问题吗?还是有其他原因导致这种行为?
答案1
最准确的答案是“当 RFC 要求时,以及其他一些情况”。
唯一可以保证看到 AUTHORITY 部分的情况是当远程服务器在 ANSWER 部分回复零记录时(即使这样,也只有当 rcode 为 NOERROR 或 NXDOMAIN 时才会出现)。我知道的最常见的情况是:
- 向权威服务器查询已委托给另一台服务器的记录
- 接收 NXDOMAIN 响应
RD
当记录不在缓存中时,查询未设置(需要递归)标志的递归服务器。使用 dig,可以通过+norecurse
选项实现此操作。
除了 RFC 要求的情况外,您在该字段中获得的信息是特定于实现的且不可靠的。一些名称服务器软件提供了不提供此数据的选项,除非 RFC 要求,这对于在放大攻击场景中减少每个回复数据包的大小很有用。BIND9 的minimal-responses
选项就是一个例子。
最小反应
如果是,则在生成响应时,服务器将仅在需要时(例如授权、否定响应)将记录添加到权限和附加数据部分。这可能会提高服务器的性能。默认为否。
简而言之,除非涉及引用或 NXDOMAIN,否则您应该仅将 AUTHORITY 部分中的数据视为便利因素。在编写分析 DNS 回复的代码时,如果 rcode 为 NOERROR 且 ANSWER 部分中没有记录,我只会查看 AUTHORITY 部分。