nslookup 返回正确的 IP,但 ping 仍然指向错误的 IP

nslookup 返回正确的 IP,但 ping 仍然指向错误的 IP

好的,设置如下。笔记本电脑连接到我们公司的 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 毫秒

以下是我迄今为止尝试过的:

  1. ipconfig /flushdns
  2. netsh int ip 全部重置
  3. 验证高级设置中的网络适配器的优先级顺序是否正确
  4. 验证 TCP/IP 路由是否正确
  5. 已验证主机名不在 hosts 文件中。

那么...有人知道为什么它似乎仍然在使用错误的 DNS 服务器吗?

答案1

nslookup几乎每个应用程序使用的名称解析和 Windows 网络 API 的名称解析之间存在差异。

Windows 中的标准名称解析过程按以下顺序进行:

  1. 检查本地计算机的名称
  2. HOSTS文件
  3. DNS、本地缓存
  4. DNS,DNS服务器按优先顺序
  5. WINS 服务器
  6. TCP/IP 上的 NetBIOS (NetBT) 广播

nslookup然而,不同之处在于:

  1. 它仅限于已注册的 DNS 服务器。
  2. 它不会将自己限制在完整的 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 以使更改生效。就是这样。

相关内容