DNS 错误怎么排查?DNS_PROBE_FINISHED、解析失败与 DNS 泄漏
浏览器提示DNS_PROBE_FINISHED_NXDOMAIN、找不到服务器IP地址、域名无法解析?本文解释代理客户端中DNS的工作方式,给出恢复默认DNS、清除系统缓存、检查DNS泄漏等排查步骤。
浏览器显示“DNS_PROBE_FINISHED_NXDOMAIN”“找不到服务器的 IP 地址”“此网站无法访问”,往往不是网站挂了,而是 DNS 解析 出了问题。开启代理客户端后,DNS 的工作方式会发生变化,理解这一点就很容易排查。
DNS 是做什么的
你在浏览器输入 chatgpt.com,电脑需要先问 DNS 服务器“这个域名对应的 IP 是多少”,拿到 IP 后才能连接。如果这一步失败,后面的一切都无法进行。
使用代理客户端时,DNS 查询通常由客户端接管:国内域名用国内 DNS 解析,海外域名交给代理节点解析,这样既快又准确。一旦这套机制被打乱,就会出现解析失败。
常见错误提示
| 提示 | 含义 |
|---|---|
| DNS_PROBE_FINISHED_NXDOMAIN | 域名不存在或解析失败 |
| DNS_PROBE_FINISHED_NO_INTERNET | 无法连接 DNS 服务器 |
| 找不到服务器的 IP 地址 | 解析失败 |
| ERR_NAME_NOT_RESOLVED | 域名无法解析 |
排查步骤
1. 确认域名拼写正确
先排除最简单的原因:网址是否输错、是否是已经失效的旧域名(例如机场换了新域名)。
2. 恢复客户端默认 DNS 设置
很多人参考网上教程修改过客户端的 DNS 配置,改错后会导致大面积解析失败。在客户端设置中恢复默认 DNS(例如 Clash Verge Rev 的 DNS 覆写选项),然后重启客户端。
3. 清除系统 DNS 缓存
系统会缓存之前的解析结果,错误的结果也会被缓存。
- Windows:在命令提示符中运行
ipconfig /flushdns; - macOS:在终端运行
sudo dscacheutil -flushcache并重启网络; - 浏览器:Chrome 可在内部页面清除主机缓存,或直接重启浏览器。
4. 关闭浏览器的“安全 DNS”
浏览器自带的安全 DNS(DNS over HTTPS)会绕过客户端直接查询,可能与代理的分流逻辑冲突。遇到解析异常时,可以暂时关闭该选项测试。
5. 开启 TUN 模式
系统代理模式下,部分程序的 DNS 查询不会经过客户端。开启 TUN 后,DNS 由客户端统一处理,解析更一致,见 Clash Verge Rev TUN 模式教程。
什么是 DNS 泄漏
如果海外域名的 DNS 查询没有经过代理,而是直接发送给了本地运营商的 DNS,就称为 DNS 泄漏。它可能导致:
- 部分海外网站解析到错误或被污染的地址,无法打开;
- AI 平台检测到 DNS 地区与出口 IP 地区不一致。
可以使用 DNS 泄漏检测网站检查:显示的 DNS 服务器位于节点所在国家,说明没有泄漏;显示为本地运营商,则存在泄漏。开启 TUN 并使用客户端默认 DNS 设置即可解决。
什么时候需要换机场
如果恢复默认设置、清除缓存后仍然只有部分海外域名无法解析,而换一个节点就恢复,说明问题出在某个节点的 DNS 处理上,可以联系机场客服反馈。所有节点都存在同样问题时,则需要检查本地网络或更换客户端测试。
更多网络问题见 网络问题排查。
手机端的 DNS 问题
安卓手机的“私人 DNS”功能与电脑浏览器的安全 DNS 类似,也可能绕过代理客户端的 DNS 处理。如果手机上只有部分网站无法解析,可以在系统设置的网络选项中暂时关闭私人 DNS 后测试。iPhone 用户如果安装了第三方 DNS 描述文件,也可以先移除再试。
常见问题
DNS 泄漏有什么影响?
DNS 泄漏指域名查询没有经过代理,而是直接发给了本地运营商。它可能导致部分网站解析到错误地址,也会让访问记录暴露给本地网络。开启 TUN 模式并使用客户端默认的 DNS 设置可以避免。
能不能直接把系统 DNS 改成公共 DNS?
可以作为临时测试手段,但使用代理客户端时,更推荐让客户端接管 DNS(默认设置即可),避免出现部分请求绕过代理的情况。