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

Kum*_*ohn 5 windows dns

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

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

当我打开一个应使用我的私人 DNS 服务器解析的 Intranet 站点时,我的浏览器打开了一个公共 Internet 网站。当我删除备用 DNS 服务器(公共 DNS)时,它会打开 Intranet 站点。

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

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

rtf*_*rtf 10

1)它不会那样工作。

我学到了沉痛的教训是Windows并不会为了使用这个DNS服务器列表。您不能假设它在无法解析名称时会简单地沿着列表走下去。

TechNet 上有很长的解释,您可以在此处找到。我个人遇到的问题是由这里的这个小片段引起的:

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

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

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

这促使我威胁要改用 Linux。

2) 那么为什么它在命令提示符下工作呢?

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

这不是非常令人困惑吗?我追了一个星期的名称解析问题,想知道为什么它总是可以使用nslookup但由于某种原因 Lotus Notes 永远找不到它的邮件服务器。直到使用 Wireshark 检查它是如何真正解析名称时,我才弄明白。

3)我该如何解决?

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