问题排查 Clash Verge 专题
DNS 错误怎么办:DNS_PROBE_FINISHED、解析失败、DNS 污染与泄漏的处理
代理环境下 DNS 错误的排查:浏览器提示 DNS_PROBE_FINISHED_NXDOMAIN、部分网站解析到错误 IP、开代理后国内网站变慢、DNS 泄漏,对应客户端 DNS 未启用、DNS 污染、fake-ip 与 redir-host 模式、系统 DNS 缓存的原因与处理。
代理环境下的 DNS 问题有一个共同解法:让客户端接管解析,国内域名走国内 DNS,国外域名通过代理解析。理解这一点,多数 DNS 错误都能一次解决。
按现象分类
| 现象 | 原因 | 处理 |
|---|---|---|
| DNS_PROBE_FINISHED_NXDOMAIN | 解析失败 | 客户端 DNS 走代理 |
| 部分网站打不开或证书错误 | DNS 污染 | fake-ip 或 DoH |
| 开代理后国内网站慢 | 国内域名走了国外 DNS | DNS 分流 |
| 网站显示为错误的地区版本 | 解析到了其他地区 | 正常,可换节点 |
| DNS 泄漏 | 解析请求未经代理 | fake-ip、TUN 劫持 |
客户端接管 DNS
以 Clash Verge 为例,设置中启用 DNS:
- 增强模式: fake-ip。客户端对国外域名返回虚拟 IP,实际解析在节点侧完成,本地 DNS 完全不参与。这是最省心的模式。
- redir-host: 客户端在本地解析后再转发,需要保证解析走 DoH 或代理,否则仍可能被污染。
- 上游 DNS: 国内域名用国内 DNS(运营商或公共 DNS),国外域名用 DoH(通过代理)。
- fallback: 国外域名解析结果异常时使用备用 DoH。
详细配置见 Clash Verge DNS 设置,原理见 DNS 是什么。
清缓存
配置改动后清缓存才生效:
- Windows:
ipconfig /flushdns - macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - 浏览器:Chrome 访问 chrome://net-internals/#dns 清除
TUN 模式下
TUN 接管流量后,系统 DNS 请求也要进入客户端,否则解析仍走原路。TUN 设置中开启 DNS 劫持(dns-hijack)。
国内网站变慢
DNS 全部走了国外服务器,国内域名解析到了海外 CDN 节点。客户端 DNS 配置中确保国内域名使用国内 DNS(nameserver 指向国内),国外域名才用 DoH。
fake-ip 的注意事项
- 部分软件(尤其游戏、局域网工具)对虚拟 IP 不兼容,在 fake-ip-filter 中排除。
- 切换模式后需清缓存。
进阶
- IPv6: 本地有 IPv6 时解析可能返回 AAAA 记录绕过代理。客户端关闭 IPv6 解析。
- hosts 残留: 之前的软件改过 hosts,检查并清理。
- 路由器 DNS: 路由器强制劫持 53 端口时,用 DoH 或 TUN 劫持绕过。
DNS 导致的证书错误见 TLS 错误。
常见问题
- 开代理后提示 DNS_PROBE_FINISHED_NXDOMAIN?
- 域名解析失败。客户端启用内置 DNS 并走代理,清系统 DNS 缓存,切全局模式测试。
- 什么是 DNS 污染?
- 本地 DNS 查询被返回错误的 IP,导致连到错误服务器或连不上。让国外域名通过代理解析可以绕过。
- 开了代理国内网站变慢?
- 所有 DNS 都走了国外服务器。客户端 DNS 配置中让国内域名使用国内 DNS。