昨天,在我运行 macOS 10.15.7 (Catalina) 的 MacBook 上,一个域名停止解析。Ping 无法访问它,浏览器也无法访问它,而计算机上的所有其他域名/网站都正常:
- 它可以解决同一 Wi-Fi 网络上的另一台计算机和我的 iPhone 的问题。
- Ping 失败,并显示无法解析/未知主机错误消息。
- traceroute 还给了我一个未知主机错误。
- 另一方面,Dig 确实找到了正确的 IP。
- 主机也找到了正确的IP。
- 如果我将域名和它的 IP 添加到我的主机文件中,它就可以正常工作。
我尝试过的事情:
- 我尝试重新启动计算机和路由器,但没有成功。
- 我尝试“忘记”然后重新连接到 Wi-Fi 网络,但没有成功。
- 我尝试刷新 dns(
sudo killall -HUP mDNSResponder;sudo killall mDNSResponderHelper;sudo dscacheutil -flushcache
),但没有成功。
对于可能导致问题的原因,我唯一的线索是昨天下午我通过 VPN(FortiClient VPN)连接到我雇主的网络,当我正在编辑属于该域的网站时,VPN 崩溃了,问题就是从那时开始的。
在发生故障时,域名将通过 VPN 进行解析,不知何故,这导致我的机器解析域名时出现更持久的问题(但刷新 DNS 应该可以毫无问题地解决这个问题)。我尝试卸载并重新安装 VPN 软件,但也没有解决问题。
答案1
删除位于的该域名的 DNS 解析器文件/etc/resolver/
。
这是 FortiClient 的一个已知问题,在很多情况下,当 VPN 连接中断时都会出现该问题。解决方案如下。
关闭并退出 FortiClient。
打开终端并转到 DNS 解析器目录:
cd /etc/resolver/
做一个目录列表(
ls -la
)并查看您公司的 VPN 域名是否在其中;在本例中,我们假设它是example.com
。如果存在,则运行此命令来删除杂散的 DNS 解析器文件:
sudo rm -f example.com
执行此操作后,您应该能够example.com
毫无问题地访问之前无法访问的域名和主机名。您也可以重新启动 FortiClient 以使用 VPN。一切都会恢复正常。
正在发生或没有发生的事情是,VPN 使用解析器文件通过指向内部的 DNS 服务器来帮助您解析特定于该 VPN 网络的主机名example.com
。
如果您的 VPN 连接突然丢失 — — 但 DNS 解析器文件仍然存在 — — 那么您就没有 VPN 连接,example.com
但 DNS 解析器文件仍会尝试连接到那些内部 DNS 服务器……但无法连接……因此才会出现您看到的错误。