我有一个路由器,它也在运行一个 DNS,其中包含本地网络上机器的名称。它设置为转发请求,因此对于任何公共机器,它都会访问我的 ISP 提供的 DNS。路由器配置为主要 DNS,而 ISP 的 DNS 列为辅助 DNS。我有几台具有静态 IP 的机器(那些在我的私有 DNS 中有条目的机器)。其他机器,包括作为这个问题主题的 Mac,通过 DHCP 获取它们的地址。
此网络上的 Windows 机器运行良好。他们将私有名称解析为我网络上的机器,并且还可以访问公共互联网。
我的单台 Mac 笔记本电脑不工作。它可以毫无问题地访问公共互联网,但它没有访问我的内部 DNS 来获取内部名称。例如,如果我对内部机器执行 ping 操作
ping internal.example.com
Run Code Online (Sandbox Code Playgroud)
我收到了数据包,但它显示了一个对应于 Hover 的 IP 地址。(显然 Hover 正在为没有公共路由的任何子域放置一个登录页面。)如果我这样做
nslookup internal.example.com
Run Code Online (Sandbox Code Playgroud)
但是,我在本地网络上获得了机器的正确(内部)IP。
最后,如果我再次执行 ping 但这次强制它使用我的内部 DNS (192.168.1.2),
ping internal.example.com 192.168.1.2
Run Code Online (Sandbox Code Playgroud)
我从本地网络上的正确机器得到响应。这似乎表明即使“本地”方法也可以做我想做的事,只要它使用正确的 DNS。
我找到了很多讨论这个问题的文章,但到目前为止我实际发现的要么已经过时,要么不是我的问题的完整解决方案。到目前为止我拼凑的东西: