在我的 Mac 上,我可以“nslookup 主机名”,但无法 ping 通它?

Chr*_*s F 5 dns ping

Mac 操作系统文图拉 13.3.1

我读过有关“Can ping IP but not hostname”的其他问题,答案都与 DNS 相关。就我而言,我相信我的 DNS 设置正确。另外,我使用路由器的有线连接而不是 WiFi。

注意:该问题仅发生在我公司的内部(VPN)服务器上。我可以 ping 外部服务器,例如www.google.com

我已经刷新了 DNS 缓存

% sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Run Code Online (Sandbox Code Playgroud)

我正在使用公司的 VPN,在我的网络接口设置中,我设置了 IT 部门提供给我的 DNS 服务器。我可以做这个

% nslookup dc1-main.company.com
Server:     10.227.10.4
Address:    10.227.10.4#53

Name:   dc1-main.company.com
Address: 10.227.25.17
Run Code Online (Sandbox Code Playgroud)

然后我可以做

% ping 10.227.25.17
PING 10.227.25.17 (10.227.25.17): 56 data bytes
64 bytes from 10.227.25.17: icmp_seq=0 ttl=125 time=41.206 ms
64 bytes from 10.227.25.17: icmp_seq=1 ttl=125 time=41.698 ms
64 bytes from 10.227.25.17: icmp_seq=2 ttl=125 time=41.714 ms
^C
--- 10.227.25.17 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 41.206/41.539/41.714/0.236 ms
Run Code Online (Sandbox Code Playgroud)

但这失败了

% ping dc1-main.company.com
ping: cannot resolve dc1-main.company.com: Unknown host
Run Code Online (Sandbox Code Playgroud)

这是跟踪路线。对于 IP,从 #4 到 #64 的跳数仅为* * *

% traceroute 10.227.25.17 
traceroute to 10.227.25.17 (10.227.25.17), 64 hops max, 52 byte packets
 1  192.168.40.14 (192.168.40.14)  25.321 ms  24.286 ms  24.585 ms
 2  172.16.25.1 (172.16.25.1)  24.737 ms  24.578 ms  25.052 ms
 3  192.168.150.20 (192.168.150.20)  44.081 ms  44.232 ms  43.149 ms
 4  * * *
 5  * * *
...
64  * * *


% traceroute dc1-main.company.com
traceroute: unknown host dc1-main.company.com
Run Code Online (Sandbox Code Playgroud)

为什么是这样?蒂亚!

我看到为什么“nslookup”工作正常时“ping”无法解析名称?但它与 Windows 相关,并且这些建议对于 Mac 没有意义。

更新 有人请求此信息

% nslookup -q=AAAA dc1-main.company.com
Server:     10.227.10.4
Address:    10.227.10.4#53

*** Can't find dc1-main.company.com: No answer
Run Code Online (Sandbox Code Playgroud)

小智 4

在这个问题上浪费了几个小时后,我终于找到了解决办法。我的 DHCP 服务器首先分发内部 DNS,然后分发外部 DNS 作为辅助 DNS。该外部指向 Google 的 8.8.8.8。

例如:

10.0.1.232
10.0.2.232
8.8.8.8
Run Code Online (Sandbox Code Playgroud)

我从 DHCP 分配的 DNS 服务器列表中删除了 8.8.8.8,瞧,我现在能够 ping、ssh、traceroute 等内部资源。当使用 DNSSEC 的系统出现在列表中时,Apple 似乎决定阻止非 DNSSEC 系统。DNSSEC(域名系统安全扩展)是一组 DNS 扩展,可提供 DNS 数据的身份验证。因此我们的内部 DNS 服务器(实际上并不需要 DNSSEC)没有被查询,因为 8.8.8.8 自然会使用它。不知道为什么苹果会认为这是一个安全问题。

这有效:

10.0.1.232
10.0.2.232
Run Code Online (Sandbox Code Playgroud)

然后我的内部 DNS 服务器仅将未知数发送到 8.8.8.8 而不是客户端系统。