为什么在 Windows 中同时添加私有和公共 DNS 服务器会导致意外行为?

为什么在 Windows 中同时添加私有和公共 DNS 服务器会导致意外行为?

我在 Windows 的网络设置下配置了两个 DNS 服务器:

  • Preferred DNS server:我的 DNS 服务器
  • Alternate DNS server:ISP 提供的公共 DNS

当我打开一个内部网站时,它应该使用我的私有 DNS 服务器进行解析,但我的浏览器却打开了一个公共 Internet 网站。当我删除备用 DNS 服务器(即公共 DNS)时,它会打开内部网站。

根据我的理解,一旦私有 DNS 解析了 IP,它就不应该尝试使用公共 DNS 进行解析。当我在命令提示符中检查时,它只解析到内部网,但在浏览器中却不一样。

为什么会发生这种情况?我该如何解决?

答案1

1) 它不是那样运作的。

我学到了一个惨痛的教训,Windows 确实不是按顺序使用此 DNS 服务器列表。不能假设当它无法解析名称时,它只会沿着列表往下走。

TechNet 上有一个相当详细的解释,你可以找到这里。我亲身遇到的问题是由这里的这个小片段引起的:

DNS 客户端服务会跟踪哪些服务器更快地响应名称查询,并根据服务器响应名称查询的速度在列表中上调或下调服务器。

我们的 DHCP 设置中列出了五台 DNS 服务器,最后两台是本地 ISP 的。另外三台机器非常老旧,我们认为最好添加本地 ISP 的服务器作为备份。猜猜谁的速度更快?

当服务器停止解析内部名称时,这并不好玩。

这促使我威胁切换到 Linux。

2)那么为什么它在命令提示符中起作用?

我假设你使用nslookup总是使用 DNS 列表中的第一个服务器,除非您另有指定。由于您始终在检查您的私有 DNS 服务器,因此它始终有效。一旦您打开 Internet Explorer 并开始实际尝试解析名称,行为就会有所不同(如上面冗长的流程图所示)。

这难道不令人困惑吗?我花了一周时间研究名称解析问题,想知道为什么它总是能正常工作,nslookup但不知何故 Lotus Notes 却始终找不到其邮件服务器。直到使用 Wireshark 检查它如何真正解析名称时,我才弄清楚。

3)我该如何修复它?

您可以通过为 DNS 服务器配置转发器来解决特定问题。当您的私有 DNS 服务器找不到名称时,它会将请求转发到您指定的服务器。这样,您就可以只使用 DNS 服务器,而无需使用其他任何服务器,从而防止出现奇怪的行为。

答案2

您不需要设置两个 DNS 服务器,而是只使用您的私有 DNS,然后让该 DNS 服务器使用外部 DNS 检查它不知道的结果。具体配置方法取决于您的私有 DNS 服务器,但这应该会提供更统一的结果,因为当您的备用 DNS 服务器认为主 DNS 服务器繁忙时,可能会使用备用 DNS 服务器。

相关内容