好的,设置如下。笔记本电脑连接到我们公司的 VPN(Juniper Network Connect 7.2.0)。有两个 DNS 搜索后缀(domain1.com、domain2.local)。在连接后,nslookup 会轮询正确的 DNS 服务器并返回正确的 IP。Ping IP 可以正常工作。Ping FQDN 可以正常工作。Ping 非限定域名似乎同时使用了 hostname.domain.com 后缀(即使不存在),并且似乎使用了本地 DNS 服务器的结果,而不是 VPN DNS 服务器的结果。
更多详情:
c:\> nslookup hostname
服务器:hostname.domain2.local
地址:10.0.0.10
非权威答复:
名称:hostname.domain2.local
地址:10.0.0.10
c:\> nslookup hostname.domain2.local
服务器:hostname.domain2.local
地址:10.0.0.10
非权威答复:
名称:hostname.domain2.local
地址:10.0.0.10
C:\> ping hostname
正在 Ping hostname.domain1.com [EXTERNAL/WRONG_IP],数据为 32 字节:
请求超时。
请求超时。
请求超时。
请求超时。
EXTERNAL/WRONG_IP 的 Ping 统计信息:
数据包:已发送 = 4、已接收 = 0、丢失 = 4(100% 丢失),
C:\> ping hostname.domain2.local
正在 Ping hostname.domain2.local [10.0.0.10],带有 32 字节数据:
来自 10.0.0.10 的回复:字节=32 时间=50ms TTL=128
来自 10.0.0.10 的回复:字节=32 时间=50ms TTL=128
来自 10.0.0.10 的回复:字节=32 时间=47ms TTL=128
来自 10.0.0.10 的回复:字节=32 时间=50ms TTL=128
10.0.0.10 的 Ping 统计信息:
数据包:已发送 = 4、已接收 = 4、丢失 = 0(0% 丢失),
近似往返时间(毫秒):
最小值= 47 毫秒,最大 = 50 毫秒,平均 = 49 毫秒
以下是我迄今为止尝试过的:
- ipconfig /flushdns
- netsh int ip 全部重置
- 验证高级设置中的网络适配器的优先级顺序是否正确
- 验证 TCP/IP 路由是否正确
- 已验证主机名不在 hosts 文件中。
那么...有人知道为什么它似乎仍然在使用错误的 DNS 服务器吗?
答案1
nslookup
几乎每个应用程序使用的名称解析和 Windows 网络 API 的名称解析之间存在差异。
Windows 中的标准名称解析过程按以下顺序进行:
- 检查本地计算机的名称
HOSTS
文件- DNS、本地缓存
- DNS,DNS服务器按优先顺序
- WINS 服务器
- TCP/IP 上的 NetBIOS (NetBT) 广播
nslookup
然而,不同之处在于:
- 它仅限于已注册的 DNS 服务器。
- 它不会将自己限制在完整的 FQDN 中;它可能会找到部分 FQDN,然后告诉您它已经找到了。其他应用程序可能会假设
hostname
是完整的 FQDN,或者在解析之前尝试添加主 DNS 后缀(由 定义SystemPropertiesComputerName.exe
)和特定于连接的 DNS 后缀。
您可以使用 Wireshark(免费的第三方诊断应用程序)来找出ping
您的解析位置hostname
。
答案2
有几件可能的事情。
尝试route print
并确保您没有任何可能导致此问题的静态路由。
您确定“ping 主机名”是由 DNS 而不是 WINS 解析的吗?如果您可以完全验证并获得良好的结果,但在短名称上失败,则可能是 WINS 记录错误。检查您的 wins 服务器并删除/更正任何错误记录。也可以NBTSTAT -RR
在您的机器上运行
检查并调整您的 DNS 搜索顺序(从外观上看,评论中已经介绍过了)
检查您的机器上没有恶意的 HOSTS / LMHOSTS 条目。
答案3
您的文件中可能有硬编码的地址hosts
。
nslookup
使用与其他不同的解析模式(ping
也包括gethostbyname()
标准库中的方法)。
更多信息请访问https://jdebp.eu/FGA/nslookup-results-different-to-ping.htmlarchive.org Wayback Machine 纪念品
答案4
如果有人偶然发现这个问题,解决办法可能很简单,dns 被缓存到公共 ip 地址。要清除这个问题,只需运行“ipconfig /flushdns”,如果用户试图连接非 vpn ip,然后在缓存过期之前进入 vpn,就会发生这种情况。nslookup 查看 dns 服务器,ping 不会查看 dns 服务器,除非它需要找出 ip 地址,所以如果它已经缓存了 ip 地址,则甚至不会检查 dns 服务器。
唯一可能的其他问题是,如果是这种情况,ping 和 nslookup 都可能是相同的错误 ip。因为您的计算机需要知道哪些网络适配器设置应该优先,所以每个网络适配器上都有一个称为接口度量的优先级顺序。VPN 适配器的接口度量应该是最高优先级,并且默认情况下是这样的,但有时其他软件(安装了多个 vpn 软件等)可能会干扰。要设置它,请进入您的网络适配器列表(控制面板\网络和 Internet \网络连接)找到 VPN 的网络适配器(由您正在使用的 VPN 软件创建;可能是 TAP-Windows 适配器,也可以包含 VPN 软件的名称)进入属性和常规选项卡上高级下的 IPV4 属性,有一个已选中的“自动度量”。取消选中它并在接口度量字段中输入 1。重新连接到 vpn 以使更改生效。就是这样。