我无法从办公室的任何计算机访问 goodtodo.com。我访问其他任何 URL 似乎都没有问题。服务器是 Windows 2003 Server,是域控制器、DHCP 服务器和 DNS 服务器。大多数客户端是 Win XP,但有些是 Win 7。
如果我从客户端 ping goodtodo,我会得到“..无法找到主机”。如果我从客户端 ping IP(74.80.216.31),我会得到 0% 的丢失。该 IP 在浏览器中也可以使用。刷新客户端上的 DNS 并不能解决问题。客户端上的 ipconfig /all 显示 2003 服务器为 DNS 服务器。
在服务器上,我可以成功 ping goodtodo。它显示两个 DNS 服务器,127.0.0.1(我假设是它本身)和 192.168.1.30(一台 Windows 2000 服务器,曾经是域控制器,但大约一个月前被替换并降级)。我猜想服务器正在使用其辅助 DNS 服务器来解析名称,这就是它从那里开始工作的原因。
问题就在我们切换服务器时出现。我认为这与时间有关,但我不确定。
在 2003 服务器上,DNS 有一个 goodtodo 的缓存条目,其中包含两个条目
(same as parent folder) Name Server(NS) ns1.wshost.net
(same as parent folder) Name Server(NS) ns2.wshost.net
如果我清除 2003 服务器上的缓存,问题会消失大约 4-7 天,然后再次出现。每次清除缓存都会立即解决问题。
在客户端计算机上,nslookup goodtodo.com 8.8.8.8 使用 google 的名称服务器正确解析。因此,它似乎是 2003 机器上的 DNS 服务器。由于清除缓存可以暂时修复此问题,因此似乎缓存有时会受到污染,但这纯粹是猜测,因为我真的不知道我在说什么。
服务器和电缆调制解调器之间有 Sonicwall 防火墙。我排除了这个问题,因为谷歌名称服务器工作正常。此外,与任何其他正常 HTTP 请求相比,我没有在防火墙设置中看到任何会影响此 URL 的内容。
我是否忽略了一些明显的问题,或者我可以做其他事情来缩小问题的范围?
附加信息
在我发布问题几个小时后,它又恢复了——这对我来说是莫名其妙的。今天它又挂了。我检查了缓存,结果和我上面报告的一样。
使用 google 的名称服务器仍然可以像以前一样工作,我可以直接 ping 网站的 IP 地址而不会出现错误。nslookup goodtodo.com ns1.wshost.net 在客户端和服务器上都超时。ping ns1.wshost.net 在客户端上超时,但在服务器上可以正常工作。
我删除了 DNS 服务器上 goodtodo.com 缓存中的条目,一切又恢复正常。我仍然无法从客户端 ping ns1.wshost.net。访问网站后,我查看了缓存,发现有三条记录:上面列出的两条记录加上一条引用 IP 地址的 A 记录。名称服务器记录的 TTL 为 24 小时,A 记录的 TTL 为 14 分钟。A 记录现在已消失,但名称仍可解析。
无论如何,DNS 服务器似乎正在进入其缓存,但无法解析 ns*.wshost.net。如果我从缓存中删除记录,我假设它正在使用根提示来解析名称,就像我清除整个缓存一样。
答案1
在服务器操作系统上,DNS 客户端和 DNS 服务器是两个不同的服务,它们不共享缓存或查找设置。DNS 服务器服务不使用服务器上的本地 NIC DNS 属性来转发请求。您应该查看 DNS MMC 控制台,然后在转发器下的服务器属性中查看,并可能查看根提示,以查看 DNS 服务器将如何查找缓存中不存在的任何 DNS 条目。要查看缓存中的内容,您需要确保在“查看”下拉菜单下选择了“高级”。可能发生以下情况之一:
- 需要确保防火墙允许该服务器通过 TCP 和 UDP 端口 53 连接到互联网。
- 服务器正在将其 DNS 请求转发到提供错误结果的 ISP 服务器。我建议删除所有转发器,并允许服务器在故障排除期间使用根提示。仅使用根提示进行查找是可以的,但它“对网络不友好”,因此请尽可能尝试使用 ISP 的 DNS 转发器。
- 服务器上的根提示列表可能有误(不太可能)。
- DNS 服务器上的缓存查找有故障。在 DNS MMC 中右键单击它并“清除缓存”
- DNS 服务器在其正向查找区域中具有 DNS 名称的条目。
2 号最有可能。
答案2
我的外部 IT 人员认为 ns1.wshost.net 上的 TTL 明显短于我的 DNS 服务器上的 TTL。我在托管 DNS 服务器的盒子上创建了这个 reg
本地计算机\SYSTEM\CurrentControlSet\Services\DNS\Parameters\MaxCacheTTL
并将值设置为 300(5 分钟)。我这样做之后没有出现任何问题。我不确定这是否能解决根本问题,但它确实有效。
答案3
按照http://support.microsoft.com/kb/968372这是正确的设置,但值是错误的。但我想这没问题,因为它正在工作 :)