客户端配置中心标志⌘ 搜索

DNS泄漏检测:代理客户端下如何判断与修复

更新于 2026-10-18 · peizhibang.com

简答:开启代理客户端后,先关闭客户端运行一次标准测试作为基线,再开启系统代理或TUN运行标准和扩展测试,重点比较检测到的DNS服务商、网络出口与客户端配置是否一致。若出现本地运营商DNS、路由器DNS或浏览器独立DNS,应检查TUN接管、IPv6、fake-ip/redir-host、DoH设置和DNS分流。

定义:DNS泄漏是指设备已经启用代理或隧道,但域名解析请求仍由预期之外的系统、路由器、运营商或浏览器独立DNS路径处理。

一、DNS泄漏检测到底检查什么

DNS负责把域名解析为IP地址。设备可能同时存在系统DNS、路由器转发、代理客户端DNS、浏览器安全DNS和应用自身的解析路径,因此检测结果反映的是测试页面实际观察到的解析路径,不一定等于网卡设置里填写的DNS。

检测时不要只看DNS服务器数量。一个解析服务可能使用多个服务器,扩展测试也会主动增加查询范围;更有参考价值的是检测到的服务商、网络出口、地区以及结果是否符合当前客户端的设计。可以使用DNSLeakTest关于Standard Test与Extended Test的说明了解两种测试的差异,再用BrowserLeaks DNS Leak Test做一次交叉观察。

如果关闭客户端和开启客户端后的结果完全相同,不能立即断定发生泄漏,还要检查浏览器是否启用了独立DoH、测试页面是否使用了旧标签页、客户端是否只接管了系统代理,以及当前应用是否真正经过TUN或其他透明接管方式。

二、推荐的DNS泄漏检测步骤

  1. 记录关闭状态基线:关闭代理客户端、系统代理和TUN,使用新的浏览器标签页打开DNSLeakTest,先运行Standard Test,记录DNS服务商、IP、地区和测试时间。
  2. 开启日常使用模式:按照平时的使用方式开启客户端。分别记录规则模式、全局模式、系统代理和TUN状态,不要只测试一个与日常不同的模式。
  3. 清理Windows DNS缓存:打开“终端”或“命令提示符”,执行ipconfig /flushdns。微软文档说明,该命令会清空并重置DNS客户端解析缓存,可用于DNS排查;命令说明见Microsoft Learn 的 ipconfig 文档。
  4. 重新运行两类测试:先运行Standard Test快速观察,再运行Extended Test复核。不要把Extended Test显示的多个服务器直接等同于泄漏,应结合服务商归属、出口和客户端DNS配置判断。
  5. 交叉验证:在同一客户端、同一模式下,用BrowserLeaks的DNS测试再次观察;如果两个页面结果不同,先检查浏览器缓存、浏览器DoH、测试时间和客户端DNS缓存,再决定是否修改配置。
  6. 换网络复测:分别在家庭Wi-Fi、移动热点或办公网络中测试。若只有某一个网络出现异常,问题可能与该网络的IPv6、路由器转发或DNS策略有关,不能只凭单次页面结果下结论。

三、fake-ip、redir-host与检测结果的关系

以mihomo为例,官方DNS配置文档将enhanced-mode定义为fake-ip或redir-host,默认值为redir-host;同时还区分nameserver、fallback、proxy-server-nameserver等用途,具体字段应以mihomo官方DNS配置文档为准。

模式或路径检测结果应如何理解排查重点
redir-host客户端通常保留真实解析结果再参与连接处理,页面看到的解析服务商更容易与实际上游DNS对应,但仍可能受分流、缓存和浏览器DoH影响。核对nameserver、fallback、DNS分流和应用是否经过客户端。
fake-ip客户端会向应用返回配置范围内的合成地址。若上游解析由客户端或代理出口发起,检测页显示的DNS服务商可能反映出口一侧的解析器,而不是本机网卡填写的DNS;这只是基于解析路径的可能解释,不能单凭页面判定泄漏。查看enhanced-mode、fake-ip-filter、proxy-server-nameserver和客户端日志。
浏览器独立DoH浏览器可能绕过系统DNS或客户端的部分DNS策略,导致浏览器测试结果与其他应用不同。检查Chrome或Firefox的安全DNS状态,并在关闭后复测。
IPv6单独解析如果只配置了IPv4侧的DNS路径,IPv6连接可能出现另一组解析结果。同时检查IPv4、IPv6、TUN路由和客户端DNS监听。

