网络诊断 DNS 问题

DNS问题解决:DNS污染、DNS泄露与解析失败排查指南

开了代理网站还是打不开、AI 服务提示地区异常、节点域名解析失败,很可能是 DNS 问题。本文讲清 DNS 污染、DNS 泄露和解析失败三类常见问题的现象与原因,对比 Fake-IP 与 redir-host 模式,并给出 Windows、macOS 排查命令和 Clash 系客户端 DNS 推荐设置。

DNS 问题排查示意图:DNS 污染、DNS 泄露与解析失败三种情况的请求路径对比

核心结论

代理环境下的 DNS 问题主要有三类:DNS 污染导致域名被解析到错误地址、DNS 泄露导致真实地区暴露、解析失败导致节点或网站连不上。多数情况下,在 Clash 系客户端开启 DNS 模块并使用 Fake-IP 模式、配合 DoH 加密 DNS 和 TUN 模式即可解决。

文章目录 8 个章节
  1. 问题现象
  2. 可能原因
  3. 三类问题分别是怎么发生的
  4. 快速检查
  5. 详细排查
  6. 1. 对比不同 DNS 的解析结果
  7. 2. 清除 DNS 缓存
  8. 3. 检测 DNS 泄露
  9. 4. 查看客户端日志
  10. 解决方法
  11. 使用 Fake-IP 模式
  12. Clash 系客户端 DNS 参考配置
  13. 配合 TUN 模式
  14. 其他建议
  15. 仍然无法解决怎么办
  16. 相关问题
  17. 常见问题

问题现象

DNS 问题的表现往往很像“节点不好用”,容易误判。常见现象包括:

  • 开了代理,某些网站依然打不开,而同一节点访问其他网站正常;
  • 浏览器提示 DNS_PROBE_FINISHED_NXDOMAIN 或“找不到服务器 IP 地址”;
  • 客户端日志出现 dns resolve failed、lookup ... i/o timeout;
  • AI 服务提示地区不支持,但节点明明在支持地区;
  • 节点全部超时,更换网络后又恢复正常。

判断技巧:如果“IP 能通、域名不通”,基本可以锁定是 DNS 问题。

可能原因

问题类型 原因 典型表现
DNS 污染 明文 DNS 查询被篡改,返回错误 IP 特定网站打不开,解析结果异常
DNS 泄露 代理开启后 DNS 仍走本地运营商 AI 或流媒体判断出真实地区
解析失败 上游 DNS 不可用或超时 所有域名都打不开,或节点域名解析不出
缓存残留 系统或浏览器缓存了旧的错误结果 修改设置后问题依旧
模式不匹配 redir-host 模式下本地先做解析 部分网站被污染,泄露风险更高
多处设置冲突 浏览器 DoH、系统 DNS、客户端 DNS 同时生效 结果不稳定,时好时坏

三类问题分别是怎么发生的

DNS 污染:传统 DNS 查询使用明文 UDP 53 端口,查询结果可能在传输途中被篡改,返回错误或无法访问的地址。此时即使代理节点正常,客户端拿到的也是错误 IP,连接自然失败。

DNS 泄露:开启系统代理后,浏览器的网页流量走了代理,但域名查询仍可能由系统直接发给本地运营商的 DNS。这样一来,服务端虽然看到的是节点 IP,DNS 请求来源却暴露了真实网络位置,部分 AI 或流媒体服务会据此做出不同的判断。

解析失败:上游 DNS 服务器不可用、被本地网络屏蔽,或者客户端配置中填写了已失效的 DNS 地址,都会导致解析超时。如果连节点入口域名都解析不出来,就会表现为所有节点超时。

一个容易忽略的细节:浏览器的“安全 DNS”功能会绕过客户端直接发起加密查询,可能让客户端的分流规则失效。

快速检查

  1. 关闭代理后访问国内网站是否正常,排除本地网络故障;
  2. 在客户端中确认 DNS 模块已启用;
  3. 清空系统 DNS 缓存后重试(命令见下文);
  4. 浏览器暂时关闭“安全 DNS / DoH”设置,避免绕过客户端;
  5. 用同一节点在手机上访问同一网站,对比结果。

详细排查

1. 对比不同 DNS 的解析结果

# Windows:分别用系统 DNS 与指定 DNS 查询
nslookup example.com
nslookup example.com 223.5.5.5
# macOS
dig example.com +short
dig example.com @223.5.5.5 +short

