This question is similar,但没有详细说明为什么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缓存中获取不到任何记录,连一条坏记录都没有?
如果一条记录没有权威答案
NS
,那么除了无法确定权威之外,没有什么可以缓存的。这是已缓存的内容,DNS 客户端无法获取服务器内存中有关弱名称服务器的信息。(或者更确切地说,这与您将要获得的一样接近)NS
通常,您可以通过将缓存中的记录与您在 Internet 上找到的记录进行比较来确定过时的名称服务器记录的问题,但在这种情况下,没有权威NS
记录可以缓存。胶水记录本身并不权威;没有权威的答案,根本就没有权威的域名服务器。这里通常发生两件事之一:
dig +trace
正在从您的本地缓存中获取对中间名称服务器的陈旧答案,目前确实存在问题。我已经在另一个问题中介绍了这种行为。NXDOMAIN
或SERVFAIL
追查胶水记录以查找权威名称服务器时,此事件已被缓存。即使问题已得到纠正,或者胶水已指向其他地方,名称服务器也不会尝试再次请求它,直到内部计时器到期。为有问题的区域请求缓存清除通常会重置它。后一种情况通常是罪魁祸首。如果您想绝对确定,可以转储名称服务器的运行时缓存并查看内存中的胶水。(即 BIND 的
rndc dumpdb
)请注意,这是一个非常昂贵的操作,除非您可以将转储的范围限制在单个区域,并且通常在高负载情况下要避免。