因此,fake-ip模式下看到“不同地区”或“不同服务商”并不自动等于泄漏;更稳妥的做法是把检测页面结果与客户端模式、DNS字段、日志和应用代理路径一起比对。

四、Windows、Chrome与Firefox的具体修复步骤

  1. 先确认Windows网络DNS:进入“设置—网络和Internet”,打开当前Wi-Fi或以太网连接,查看DNS服务器和DNS over HTTPS设置。Windows官方说明中,DNS over HTTPS可选择关闭、自动模板或手动模板,并可单独控制失败时是否回退到明文DNS;详情见Microsoft Support的Windows网络设置说明。
  2. 处理Windows DoH回退:如果你的目标是不允许DoH失败后回到明文DNS,应关闭“Fallback to plaintext”或对应的允许明文回退选项;如果关闭回退后无法解析,则说明当前DoH服务或网络路径不可用,需要先恢复可用解析,再判断是否由客户端接管。
  3. 检查Chrome:打开Chrome“设置—隐私和安全—安全”,在“高级”区域找到“使用安全DNS”。Google官方说明,Chrome自动模式遇到问题时可能改用未加密解析;选择自定义服务提供商后,Chrome不会默认回到未加密模式。具体入口见Google Chrome安全设置说明。
  4. 检查Firefox:打开“设置—隐私与安全”,找到“DNS over HTTPS”,进入“高级设置”。Firefox提供默认保护、增强保护、最大保护、自定义保护和关闭等选项;默认保护可能在网络、企业策略或其他条件影响下回退或停用,具体见Mozilla Firefox DoH保护级别说明。
  5. 检查客户端DNS分流:不要只改一个DNS字段。确认默认解析器、主要解析器、备用解析器、代理节点域名解析器和按域名匹配的策略是否分别承担了不同任务;如果客户端允许使用系统DNS作为兜底,也要确认这种回退是否符合你的目标。
  6. 检查TUN和IPv6:需要覆盖不遵循系统代理的应用时,确认客户端TUN、自动路由、网络权限和IPv6处理均已启用或按方案配置。若问题只在IPv6网络出现,可暂时关闭IPv6做对照,但长期设置应以设备、客户端和网络环境的兼容性为准。

五、macOS、iOS与Android如何复测

六、检测结果对照表与复测清单

现象可能原因建议动作
出现本地运营商或路由器DNS系统DNS、路由器转发或客户端接管未生效检查TUN、DNS监听、系统代理和客户端日志。
开启客户端前后结果完全相同客户端未接管当前应用,或浏览器使用独立DoH关闭浏览器安全DNS,换新标签页并重新测试。
只有IPv6网络出现另一组DNSIPv6侧没有同步应用DNS或路由策略检查IPv6地址、DNS、TUN路由和客户端IPv6选项。
fake-ip模式显示的DNS与系统设置不同上游解析可能由客户端或代理出口发起,页面观察到的是另一段解析路径结合mihomo DNS字段和日志判断,不要单凭服务商名称判定泄漏。
两个检测页结果不同测试时机、缓存、DoH、查询类型或页面实现不同清理缓存,统一客户端模式,在新标签页和另一网络中复测。
  1. 记录关闭客户端时的DNS结果。
  2. 开启系统代理后测试。
  3. 开启TUN或全局接管后测试。
  4. 分别运行Standard Test和Extended Test。
  5. 执行ipconfig /flushdns后重新测试。
  6. 检查Chrome或Firefox的安全DNS设置。
  7. 对照IPv4和IPv6结果。
  8. 在至少两种网络环境中复测,并保存客户端日志。

如果问题表现为解析失败而不是路径异常,可继续查看本站的DNS解析异常排查;如果表现为导入配置后无网络,则参考导入后无网络排查。

七、常见问题

DNSLeakTest显示多个DNS服务器,是不是一定泄漏?

不一定。多个结果可能来自同一DNS服务商的不同服务器,也可能是扩展测试主动发起更多查询。应结合服务商、出口、客户端模式和配置判断。

