网络诊断 DNS 问题

DNS 泄露怎么检测和修复?代理环境下的检测步骤与修复方法

开了代理还担心 DNS 泄露暴露真实地区?本文给出浏览器页面检测与 nslookup、dig 命令行检测两种方法,教你看懂检测结果中的服务器列表,并按浏览器安全 DNS、仅开系统代理、Windows 多网卡并发解析、IPv6 未接管等原因逐项修复 DNS 泄露。

DNS 泄露怎么检测和修复?代理环境下的检测步骤与修复方法

核心结论

检测 DNS 泄露时,开启代理后查看“是谁在替你查询域名”:结果中只出现节点地区或公共 DNS 服务器即为正常,出现本地运营商的 DNS 服务器就是泄露。修复的核心是让客户端接管全部 DNS 请求:开启 TUN 模式与 DNS 劫持,使用 Fake-IP,关闭浏览器自带的安全 DNS,并处理 IPv6 与 Windows 多网卡解析。

文章目录 8 个章节
  1. 问题现象
  2. 可能原因
  3. 三种检测方式的差别
  4. 快速自查
  5. 逐步排查
  6. 注意事项
  7. 仍然无法解决
  8. 相关问题
  9. 常见问题

问题现象

DNS 泄露指的是:开启代理后,网页流量已经从节点出去,但域名查询仍然由本地网络发出,交给本地运营商的 DNS 服务器处理。它本身不会让网页打不开,所以很难直接察觉,常见的间接表现有:

  • 出口 IP 已经是支持地区,但 AI 服务仍偶尔提示地区异常或触发额外验证;
  • 同一网站在不同设备上表现不一致,某些页面加载到了不符合节点地区的内容;
  • 分流规则明明设置了走代理,部分域名的解析结果却与本地直连时相同;
  • 在 DNS 泄露检测页面中,看到了自己宽带运营商的 DNS 服务器。

DNS 污染、解析失败等更基础的问题,以及 Fake-IP 与 redir-host 的区别,已在 DNS 问题排查指南中讲过,本文只聚焦“怎么测出泄露、怎么修好泄露”。

可能原因

原因 判断方法 解决方法
只开系统代理,部分程序自行解析 关闭 TUN 时泄露,开启 TUN 后消失 开启 TUN 模式并启用 DNS 劫持
浏览器开启了安全 DNS 关闭浏览器安全 DNS 后结果变化 关闭浏览器安全 DNS,由客户端统一处理
Windows 多网卡同时解析 TUN 开启后仍出现运营商 DNS 开启严格路由,必要时关闭智能多宿主解析
IPv6 查询未被接管 检测结果中出现 IPv6 地址的运营商服务器 客户端开启 IPv6 接管,或暂时关闭系统 IPv6
redir-host 模式在本地先解析 切换 Fake-IP 后泄露减少 改用 Fake-IP 模式
DNS 上游直接从本机发出 泄露结果中显示你配置的 DNS 但位置在本地 让境外域名由节点远端解析

三种检测方式的差别

检测 DNS 泄露的原理是:让你的设备去解析一个检测服务专门准备的随机域名,然后由检测服务的权威服务器记录“是哪台 DNS 服务器来查询的”。这个记录下来的服务器,就是实际替你做递归解析的那一台。

  1. 浏览器检测页面:最直观,但只能反映浏览器这一条路径;
  2. 命令行查询:反映系统解析器和终端程序的路径,适合检查 AI 编程工具等命令行场景;
  3. 客户端日志:能看到每条 DNS 请求发给了哪个上游,适合定位具体配置问题。

三种方式结果不一致很常见,这正好说明不同程序的解析路径不同,需要分别处理。

快速自查

  1. 开启代理,在浏览器中打开任意一个 DNS 泄露检测页面,运行扩展测试;
  2. 看结果中是否出现你所在城市或宽带运营商的名称;
  3. 打开浏览器设置,确认“使用安全 DNS”的状态;
  4. 确认客户端的 DNS 模块已启用,并记录当前是系统代理还是 TUN 模式;
  5. 分别在开启和关闭 TUN 的情况下各测一次,对比差异。

