在 Windows Server 2008 域中,现场域控制器既充当 DNS 服务器,又充当 WINS 服务器。它还是 DHCP 服务器。一个工作站用作域中各个服务器的所有管理员的平台。所有服务器在系统范围备份后于晚上关闭。每天早上都会有一段时间,在此期间,没有远程桌面会话可以连接到任何具有由 DHCP 分配的 IP 地址的服务器。我的策略是确定这些盒子的 IP 地址,但我想先了解问题所在。今天早上的问题如下:
Nslookup 和 Nblookup 都同意目标计算机的 IP 地址,但当我尝试 ping 目标计算机时,ping 以某种方式解析了不同的 IP 地址,导致 ping 失败。我首次发现该问题时,三个不同的远程桌面会话均无法连接。如果我在相关服务器启动后等待一个小时左右,问题就会自行解决。
在无法连接的工作站上,我执行了 IPCONFIG /FLUSHDNS。在 DHCP 服务器上,我根据更改 IP 地址会以某种方式导致此问题的理论将 DHCP 设置为使用 30 天租约,但第二天早上问题仍然存在。我已确认任何 HOSTS 或 LMHOSTS 文件中均未提及任何计算机。我搞不清楚 ping 从哪里获取其 IP 地址。
有任何想法吗?
答案1
Nslookup 和 Nblookup 都直接从服务器获取数据,而 ping 首先经过本地资源、hosts 文件、DNS 缓存,然后是 DNS 查找(我可能跳过了一步),因此如果它首先在那里找到答案,那就坚持下去。
答案2
您的本地文件中是否有该 IP 地址的条目C:\Windows\System32\Drivers\etc\hosts
?
编辑:我刚刚看到您提到 hosts 文件中没有任何内容。我真的无法解释您报告的行为。我会回到原点并进行一系列健全性检查,以验证您认为您知道的内容是真实且正确的。
编辑 2:DHCP 服务默认配置为在修改租约时更新 DNS。然后必须通过 AD 复制将这些更改复制到所有 AD 集成 DNS 服务器。此过程可能需要长达十五分钟才能完全完成。在此期间,某些 DNS 服务器可能会显示正确的 IP,而其他 DNS 服务器可能会显示旧 IP。您可以通过直接查询 DNS 服务器来确认这一点。尝试运行名称是您的内部 DNS 服务器的nslookup <query> <resolver>
位置<resolver>
。依次查询每个服务器以验证它们是否返回一致的结果。
答案3
这个问题就这么消失了。我采取的措施首先是强制 DHCP 在 DNS 中注册 IP 地址更改(即使没有要求)。但这并没有解决问题。接下来,我将租约设置为 30 天。这也没有解决问题。问题消失后,我将租约设置为 1 小时,但这并没有导致问题再次发生。请注意,这些操作在逻辑上与实际问题没有任何联系。它们属于无稽之谈。我想不出任何好的理由,为什么在刷新 DNS 后,NSLOOKUP 和 NBLOOKUP 会给出一个 IP 地址,而 ping(大概是远程桌面应用程序)会找到另一个 IP 地址。(HOSTS 和 LMHOSTS 是默认的,没有提到 IP 地址。)
答案4
您解决这个问题了吗?听起来您的网络地址分配存在根本性问题。
我会在 ping 时使用 Wireshark 并观察 ICMP ECHO 和 nslookup/nblookup 返回的 IP。
如果您在域上,nslookup 默认将返回域的 DNS 服务器已知的 IP(并且域控制器通常会将其自己的地址作为较小域上的 DHCP 客户端的 DNS 服务器)。
Ping 依赖于 ARP - 加入网络的主机请求网络上的现有主机告诉它他们的 IP 是什么(并且每个主机都维护自己的已知主机的 IP 映射到其 MAC 的列表)。
这可能是因为 DC 对它分配的地址感到困惑,或者您可能在 LAN 上有竞争的 DHCP 服务器(巧合地分配同一范围内的 IP)并且一些客户端正在与错误的服务器通信。
无论如何,我很想知道您是否找到了解决此问题的方法。