我的网络路由器是 ZyXEL ZyWall USG 100,它有一个内置 DNS 服务器。许多 Windows 计算机连接到它并通过 DHCP 获取 IPv4 地址。它们还通过路由器的“域名”获知 DNS 后缀(“内部”)。通常这可以正常工作。但是,有时 Windows(Vista 或 7)计算机无法解析 DNS 记录中域名为“domain-name”的计算机的 IP 地址。此时,具有与“domain-name”关联的 IP 地址的计算机处于开启状态,并且可供其他 Windows 计算机访问。
发生这种情况时,它仍然可以使用“nslookup domain-name”来解析IP地址,但“ping domain-name”、“ping -4 domain-name”并浏览到“http://域名“失败。Ping“domain-name.internal”有效。
我查看了受此问题影响的计算机上的“ipconfig /displaydns”命令的输出,看到了如下所示的意外 IPv6 条目:
domain-name
----------------------------------------
No records of type AAAA
我可以通过重新启动网络适配器接口来暂时解决问题。
在http://technet.microsoft.com/en-gb/library/bb878121.aspx微软表示:
注意:由于 Internet 上的 DNS 服务器配置错误,同时使用 IPv4 和 IPv6 的计算机可能无法解析名称并连接到 Internet 资源。当配置错误的 DNS 服务器收到将名称解析为一个或多个 IPv6 地址的请求(对 AAAA 记录的请求)时,会发生这种罕见问题。如果 DNS 服务器不支持 IPv6,则名称查询会失败。然后,查询节点会发送请求将名称解析为一组 IPv4 地址(对 A 记录的请求)。配置错误的 DNS 服务器会丢弃对 IPv4 地址的后续 DNS 查询,整个名称解析尝试会失败,从而导致请求节点的网络连接受损。如果您遇到此问题,请让您的 Internet 服务提供商重新配置他们的 DNS 服务器,以便在对 AAAA 记录的 DNS 查询失败后接受对 A 记录的后续 DNS 查询。或者,您可以暂时禁用请求计算机上的 IPv6。此问题存在于 DNS 服务器上,并且是同时使用 IPv4 和 IPv6 的所有计算机的共同问题。
我认为这可能就是正在发生的事情(我没有更好的想法)。
即使路由器没有为 Windows 分配可路由(非本地链路)的 IPv6 地址,Windows 是否会尝试查找 IPv6 DNS(AAAA)记录?或者,有人对导致此问题的原因有更好的了解吗?
答案1
如果启用了 IPv6(并且未禁用链接本地地址),Windows Vista 和 Windows 7 将在 A 查找之前请求 AAAA 查找。默认情况下,Windows 将具有链接本地地址,因此如果可用,将使用 IPv6。通常这不是问题,因为 AAAA 查找失败,它会顺利地转到 IPv4。但是,大多数应用程序将直接跳到 IPv4。
答案2
哪个版本的 Windows?我的理解是 XP 永远不会通过 IPv6 与 DNS 服务器通信。它只会通过 IPv4 进行通信。我听说 Vista 和 7 没有问题。
根据我的经验,除非已分配 IPv6 路由,否则 Windows 不会要求提供 AAAA 记录。我从未在我的 DNS 日志中看到任何 AAAA 查找。
您真的有一台名为“域名”的计算机吗?还是这是您编造出来的?
答案3
我不知道本文正是您问题的答案,但当您谈论将 IPv4 和 IPv6 与 DNS 混合时,它可能是一个很好的参考。