Mac OS Ventura 13.3.1
我读过其他关于“可以 ping IP 但不能 ping 主机名”的问题,答案都与 DNS 有关。就我而言,我相信我的 DNS 设置正确。另外,我使用的是路由器的有线连接,而不是 WiFi。
笔记:该问题仅发生在我公司的内部(VPN)服务器上。我可以 ping 通外部服务器,例如,www.google.com。
我已清除 DNS 缓存
% sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
我正在使用公司的 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
我可以做
% 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
但这失败了
% ping dc1-main.company.com
ping: cannot resolve dc1-main.company.com: Unknown host
这是跟踪路由。对于 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
这是为什么?TIA!
我懂了为什么“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
答案1
浪费之后小时针对此问题,我终于找到了解决方法。我的 DHCP 服务器首先分发内部 DNS,然后分发外部 DNS 作为辅助 DNS。该外部 DNS 指向 Google 的 8.8.8.8。
例如:
10.0.1.232
10.0.2.232
8.8.8.8
我从 DHCP 分配的 DNS 服务器列表中删除了 8.8.8.8,现在我可以 ping、ssh、traceroute 等内部资源了。看来 Apple 决定在使用 DNSSEC 的系统出现在列表中时阻止非 DNSSEC 系统。DNSSEC(域名系统安全扩展)是 DNS 的一组扩展,可提供 DNS 数据的身份验证。因此,我们的内部 DNS 服务器(实际上不需要 DNSSEC)不会被查询,因为 8.8.8.8 自然会使用它。不知道 Apple 为什么会认为这是一个安全问题。
这有效:
10.0.1.232
10.0.2.232
然后,我的内部 DNS 服务器只会将未知信息发送到 8.8.8.8,而不是客户端系统。
答案2
如果您在解析内部域的主机名时遇到此问题,您可以创建一个目录/etc/resolver
。然后为要指定特定名称服务器的每个域创建一个名为的文件。例如:
sudo mkdir /etc/resolver
sudo chmod 755 /etc/resolver
sudo vi /etc/resolver/mydomain.example.com
sudo chmod 644 /etc/resolver/mydomain.example.com
其中的内容为mydomain.example.com
:
nameserver 10.0.0.123
10.0.0.123
用于域名的名称服务器的 IP 地址在哪里mydomain.example.com
?
如果您有多个内部域,请创建多个这样的文件。
该技术似乎取代了通过 DHCP 返回的域服务器列表。