是否可以通过 DNS 响应发送一个或多个附加记录?
例如,对 www.example.com 的 A 记录的请求是否会导致响应包含 www.example.com 的 A 记录以及 www2.example.com 的 A 记录?
这符合标准吗?这有用吗?即典型的客户端是否会缓存附加记录,以便在不久的将来需要它时,不会导致再次往返 DNS 服务器?
答案1
较长的回答是肯定的,从技术上来说这是可行的,但你不应该这样做。
DNS 服务器将额外的记录放在响应中所谓的“附加”部分(这并不奇怪)。
但严格来说,根据RFC 1034,附加部分“包含可能有助于使用其他部分中的 RR 的 RR”。例如,如果您请求某个域的 NS 记录,则属于这些名称服务器的 A 记录可能会随之而来。
但是如果您尝试提供不相关的数据,您的 DNS 客户端和缓存通常会将其丢弃。 RFC 2181给出了一个优先级表,显示了“值得信赖的”DNS客户端应如何处理不同类型的数据。具体来说,它还说:
从这些组中可信度最低的分组接收和缓存的未经验证的 RR(即来自附加数据部分的数据,以及来自非权威答案的权威部分的数据)不应以这样的方式缓存,即它们永远无法作为收到的查询的答案返回。在适当的情况下,它们可以作为附加信息返回。忽略这一点将允许无缘无故地增加相对不可信的数据的可信度。
即,您在附加部分中输入的数据永远无法转化为真正的答案。
答案2
最简洁的答案是不。
如果您担心 DNS 的响应时间,那么您应该部署一个靠近客户端的缓存 DNS 服务器,或者改进基础设施。我想了解更多信息。您是管理 DNS 还是客户端,或者两者兼而有之?通常 DNS 延迟不是问题,所以我想知道为什么对您来说这是个问题?
也许
您可以设置更长的 TTL,这意味着记录刷新次数更少。如果您控制您担心的客户端,您可以运行一个脚本来解析并缓存 DNS,或者您可以将 hosts 文件部署到所有客户端(我不建议这样做)。