缓存 DNS 返回 NS 记录的 SERVFAIL,但是 dig +trace 不同意?

缓存 DNS 返回 NS 记录的 SERVFAIL,但是 dig +trace 不同意?

这个问题类似,但没有详细说明为什么NS无法获取记录这个令人困惑的情况。

我们的一个缓存 DNS 环境 (RHEL 5.8、BIND 9.3.6-20.P1.el5_8.4) 已停止为区域返回任何有用的数据。通常,这种问题最终会成为过时NS或粘连的记录,但在这个特定情况下,我似乎甚至无法让缓存报告NS该区域的记录。

  • dig @mycache somedomain NS返回SERVFAIL。根本没有缓存名称服务器记录。
  • dig +trace显示一条健康的委派路径,最终名称服务器返回响应。手动dig对最终名称服务器运行查询将返回有效NS记录,相应A记录存在且与胶水一致,等等。

NS怎么回事?为什么我从 DNS 缓存中获取不到任何记录,甚至连一条坏记录都没有?

答案1

如果记录没有权威答案NS,那么除了无法确定权威之外,就没有什么可缓存的了。这就是已缓存的内容,DNS 客户端无法获取有关不合格名称服务器的服务器内存信息。(或者说,这是你能得到的最接近的信息)

NS通常,您可以通过将缓存中的记录与您在互联网上找到的记录进行比较来确定过时的名称服务器记录的问题,但在这种情况下,没有权威NS记录可供缓存。胶水记录本身并不具有权威性;没有权威的答案,就只是没有权威的名称服务器

这里通常会发生以下两种情况之一:

  1. dig +trace从本地缓存中获取中间名称服务器的过时答案,并且此刻确实存在问题。我已经在另一个问题中讨论过这种行为。
  2. 缓存服务器在追踪粘合记录以查找权威名称服务器时遇到NXDOMAINSERVFAIL问题,并且此事件已被缓存。即使问题已得到纠正,或者粘合已指向其他地方,名称服务器也不会在内部计时器到期之前再次尝试请求它。请求清除相关区域的缓存通常会重置它。

后者通常是罪魁祸首。如果你想绝对确定,可以转储名称服务器的运行时缓存并查看内存中的胶水。(即 BIND 的rndc dumpdb)请注意,除非你可以将转储范围限制在单个区域,否则这是一个非常昂贵的操作,并且通常在高负载情况下应避免。

相关内容