逐步排查

  1. 查看系统当前使用的 DNS 服务器。

    # Windows:列出每个网卡配置的 DNS
    Get-DnsClientServerAddress -AddressFamily IPv4 | Format-Table InterfaceAlias, ServerAddresses
    # macOS
    scutil --dns | grep nameserver

    开启 TUN 后,理想情况是系统解析请求被导向客户端的虚拟网卡;如果物理网卡上仍配置着运营商 DNS,就要留意多网卡并发解析的问题。

  2. 用命令行查看实际递归服务器。 下面的 TXT 查询会返回“替你向权威服务器发起查询的 DNS 出口 IP”:

    # Windows
    nslookup -type=txt o-o.myaddr.l.google.com
    Resolve-DnsName -Type TXT o-o.myaddr.l.google.com
    # macOS / Linux
    dig TXT o-o.myaddr.l.google.com +short

    返回的地址如果属于你本地的宽带运营商,说明系统解析这条路径存在泄露;返回公共 DNS 服务商或节点所在地区的地址,一般说明查询已经被接管。结果的具体格式以实际返回为准。

  3. 清缓存后复测。 修改设置后先清除缓存,否则会看到旧的结果:

    ipconfig /flushdns
    sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  4. 开启 TUN 与 DNS 劫持。 在 Clash Verge Rev 中开启 TUN 模式后,确认 DNS 劫持相关选项已启用(Mihomo 配置中为 tun.dns-hijack,sing-box 中通过路由规则劫持 DNS,字段以实际版本文档为准)。同时建议开启严格路由(Mihomo 的 strict-route、sing-box 的 strict_route),它能阻止 Windows 绕过虚拟网卡向物理网卡的 DNS 发出查询。TUN 的开启步骤见 Clash Verge TUN 模式设置。

  5. 处理 Windows 智能多宿主解析。 Windows 默认会同时向多个网卡的 DNS 发出查询并采用最快的结果,这会导致即使开了 TUN 也有请求从物理网卡发出。优先使用客户端的严格路由;专业版系统也可以在组策略“计算机配置 → 管理模板 → 网络 → DNS 客户端”中启用“关闭智能多宿主名称解析”,具体名称以系统版本为准。

  6. 关闭浏览器安全 DNS。 Chrome 与 Edge 在“隐私和安全 → 安全 → 使用安全 DNS”中关闭;Firefox 在网络设置的 DNS over HTTPS 选项中关闭。让浏览器把解析交给系统,再由客户端统一处理。

  7. 处理 IPv6。 如果检测结果中出现 IPv6 地址的运营商服务器,而你的客户端没有接管 IPv6,可以在客户端中开启 IPv6 接管,或暂时在系统网卡设置中关闭 IPv6 后复测。

  8. 最后单独检查 WebRTC。 WebRTC 泄露与 DNS 泄露是两回事,它暴露的是 IP 而不是 DNS 服务器,需要在专门的 WebRTC 检测页面中确认,方法见 Region Not Supported 怎么办。

注意事项

  • 检测前先关闭其他 VPN、加速器和浏览器代理扩展,避免多个程序同时处理 DNS;
  • 检测结果里出现多个公共 DNS 节点是正常的任播现象,不必逐个追究;
  • 修复泄露的目的是让网络环境前后一致,不要把它当作规避服务条款的手段。
  • 每次更换客户端、升级内核或重装系统后,都建议重新检测一次,因为默认设置可能已经变化。

仍然无法解决

  1. 把客户端恢复为订阅默认配置,再只开启 TUN 与 Fake-IP,逐项加回自定义设置;
  2. 在客户端日志中筛选 dns 关键词,确认查询发往了哪个上游;
  3. 如果开启 Fake-IP 后出现网站打不开等副作用,参考 Fake-IP 模式问题排查;
  4. 路由器上如果运行了其他代理插件或 DNS 劫持,先关闭再测试。

请遵守当地法律法规与服务条款,合理使用网络工具。

相关问题

常见问题

DNS 泄露检测结果里出现了多个国家的服务器,正常吗?

如果都是公共 DNS 服务商(比如你在客户端里配置的加密 DNS)的服务器,属于正常的任播分布;需要关注的是有没有出现你本地宽带运营商名称的服务器。

只开系统代理会不会 DNS 泄露?

有可能。浏览器通过代理访问网页时,域名通常交给代理远端解析,但不走代理的程序、浏览器的预解析以及系统服务仍会使用本地 DNS。开启 TUN 模式并劫持 DNS 能明显减少这类泄露。

DNS 泄露会导致 AI 服务提示地区不支持吗?

它是地区判断的辅助信号之一,影响通常小于出口 IP 本身。但在出口 IP 正常仍反复出现地区异常时,值得把 DNS 泄露和 WebRTC 泄露一起排查。

开了 TUN 模式为什么还会泄露?

常见原因有三个:浏览器开启了自带的安全 DNS,绕过了客户端;Windows 同时向多个网卡的 DNS 发出查询;IPv6 查询没有被接管。逐项关闭或接管后再检测。

加密 DNS(DoH)能完全防止泄露吗?

不能完全替代。DoH 能防止查询内容被篡改和窥探,但如果查询是从本机直接发往 DoH 服务器,服务器仍会看到你的真实网络位置。最好让 DNS 请求也经过代理或由节点远端解析。

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