fake-ip模式下检测到的DNS不是系统DNS,是否说明配置错误?

不一定。fake-ip会向应用返回合成地址;如果上游解析由客户端或代理出口完成,检测页面可能观察到出口侧解析器。应检查客户端的DNS模式、分流字段和日志,不能只看Windows网卡设置。

Windows执行ipconfig /flushdns后还需要重启电脑吗?

通常先关闭测试页面、执行命令并重新打开新标签页即可。微软将ipconfig /flushdns定义为清空DNS客户端解析缓存的排查命令;如果仍异常,再重启浏览器或客户端进行对照。

Chrome安全DNS应该开启还是关闭?

没有适用于所有网络的统一答案。如果希望由代理客户端统一接管DNS,可先关闭Chrome独立安全DNS做对照;如果希望浏览器单独使用DoH,则应选择明确的服务提供商,并确认它不会绕过你的客户端设计。

Firefox的默认保护为什么可能与系统DNS结果不同?

Firefox的默认保护会根据网络条件、策略和可用性调整DoH状态,可能使用安全DNS,也可能回退或停用。排查时进入“设置—隐私与安全—DNS over HTTPS—高级设置”确认实际状态。

DoH或DoT开启后还需要做DNS泄漏检测吗?

需要。DoH和DoT主要保护设备与解析器之间的传输,但设备仍可能同时存在浏览器DNS、系统DNS、客户端DNS和路由器转发。检测的重点是确认实际解析路径是否符合预期,而不是只看是否使用了加密协议。

八、结论与参考资料

DNS泄漏检测应采用“关闭客户端建立基线—开启实际模式—清理缓存—检查浏览器独立DNS—对照fake-ip或redir-host配置—跨网络复测”的顺序。检测结果中出现多个DNS、不同地区或不同服务商,都需要结合解析路径判断;尤其是fake-ip模式,页面看到的DNS可能反映客户端或代理出口一侧的上游解析器。

本文核对的资料包括:DNSLeakTest测试说明、BrowserLeaks DNS测试、mihomo官方DNS配置文档、Microsoft Windows网络设置文档、Microsoft Learn ipconfig文档、Google Chrome安全DNS说明和Mozilla Firefox DoH说明。

常见问题

DNSLeakTest显示多个DNS服务器,是不是一定泄漏?

不一定。多个结果可能来自同一DNS服务商的不同服务器,也可能是扩展测试主动发起更多查询。应结合服务商、出口、客户端模式和配置判断。

fake-ip模式下检测到的DNS不是系统DNS,是否说明配置错误?

不一定。fake-ip会向应用返回合成地址;如果上游解析由客户端或代理出口完成,检测页面可能观察到出口侧解析器。应检查客户端DNS模式、分流字段和日志。

Windows执行ipconfig /flushdns后还需要重启电脑吗?

通常先关闭测试页面、执行命令并重新打开新标签页即可。若仍异常,再重启浏览器或客户端进行对照。

Chrome安全DNS应该开启还是关闭?

没有适用于所有网络的统一答案。如果希望由代理客户端统一接管DNS,可先关闭Chrome独立安全DNS做对照;如果使用浏览器DoH,则应确认它不会绕过既定客户端路径。

Firefox的默认保护为什么可能与系统DNS结果不同?

Firefox默认保护会根据网络条件、策略和可用性调整DoH状态,可能使用安全DNS,也可能回退或停用。应在“设置—隐私与安全—DNS over HTTPS—高级设置”确认实际状态。

DoH或DoT开启后还需要做DNS泄漏检测吗?

需要。DoH和DoT主要保护设备与解析器之间的传输,但系统、浏览器、客户端和路由器仍可能存在不同解析路径。

相关阅读

参考资料

  1. DNSLeakTest:Standard Test与Extended Test说明
  2. BrowserLeaks:DNS Leak Test
  3. mihomo官方DNS配置文档
  4. Microsoft Support:Windows网络与DNS设置
  5. Microsoft Learn:ipconfig命令与/flushdns参数
  6. Google Chrome帮助:安全DNS设置
  7. Mozilla Firefox帮助:DNS over HTTPS保护级别