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

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

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 返回的域服务器列表。

相关内容