如果不同 DNS 返回的地址完全不同,或者返回了明显无关的地址,说明可能存在污染。开启 TUN 模式时返回 198.18.x.x 属于 Fake-IP 的正常现象。

2. 清除 DNS 缓存

# Windows
ipconfig /flushdns
# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

浏览器也有独立缓存,Chrome 系浏览器可以在 chrome://net-internals/#dns 页面清除。

3. 检测 DNS 泄露

开启代理后访问任意一个 DNS 泄露检测网站,查看列出的 DNS 服务器:

  • 只出现节点所在地区或公共 DNS 服务商的服务器:基本没有泄露;
  • 出现你本地运营商的 DNS 服务器:存在 DNS 泄露。

DNS 泄露在“系统代理模式 + 浏览器自行解析”的组合下最常见。对 AI 用户来说,还需要一并检查 WebRTC 是否暴露真实 IP,详见 Region Not Supported 怎么办。

4. 查看客户端日志

在客户端日志中搜索 dns,关注解析超时的上游地址。如果某个上游 DNS 频繁超时,应从配置中移除或替换。

解决方法

使用 Fake-IP 模式

Fake-IP 与 redir-host 的区别如下:

对比项 Fake-IP redir-host
本地返回 虚拟 IP(如 198.18.x.x) 真实 IP
真实解析位置 代理规则命中时由节点远端解析 本地先解析
速度 快 稍慢
污染与泄露风险 低 较高
兼容性 个别应用需加入过滤名单 好

绝大多数用户建议选择 Fake-IP。遇到个别局域网设备或游戏不兼容,可以把相关域名加入 fake-ip-filter。

Clash 系客户端 DNS 参考配置

以下为 Mihomo 内核的常见写法,字段以你使用的客户端版本文档为准:

dns:
  enable: true
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  default-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  nameserver:
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
  proxy-server-nameserver:
    - https://dns.alidns.com/dns-query
  • default-nameserver 用于解析 DoH 服务器本身的域名,必须填 IP;
  • nameserver 使用 DoH 加密查询,避免明文被篡改;
  • proxy-server-nameserver 专门用来解析节点入口域名,可以减少“节点全部超时”的情况。

在 Clash Verge Rev 中可以通过“设置 → DNS 覆写”修改,具体步骤见 Clash Verge 使用教程。

配合 TUN 模式

系统代理只接管支持代理设置的程序,部分应用会绕过它自行解析 DNS。开启 TUN 模式 后,DNS 请求会被客户端统一接管,泄露问题能明显减少。

其他建议

  1. 浏览器的“安全 DNS”与客户端 DNS 二选一,避免冲突;
  2. 路由器上不要再额外设置 DNS 劫持或其他代理插件;
  3. 修改配置后记得清除系统与浏览器缓存。

仍然无法解决怎么办

  • 切换到手机热点测试,判断是否是宽带或路由器的 DNS 设置问题;
  • 把客户端恢复为订阅默认配置,排除自定义覆写带来的错误;
  • 如果节点域名始终解析失败,联系机场确认入口是否更换;
  • 仍然超时的话,参考节点超时怎么解决继续排查。

使用代理与 DNS 相关服务时,请遵守所在地法律法规以及各服务的使用条款。

相关问题

常见问题

什么是 DNS 污染?

DNS 污染是指域名查询在传输过程中被篡改,返回了错误或无法访问的 IP 地址。表现为某些网站即使开了代理也打不开,或者被解析到毫不相关的地址。使用加密 DNS 或让代理节点远端解析可以避免。

DNS 泄露会有什么影响?

DNS 泄露是指开启代理后,域名查询仍然通过本地运营商 DNS 发出。它会让部分服务通过 DNS 请求来源判断出你的真实地区,可能导致 AI 服务出现地区异常或风控提示。

Fake-IP 和 redir-host 应该选哪个?

大多数用户推荐 Fake-IP。它直接返回虚拟 IP,把真实解析交给节点远端完成,速度快且不容易泄露;redir-host 会在本地先做真实解析,兼容性更好,但更容易受污染和泄露影响。

开了 TUN 模式后 nslookup 返回 198.18 开头的地址正常吗?

正常。这是 Fake-IP 模式分配的虚拟地址,表示域名解析已经被客户端接管,真实连接会由客户端在节点端完成解析。

本文最后更新于 。网络服务与 AI 平台政策变化较快,如发现信息过时,欢迎通过联系我们反馈。