![Microsoft 2003 DNS 有时无法查询某些 A 指针,因为它们的 TTL 已过期](https://linux22.com/image/512399/Microsoft%202003%20DNS%20%E6%9C%89%E6%97%B6%E6%97%A0%E6%B3%95%E6%9F%A5%E8%AF%A2%E6%9F%90%E4%BA%9B%20A%20%E6%8C%87%E9%92%88%EF%BC%8C%E5%9B%A0%E4%B8%BA%E5%AE%83%E4%BB%AC%E7%9A%84%20TTL%20%E5%B7%B2%E8%BF%87%E6%9C%9F.png)
警告:问题很长:)
我们有一台带有 DNS 服务器的 Win 2003 服务器,它时不时无法为我们提供特定域的某些 A 指针。
我正在运行一个小脚本,它要求提供相关域的 SOA、NS 和 A 记录,有时当 TTL 过期时,DNS 无法再次获取 A 记录,清除缓存可以解决问题。
看一看
当 TTL 过期时,它就起作用了
Thu Apr 29 15:24:20 METDST 2010
dig basefarm.net soa
basefarm.net. 64908 IN SOA ns01.osl.basefarm.net. hostmaster.basefarm.net. 2010042613 86400 3600 2419200 600
ns01.osl.basefarm.net. 299 IN A 81.93.160.4
dig basefarm.net ns
basefarm.net. 64908 IN NS ns01.sth.basefarm.net.
basefarm.net. 64908 IN NS ns01.osl.basefarm.net.
ns01.sth.basefarm.net. 299 IN A 80.76.149.76
ns01.osl.basefarm.net. 299 IN A 81.93.160.4
dig ns01.sth.basefarm.net a
ns01.sth.basefarm.net. 299 IN A 80.76.149.76
ns01.sth.basefarm.net 和 ns01.osl.basefarm.net 的 TTL 已过期,但 DNS 设法获取了新值 (TTL 3600)
Thu Apr 29 15:29:20 METDST 2010
dig basefarm.net soa
basefarm.net. 64608 IN SOA ns01.osl.basefarm.net. hostmaster.basefarm.net. 2010042613 86400 3600 2419200 600
ns01.osl.basefarm.net. 3600 IN A 81.93.160.4
dig basefarm.net ns
basefarm.net. 64608 IN NS ns01.sth.basefarm.net.
basefarm.net. 64608 IN NS ns01.osl.basefarm.net.
ns01.sth.basefarm.net. 3600 IN A 80.76.149.76
ns01.osl.basefarm.net. 3600 IN A 81.93.160.4
dig ns01.sth.basefarm.net a
ns01.sth.basefarm.net. 3600 IN A 80.76.149.76
但另一次它失败了,我们需要清除 DNS 缓存才能让它重新开始工作......
Thu Apr 29 17:24:23 METDST 2010
dig basefarm.net soa
basefarm.net. 57705 IN SOA ns01.osl.basefarm.net. hostmaster.basefarm.net. 2010042613 86400 3600 2419200 600
ns01.osl.basefarm.net. 299 IN A 81.93.160.4
dig basefarm.net ns
basefarm.net. 57705 IN NS ns01.sth.basefarm.net.
basefarm.net. 57705 IN NS ns01.osl.basefarm.net.
ns01.sth.basefarm.net. 299 IN A 80.76.149.76
ns01.osl.basefarm.net. 299 IN A 81.93.160.4
dig ns01.sth.basefarm.net a
ns01.sth.basefarm.net. 299 IN A 80.76.149.76
TTL 已过期,但 DNS 无法获取 ns01.sth.basefarm.net 和 ns01.osl.basefarm.net 的 IP 地址
Thu Apr 29 17:29:23 METDST 2010
dig basefarm.net soa
basefarm.net. 57405 IN SOA ns01.osl.basefarm.net. hostmaster.basefarm.net. 2010042613 86400 3600 2419200 600
ns01.osl.basefarm.net. 3600 IN A 81.93.160.4
dig basefarm.net ns
basefarm.net. 57405 IN NS ns01.sth.basefarm.net.
basefarm.net. 57405 IN NS ns01.osl.basefarm.net.
dig ns01.sth.basefarm.net a
Lookup failed
我对这一点真的很迷茫,并尝试过询问谷歌,但无济于事。
答案1
NS
我似乎记得当记录和A
记录没有相同的 TTL时, MS DNS 中存在一个错误,但我目前找不到它的详细信息。
目前,我建议最简单的解决方法是更改服务器上的 TTL 以匹配父区域中发布的 TTL NS
-即 172800s。A
.net
答案2
答案3
这是我们遇到的一个奇怪的事情,不知道是否适用。Vista/Win7 在对内容进行 IPv6 查询的同时还对 IPv4 进行查询。当 MS-DNS 将它们转发到另一个 DNS 时,如果该 DNS 较旧,它可能会对 IPv6 请求做出“未找到”的响应,这是错误的,并导致 MS-DNS 将 IPv4 记录也标记为未找到,直到您清除缓存或 TTL 过期。