对于正常的 DNS 查找,可以使用 Dig 获得答案,包括 DNS 记录的剩余 TTL。如果该答案来自缓存,则 TTL 将“倒计时”,直到下一个权威查询,以及该查询出现之前的剩余时间(如本问题所述:检查 nameserver 的剩余 TTL)。
如何获得负缓存记录的相应“剩余时间”?根据定义,答案是“NXDOMAIN”或不存在的域;除了 SOA 记录(最大可能时间值)之外,似乎没有与此答案相关联的 TTL。
我还可以直接访问 [BIND 9] 服务器,因此也欢迎直接从缓存中获取此信息的方法,尽管我希望有一种基于查询的方法来执行此操作。
没有基于查询的方法来获取服务器状态。必须使用该
rndc dumpdb
命令从内存中转储胶水、负缓存计时器等。\-
被负缓存。\-A
,\-AAAA
等。\-ANY
表示真NXDOMAIN
。没有记录存在于该实体的旁边或下方。如果您没有接触过
NODATA
之前的概念,上述内容可能会令人困惑。(RFC 2308)这意味着NOERROR
看到了 0 个答案的答案,而不是NXDOMAIN
.NXDOMAIN
表示根本不存在具有该名称的记录。负缓存条目示例:
自动解析这个文件并不适合胆小的人,尤其是当标签名称由于重复而被省略时。
NXDOMAIN
首先,应该通过AUTHORITY SECTION
回复中的 SOA 记录来传达a 的 TTL 。请参阅我对负 DNS 缓存通常持续多长时间的回答?详情。关于在后续查询中看到递减 TTL 的问题。我相信这是一个 DNS 服务器实现细节。
在我的测试中,我观察到一些递归名称服务器不会
AUTHORITY SECTION
为后续请求返回带有 SOA 记录的带有递减 TTL 的记录,而其他名称服务器则返回。例如 cloudflare 解析器(注意递减的 TTL 值):
虽然 AWS VPC 中的默认解析器将仅在第一个请求时使用权限部分进行响应:
请注意,权威服务器应该始终返回完整的 TTL,它应该是 SOA.MINIMUM 字段和 SOA 记录本身的 TTL 中较小的一个。您只会在来自递归(缓存)名称服务器的答案中看到递减的 TTL。
另请注意,在查询递归服务器时,您通常会遇到负载平衡器,因此您会得到不同的答案,具体取决于您碰巧遇到的负载平衡服务器。