主题
怎么确认 DNS 在泄漏?从检测到修复的完整流程
判断标准不复杂:开着代理访问泄漏检测网站,结果里出现运营商或本地归属的 DNS 服务器,就是泄漏。修复方向是让客户端接管解析——启用内置 DNS,配合 fake-ip 或 TUN 的端口劫持。
故障表现
泄漏没有明显的「故障感」:网页照常打开、速度不受影响,问题藏在看不见的地方——
- 泄漏检测页列出的解析服务器归属地是本地运营商,而非节点所在地区;
- 依赖解析位置调度的服务出现错乱,比如流媒体的地区判定与节点不符;
- 客户端日志显示境外域名的查询发给了国内上游。
所谓泄漏,指域名查询没有在代理隧道内完成,而是以明文发给了隧道之外的服务器——访问了哪些网站的记录因此留在本地网络一侧。污染、解析失败等其他 DNS 问题的区分见 DNS 问题总览。
最常见原因
- 本地解析模式(redir-host):客户端先在本地把域名解析成 IP 再决定分流,这一步查询往往直接走了系统或运营商 DNS;
- 系统代理的覆盖盲区:系统代理只对主动读取代理设置的应用生效,命令行工具和部分软件仍用系统解析器直连查询;
- TUN 模式没有劫持 DNS:接管了流量却放过了 53 端口,查询照旧发往运营商;
- 浏览器「安全 DNS」:浏览器内置的 DoH 功能自行直连第三方解析服务,绕过了代理客户端的 DNS 模块;
- 多个代理工具并存:加速器、VPN 与代理客户端同时运行,解析路径被另一方接管。
快速判断方法
- 开着代理访问泄漏检测网站(常用入口见工具页),执行扩展测试并多测几轮;
- 看结果列表的归属:全部为节点地区或代理远端的服务器,基本没有泄漏;混入了本地运营商的地址,泄漏确认;
- 打开客户端日志,观察境外域名的每条查询用了哪个上游;
- 换一个节点再测一轮,正常情况下解析归属应随节点变化。
分客户端修复要点
Clash 系(Clash Verge、Clash Meta 等)
- 启用内置 DNS,增强模式选 fake-ip:客户端先返回保留网段的假 IP,真实解析推迟到代理远端完成,本地查询不出隧道;
- TUN 模式同时开启 DNS 劫持(拦截 any:53),把所有明文查询强制收进客户端;
- 上游避免用只能直连的国内服务器去解析境外域名;设置入口与详细步骤见 Clash Verge 教程。
系统与浏览器
- 系统 DNS 不必特意改成境外公共服务器——在代理之外明文直连境外 DNS,查询记录照样暴露,还可能变慢;
- 浏览器的「使用安全 DNS」设为关闭或跟随系统,避免绕过客户端;
- 排查期间退出其他 VPN 与网游加速器。
移动端
iOS 的 Shadowrocket 可在设置中指定 DNS 并启用虚假 IP 相关选项;Android 建议使用 VPN 模式的客户端并交由其内置 DNS 处理,同时关闭系统「私人 DNS」以免路径冲突。
修复后的复验
重启客户端清掉缓存,重新做两三轮检测;再换一个节点复测,确认解析归属跟着节点走。之后每次大改配置或更换客户端,都值得再验一次。
如何判断是不是机场线路的问题
泄漏本身基本是本地配置问题,与机场关系不大。但有两种远端情况值得分辨:检测页显示的服务器若是节点地区的公共 DNS,那是代理远端使用的上游,不算泄漏;若远端解析结果明显异常——流媒体地区判定混乱、解析落点与节点严重不符——且本地配置已排除,可能与机场落地的 DNS 设置有关,可向客服反馈或对照稳定性优先的机场评估。隐私诉求较高的用户,还应结合服务商的日志政策综合判断,参考无日志与隐私解读。
FAQ
DNS 泄漏会带来什么实际影响?
主要是两点:本地网络一侧能看到你查询过哪些域名;依赖解析位置的服务可能调度错乱。它不直接导致断网或封号,但对隐私敏感的场景值得修复。
fake-ip 和 redir-host 该选哪个?
以防泄漏和分流准确性论,fake-ip 通常是更省心的选择;redir-host 兼容性好但依赖本地解析,需要额外保证查询走加密通道。切换模式后记得清一次缓存。
已经把系统 DNS 改成了公共 DNS,为什么还检测出泄漏?
换服务器改变的只是「问谁」,没改变「怎么问」。查询仍以明文从本地发出,就依旧绕过了隧道;关键是让客户端接管解析,而不是换一个上游。
每个节点测出来的 DNS 归属不一样,正常吗?
正常,而且是健康的表现——说明解析在代理远端完成,归属自然随节点走。反之所有节点都测出同一个本地运营商地址,才是泄漏的信号。