为什么 DNS 服务器无法解析任何以 .io 结尾的域名?

为什么 DNS 服务器无法解析任何以 .io 结尾的域名?

我有两个 Windows 域控制器。

10.10.10.10 主服务器(win 2008 r2)
10.10.10.20 副本服务器(win 2012 r2)

第二个被配置为第一个的副本。

大约每周一次,主 DC 将负面缓存最多 .io域。这样一来,公司中的任何人都无法访问以下网站:

chef.io
packer.io
雅虎
github.io

奇怪的是,我仍然可以访问一些 .io 页面,比如 github.io 上的页面

spuder.github.io/

解决方案是通过 RDP 进入 DNS 服务器并运行dnscmd /clearcache。这可以在 7 到 10 天内解决问题。

进一步症状

  • 仅影响主域控制器(辅助域控制器和其他域控制器可以正常解析这些站点)
  • google dns 服务器也可以工作
  • 通常发生在周三上午 11 点左右。

我不太熟悉 Windows,但以下是我尝试过的方法

  • 查看日志,我只看到以下几行看起来很有趣

8:15AM
The DNS server wrote version 4638 of zone 254.10.in-addr.arpa to file 254.10.in-addr.arpa.dns..in-addr.arpa to file 254.10.in-addr.arpa.dns.

8:16AM
A more recent version, version 4639 of zone 254.10.in-addr.arpa was found at the DNS server at 10.254.40.51. Zone transfer is in progress.ic replication between domain controllers in a common domain or forest. By installing multiple domain controllers in a domain running DNS Server, you can ensure that DNS will continue to work when a domain co
  • 验证 .io 域没有正向或反向查找区域
  • 确保 hosts 文件中没有任何内容阻止 .io 域名
  • ipconfig /displaydns比较所有域控制器上的输出

我还能调查什么来找出为什么 DNS 缓存如此可预测地不断损坏?是否有 Windows DNS 设置可以在进行区域传输时强制刷新缓存

更新
我把原因归结为,我经常在周三会议前从有线网络切换到无线网络。无线网络有 1 个 Windows 2008 DNS 服务器和 1 个 Windows 2012 DNS 服务器。当 2008 服务器被选为主服务器时,问题又出现了。解决方法是运行此程序dnscmd /clearcache。由于 2008 服务器即将停用,我相信这个问题会自行解决。

答案1

考虑更新您的 root.hints 文件。也许它指向一些旧的根名称服务器,这些服务器(由于某种原因)没有返回 .io 域。

也许你有一个路由问题,导致无法访问它们(即:你将它们运行的​​ IP 范围设为黑洞)这会阻止查找其中的域。我敢打赌,也许您有针对某个国家/地区或 IP 阻止的防火墙规则。使用下面的结果检查您的防火墙或对 .io TLD 服务器进行 dig/nslookup(您可以从下载适用于 Windows 的二进制文件http://www.isc.org/downloads/

# dig +trace +identify git.io
...
io.                     172800  IN      NS      b0.nic.io.
io.                     172800  IN      NS      a0.nic.io.
io.                     172800  IN      NS      a2.nic.io.
io.                     172800  IN      NS      ns-a1.io.
io.                     172800  IN      NS      ns-a3.io.
io.                     172800  IN      NS      c0.nic.io.
...

您能直接访问所有这些 DNS 服务器吗?例如,您的 DNS 服务器可能会重复使用列表中的第一个服务器。请记住,此列表处于某个时间点(现在)并且会发生变化,但应该会为您提供一个初始点,以查看您是否可以访问 .io 根名称服务器。

# for i in b0.nic.io a0.nic.io a2.nic.io ns-a1.io ns-a3.io c0.nic.io; do host $i; done
b0.nic.io has address 65.22.161.17
b0.nic.io has IPv6 address 2a01:8840:9f::17
a0.nic.io has address 65.22.160.17
a0.nic.io has IPv6 address 2a01:8840:9e::17
a2.nic.io has address 65.22.163.17
a2.nic.io has IPv6 address 2a01:8840:a1::17
ns-a1.io has address 194.0.1.1
ns-a1.io has IPv6 address 2001:678:4::1
ns-a3.io has address 74.116.178.1
c0.nic.io has address 65.22.162.17
c0.nic.io has IPv6 address 2a01:8840:a0::17

如果您使用转发器,请直接测试这些转发器的 nslookup。如果没有返回,请联系运行这些转发器的人员(您的 ISP)。

==== 更新:根据你的更新,你提到当你更换 ISP 时会发生这种情况,我猜你的一个连接使用的是 IPv6,而另一个只支持 IPv4?可能是它缓存了 IPv6 返回地址,但一旦你切换连接就无法访问。

相关内容