Mac OSX 可以 dig 或 nslookup,但无法 ping 主机

Mac OSX 可以 dig 或 nslookup,但无法 ping 主机

我的 Mac 在 Sophos Remote IpSec VPN 上遇到了问题。VPN IpSec 设置为默认网关。我可以连接到 VPN,并且可以加入远程网络上的每个 IP。我也可以 dig 和 nslookup fqdn,但无法 ping 它们:

ping: cannot resolve domain.local: Unknown host

我在互联网上搜索过,但找不到解决方案。我认为问题出在我的 Mac 上,因为“ping fqdn”确实有效,然后就停止了。远程防火墙没有进行任何修改(我是唯一可以访问的人)。

简而言之,当我连接到 VPN 时,我可以使用 IP 地址加入每台机器和服务,但不能使用本地 DNS。我可以通过 VPN 浏览互联网,没有任何问题(我实际上是连接到 VPN 来发布这个问题的)。

我不太清楚 OSX 如何处理网络配置,它似乎比简单的 Debian 服务器或 Windows 工作站更复杂(尽管)。

我尝试了一些scutil --dns networksetup -listallnetworkservices我不知道的事情,并获得了有趣的信息来帮助我,但却无法解决我的问题。

从现在起,我认为我需要其他大脑来帮助我,然后我会多学习一点如何使用我的 Mac,我认为这不是坏事。这就像 NIC 知道在使用 dig 时要请求哪个 DNS 来解析名称,但在询问时不向他们发送请求(在本例中就像 ping)。

我的耳朵,或者说我的眼睛睁大了,谢谢。

答案1

好的,找到了一种方法来让它工作。我找到了两个可以帮助我解决问题的资源: rakhesh.com MacOS VPN 不使用 VPN DNS
vNinja.net macOS:使用自定义 DNS 解析器

因此,从这两个资源中,以下是当我连接到我的 vpn(带有 Sophos vpn 客户端的 Sophos Remote IpSec)时加入我的本地 fqdn 的步骤。在此示例中,我的本地域将是本地.foo.bar。该本地域的权威本地 DNS ip 地址是10.10.10.10/24

  1. 创建文件夹/etc/resolver

  2. 创建并编辑以我想要解析的本地域名命名的文件sudo vim /etc/resolver/lab.ecinf.ch

  3. 文件内容

     ```
     domain local.foo.bar
     search local.foo.bar
     nameserver 10.10.10.10
     search_order 1
     timeout 5
     ```
    

我把这个解析器放在更高的优先级,因为我希望在连接到 VPN 时首先使用它。当我断开连接时,这个域是不可加入的,所以我不在乎。超时 5 取自 rakhesh.com 的博客,它是“如果 VPN 未连接,则超时 5 秒,这样它就不会花费太多时间尝试联系名称服务器”

  1. 保存文件
  2. 刷新缓存 DNSsudo killall -HUP mDNSResponder
  3. 确认scutil --dns

希望它能帮助其他遇到此问题的人。希望这样做不是坏事。如果有人是网络专家,请告诉我我是否做错了什么,或者这是否根本不是最佳实践。

相关内容