我有一台 Hyper-V 虚拟机,配置了自己的 DNS 管理器和用于测试的条目。VM DNS 管理器设置为将所有其他请求转发到“常规”DNS 服务器。
这一切曾经运行良好,但现在我遇到了问题(可能对应于我更改虚拟机的网络适配器以绑定到多个静态 IP 地址的时间 - 以前它是一个 DHCP 地址)。
有趣的是,我可以 ping 虚拟机 DNS 条目。但是,对于转发的条目,nslookup 成功,但 ping 失败,并且无法访问任何外部互联网站点。
例如,刷新后,www.google.com 的搜索结果如下ipconfig /flushdns
:
C:\Windows\system32>nslookup www.google.com
Server: localhost
Address: 127.0.0.1
Non-authoritative answer:
Name: www.google.com
Addresses: 2607:f8b0:4003:c01::68
173.194.64.105
173.194.64.99
173.194.64.103
173.194.64.106
173.194.64.147
173.194.64.104
C:\Windows\system32>ping www.google.com
Ping request could not find host www.google.com. Please check the name and try again.
C:\Windows\system32>ping 173.194.64.106
Pinging 173.194.64.106 with 32 bytes of data:
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
PING: transmit failed. General failure.
Ping statistics for 173.194.64.106:
Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
但 ping 我内部定义的 dns 条目(在正向查找区域中定义)工作正常。
更新
使用静态 IP 设置(同一网络连接上有多个静态 IP,DNS 服务器设置为 127.0.0.1 并转发到“官方”DNS 服务器),我可以 ping 虚拟机上定义的 DNS 条目以及更广泛内部网络本地的 DNS 条目。但是,我无法 ping 互联网上的地址。
如果我允许 Windows “诊断”虚拟机中的网络连接,它会建议将我的 VM 适配器改回 DHCP - 如果我允许它这样做,我可以 ping 外部互联网(但不能 ping 我的 VM dns 条目)。一旦我将其切换回静态 IP 地址,问题行为就会再次出现。
更新 2
所有分配的 IP 地址都在同一个子网内。
结果如下tracert
:
C:\Windows\system32>tracert 173.194.64.106
Tracing route to oa-in-f106.1e100.net [173.194.64.106]
over a maximum of 30 hops:
1 Transmit error: code 1231.
Trace complete.
为什么我的虚拟服务器能够成功解析外部 DNS 条目,但实际上却无法连接它们?
答案1
“传输错误:代码 1231”对应主机无法找到默认网关。请参阅这链接。所以我猜想当您将网络配置设置为静态时,也许您没有输入默认网关信息。ipconfig /all 结果应该会为我们提供更多信息。
答案2
在 DNS 管理器控制台中,检查 DNS 正在监听哪些地址/接口。很可能它没有绑定到正确的接口,因为您已经切换了适配器。
答案3
你能发布一个
tracert 173.194.64.106
吗?这将显示流量是否离开 NIC 以及它正在采用哪条路由。tracert
也对您的生产 DNS 进行发布。您提到了多个静态 IP,它们都在同一子网中吗?如果不是,它们都有默认网关吗?