为什么要在 DNS 中发送权威名称服务器?

为什么要在 DNS 中发送权威名称服务器?

出于好奇,我检查了 Wireshark DNS 数据包。我可以看到主机发出了 DNS 查询,然后 DNS 服务器发出了 DNS 响应。一切都如预期的那样。

但是,如果你进一步检查查询,你会看到服务器还发送了 NS(权威名称服务器)。我的问题是:为什么?

作为主持人,我只关心 IP。这就是DNS 的要点, 到将名称解析为 IP 地址

为什么作为主人,我需要 NS 信息?

答案1

传统上,名称服务器不会对查询发送简短响应,而是发送 RFC1034-1035兼容的完整响应,其中包括指向权威名称服务器的资源记录的权威部分。

原因可能是因为 DNS 具有分布式和委托特性,因此在响应中包含“真相来源”在当时似乎是个好主意。

编辑:顺便说一句:发送权威部分符合 RFC 标准,但并不是所有查询响应都必须发送。

在 BIND 中,可以使用minimal-responses yes | no;指令,其中默认值为no查询响应的权限和附加部分将始终完全填充。
其他名称服务器 CloudFlare、AWS Route 53、Infoblocks 和其他服务器可能已经默认始终发送此类最小响应。Google 的公共解析器将在可用时返回权限部分,Cloudflare。


思考这一传统的起源在于将权威部分和实际的查询响应都包含在内,而这种传统可以追溯到现已过时的(伪)代码中。RFC882第 15-16 页

If the name server is not authoritative, the code copies 
the RRs for a closer name server into the response.  
The last section of the code copies all relevant RRs into the response.

答案2

服务器不知道请求是来自终端客户端,还是来自其他名称服务器的递归请求。如果是其他名称服务器,它可以缓存授权部分并在将来直接查询这些名称服务器。

我相信这是协议中最初的理由,但它有安全隐患。响应可以包含列出虚假名称服务器的授权部分,这已用于缓存中毒攻击。因此,名称服务器通常不会缓存 NS 记录,除非它们是您正在查询的域的子域的委托记录。

相关内容