DNS 泄漏到底是什么

很多人把「开了代理仍被看到访问了哪些站」简单归因于节点或协议不够强,但在真实排障里,相当大比例的问题出在 DNS:你的设备或应用没有走代理侧的解析路径,而是把域名查询发给了本地运营商、路由器或公司内网的解析器。对旁观者来说,即便连接本身是加密的,明文或半明文的 DNS 查询仍可能暴露你关心哪些域名,这就是常说的 DNS 泄漏。

在 Clash / Mihomo 场景下,泄漏往往不是单一开关没开,而是系统解析器、浏览器安全 DNS、应用内硬编码解析、IPv6 旁路与内核 dns 配置没有对齐。下面先把概念厘清,再落到可复制的配置与验证步骤。

Clash 的 DNS 模块在做什么

Mihomo(Clash Meta)继承并扩展了 Clash 的 DNS 处理:根据规则决定某个域名由谁解析、解析结果如何参与分流。你通常在 YAML 里看到 dns: 段,配合 enhanced-mode(常见为 fake-ipredir-host)控制「连接建立前域名如何映射到 IP」。

fake-ip 会在本地为大量域名返回虚拟地址,由内核在真正发起连接时再完成解析与策略匹配,能减少系统解析器与代理路径打架的概率;但若规则、嗅探或绕过列表不一致,也可能出现站点异常,需要对照文档微调。redir-host 更贴近传统「先解析再连」模型,调试直观,却要更注意解析是否仍落在系统或运营商侧。两种模式没有绝对优劣,关键是与当前分流、TUN 模式和使用场景自洽。

内核行为会随版本迭代调整,若你从旧版迁移,建议先阅读《Clash Meta(Mihomo)升级完整指南》,避免沿用已废弃字段却以为「DNS 已接管」。

配置骨架:nameserver、fallback 与 policy

一个可维护的 dns 段通常包含三层逻辑:默认上游nameserver)、争议或敏感解析的备用上游fallback)、以及按域名指定解析器nameserver-policy 等,具体键名以你所用内核文档为准)。

实践上建议遵循几条原则:默认上游延迟稳定,避免代理未就绪时唯一出口是海外 DoH 导致冷启动极慢;fallback 仅在触发污染检测等条件时使用,不要无差别双查放大指纹;国内常用域名可直连可信本地或 DoH,海外或易被干扰的域名再走加密通道。下面是一段示意结构(请按你的网络与订阅替换地址,勿照抄为生产唯一真值):

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - https://dns.example-a.com/dns-query
  fallback:
    - https://dns.example-b.com/dns-query
  fallback-filter:
    geoip: true
    geoip-code: CN

注意:fallback-filter 一类选项会显著影响「何时启用备用上游」,改错容易导致该走加密的没走、该快的变慢。每次只改一小项,并用下文测试方法复核。

DoH / DoT:加密解析与性能的平衡

DoH(DNS over HTTPS)与 DoT(DNS over TLS)能把查询封装进 TLS,降低链路窃听与篡改概率。但加密不等于零泄漏:若系统或浏览器仍并行使用另一套解析,你仍会看到「测试站显示多家 DNS」的现象。此外,DoH 服务器地理距离与链路质量会直接体现在首包与解析耗时上,这与《Clash 提速技巧》里提到的「上游要比名字更重要」是同一回事。

若你使用企业网络或校园网,还要确认443/853 端口策略是否限制 DoH/DoT;被拦截时客户端可能默默回落到明文 UDP,表面「配置无误」实则已旁路。

系统侧:别让第二套解析器抢答

在 Windows、macOS 与 Android 上,「系统 DNS」「专用网络 DNS」「浏览器安全 DNS」可能同时存在。Clash 客户端若仅开启系统代理而不接管全机流量,部分应用仍会直接使用系统解析器。切换到 TUN / 虚拟网卡模式后,覆盖范围更大,但要配合正确的路由与排除列表,避免本地局域网或内网域名被误送代理。

路由器层面若开启了运营商默认 DNS、家长控制或「宽带助手」插件,也可能在 Clash 之前就改写查询。排障时可以先在单一设备直连仅开 Clash两种状态下各跑一次泄漏测试,对比差异来自系统还是出口。

IPv6 与 WebRTC:容易被忽略的旁路

IPv6 若未与代理路由策略一致,可能出现「流量走隧道,解析或辅助连接仍暴露真实前缀」的错觉问题。若你不需要 IPv6,可在系统或路由器上暂时关闭做对照;若需要,应确保整套路由与 DNS 策略在 IPv4/IPv6 上语义一致

浏览器 WebRTC 可能暴露本机候选地址,这与 DNS 泄漏不同,但会在同一类「隐私测试站」里一并展示。若你追求更干净的指纹,需在浏览器层关闭 WebRTC 或限制候选,与 Clash 配置分开处理。

如何自测是否真的防泄漏

推荐使用多家在线 DNS 泄漏检测站点(在开启代理后分别测试),观察列出的解析器归属地是否均符合预期。若仍出现本地运营商 DNS,按顺序检查:是否仅浏览器走了代理、系统 DNS 是否仍活跃、是否某应用自定义了解析、IPv6 是否旁路。

进阶用户可抓包或在客户端开启调试日志,核对查询发出网卡与目标地址;但请注意抓包范围与合规要求,不要在不可信网络暴露敏感信息。

与分流规则对齐:DNS 与 RULE 要同一张地图

仅写好 dns 段但规则把大量域名直接 DIRECT,解析仍可能落在直连链路上,这是策略设计上的「泄漏」而非内核 bug。若你希望敏感域名统一经代理解析,需要让对应域名的连接与解析路径都落在同一策略意图下。

大规模域名列表建议用 rule-providers 维护,可读性与更新节奏更好;可与《Rule Providers 进阶指南》搭配使用,避免主配置文件无限膨胀、难以 diff。

合规与边界

本文仅讨论开源代理客户端的一般 DNS 配置与隐私保护思路,不构成对任何地区法律法规的规避建议。请在你所在地法律允许的范围内使用网络技术,并尊重服务提供商条款与他人权益。

小结

Clash DNS 防泄漏的本质,是明确「谁在解析、解析请求发往哪里、是否与分流一致」,再用加密上游与合理的 fallback 策略压缩暴露面。没有一劳永逸的复制粘贴配置,只有与你网络环境匹配的迭代。

相比在论坛碎片信息里反复试错,一款与 Mihomo 同步迭代、预置合理 DNS 与分流模板、又能平滑升级的 Clash 发行版,往往能把维护成本压得更低。若你准备落地一套稳定环境,可先前往本站下载页获取对应系统客户端,小流量验证通过后再逐步加规则。→ 立即免费下载 Clash,开启流畅上网新体验