机场 DNS 泄漏怎么办?分清污染与泄漏,fake-ip / redir-host 设置

作者 机场通编辑部发布于 更新于 约 10 分钟
目录
  1. DNS 污染和 DNS 泄漏:两件不同的事
  2. fake-ip 和 redir-host 有什么区别
  3. 症状与原因速查表
  4. 排查阶梯一:先确认是不是真的泄漏
  5. 排查阶梯二:IP 规则触发了本地解析
  6. 排查阶梯三:DNS 服务器与 fake-ip 过滤配置
  7. 排查阶梯四:TUN、系统与浏览器绕过了客户端
  8. DNS 泄漏到底有多要紧
  9. 客户端特定提示
  10. 什么时候该换机场
  11. 常见问题
结论速览

机场 DNS 泄漏怎么办?第一步是分清你遇到的是「泄漏」还是「污染」:污染是国内解析链路对境外域名返回了假地址,表现为打不开或证书报错;泄漏是本该交给代理处理的域名查询被发给了本地运营商 DNS,表现为检测网站显示本地 DNS、访问记录外露、解析结果与节点出口不匹配。解决泄漏的核心有三条:增强模式用 fake-ip,让走代理的域名直接交给节点解析;给 GEOIP、IP-CIDR 等 IP 规则加 no-resolve,避免为了匹配规则而在本地解析;TUN 模式开启 DNS 劫持与严格路由,并在 fake-ip 下关闭浏览器的安全 DNS。多数机场订阅自带的 DNS 配置已经够用,问题往往出在客户端模式和规则顺序上。

DNS 污染和 DNS 泄漏:两件不同的事

很多人把这两个词混着用,但它们的成因、症状和解决办法都不一样。先把概念分开,后面的排查才不会走偏。

DNS 污染发生在国内网络环境里:当你向国内的递归 DNS 或经过国内链路查询某些境外域名时,会收到伪造的应答,地址要么根本不通,要么指向一个毫不相干的服务器。症状是网页长时间转圈、连接被重置,或者浏览器提示证书与域名不匹配。它是「解析结果错了」。

DNS 泄漏发生在你已经用上机场之后:浏览器和应用的流量确实走了代理,但域名查询这一步却绕开代理,被发给了本地运营商 DNS 或某个公共 DNS。它的后果分两层:隐私层面,运营商可以看到你查询过哪些境外域名;可用性层面,本地解析出的地址是按你国内位置挑选的,而实际连接是从海外节点发出,两者不匹配时会出现速度慢、打开错误的 CDN,甚至拿到被污染的地址。它是「解析的路径错了」。

对比项DNS 污染DNS 泄漏
发生位置国内解析链路本机客户端与系统配置
典型症状打不开、连接重置、证书域名不匹配检测网站显示本地 DNS、个别网站慢或异常
是否与机场有关没开代理时就存在主要取决于客户端设置
主要解决手段让境外域名交给代理端解析fake-ip、no-resolve、DNS 劫持

可以看到,两者的解决手段其实有交集:只要境外域名的解析交给代理一侧处理,污染影响不到你,泄漏也就不存在了。下面的排查都围绕这个目标展开。

fake-ip 和 redir-host 有什么区别

Clash 系客户端(包括 Mihomo 内核)的 DNS 增强模式有两种,选哪种直接决定了泄漏风险的高低。

fake-ip:应用发起域名查询时,客户端不去真正解析,而是立即返回一个保留网段里的假地址(通常在 198.18 开头的网段),同时记住「这个假地址对应哪个域名」。应用随后连接这个假地址,客户端据此还原出域名,按域名匹配规则;如果走代理,就把域名原样交给节点,由节点那一侧解析。这样一来,走代理的境外域名在本地根本不发生真实查询,自然不会泄漏,也不会受污染,打开网页的首包延迟还更低。代价是少数应用会缓存假地址,局域网设备发现、时间同步、部分游戏机联机检测可能受影响,需要用 fake-ip 过滤列表把这些域名排除出去。

redir-host:客户端先做一次真实解析,把真实 IP 返回给应用。它的兼容性更好,适合对假地址敏感的场景。但每个域名都要先在本地解析一次,如果 DNS 服务器配置的是本地运营商 DNS,境外域名的查询就会直接泄漏出去,还可能拿到被污染的结果。

模式境外域名在本地解析吗泄漏风险兼容性注意
fake-ip走代理的不解析低局域网、时间同步、游戏机检测需加过滤
redir-host每个都解析取决于 DNS 服务器设置应用拿到真实 IP,兼容性更好

我们的建议:日常使用选 fake-ip;遇到个别应用异常时,优先往 fake-ip 过滤列表里加它的域名,而不是整体改成 redir-host。

症状与原因速查表

症状最可能的原因对应排查阶梯
检测网站显示本地运营商 DNS境外域名在本地解析了阶梯一、二、三
规则模式泄漏,全局模式不泄漏IP 规则触发了本地解析阶梯二
开了 TUN 反而泄漏更多没开 DNS 劫持、多网卡并发查询、IPv6 绕过阶梯四
浏览器打开网站走错了分流浏览器安全 DNS 绕过了 fake-ip阶梯四
个别网站证书报错或连接重置拿到了被污染的地址阶梯三,另见证书错误排查
局域网打印机、投屏找不到设备fake-ip 过滤列表缺项阶梯三
开代理后完全没网不是泄漏问题,是 DNS 整体失效见TUN 模式没网

排查阶梯一:先确认是不是真的泄漏

怎么确认

打开任意一个 DNS 泄漏检测网站(搜索「DNS leak test」就能找到多个),选择扩展测试。这类网站会让浏览器去解析一批境外随机子域名,然后统计是哪些 DNS 服务器来查询了它们。判断标准很简单:如果结果里出现了你所在城市的运营商,或者国内的公共 DNS 服务商,说明境外域名的查询从你本地发出去了,这就是泄漏;如果结果全部是节点所在地区的 DNS 服务器,说明解析交给了代理一侧,没有泄漏。

另一个更直接的办法是看客户端日志。把日志级别调到调试,访问一个境外网站,看日志里有没有对这个域名发起本地 DNS 查询的记录。fake-ip 模式下,走代理的域名应该只看到「分配假地址」和「按域名匹配规则」,看不到真实解析。

怎么解决

这一步只是确认。要注意两个误判:一是测试时客户端处于直连模式或者检测网站本身被分流成直连,结果当然会显示本地 DNS;二是国内域名本来就应该用国内 DNS 解析,这样才能拿到离你最近的国内 CDN 地址,不能当作泄漏去「修」。

排查阶梯二:IP 规则触发了本地解析

怎么确认

这是规则模式下最常见的泄漏原因。分流规则通常是先匹配域名规则,再匹配 GEOIP、IP-CIDR 这类 IP 规则,最后是兜底规则。当一个境外域名没有命中任何域名规则、一路往下走到第一条 IP 规则时,客户端必须先知道它的 IP 才能判断,于是会在本地发起一次解析——这次解析用的就是你配置的本地 DNS。如果你发现切到全局模式后检测不再泄漏,切回规则模式又泄漏,基本就是这个原因。

怎么解决

  1. 给 IP-CIDR 类规则加上 no-resolve 参数。它的意思是:如果这次连接只有域名、没有现成的 IP,就跳过这条规则,不为了它去解析;
  2. 把常用境外服务的域名规则集放在 IP 规则前面,让绝大多数境外域名在域名阶段就被送去代理,根本走不到 IP 规则;
  3. 最后的「中国 IP 直连」规则通常需要解析才能判断,这是必要的,但只有没命中前面任何规则的冷门域名才会走到这里,影响已经很小;
  4. 如果你用的是 Mihomo 内核,还可以让 DNS 查询本身也遵循分流规则(配置项一般叫 respect-rules),这时需要同时设置专门用于解析节点域名的 DNS。

规则排序的完整逻辑见规则分流教程。机场订阅自带的规则如果不方便直接改,可以用客户端的覆写功能追加,更新订阅时不会被冲掉。

排查阶梯三:DNS 服务器与 fake-ip 过滤配置

怎么确认

打开客户端当前生效的配置,看 DNS 部分:增强模式是不是 fake-ip,默认的解析服务器是什么,有没有为境外域名单独指定加密 DNS,fake-ip 过滤列表里有没有局域网和时间同步相关的域名。如果增强模式是 redir-host,同时默认服务器是运营商 DNS 或普通明文 DNS,那么泄漏几乎是必然的。

怎么解决

  • 增强模式改为 fake-ip,这是改动最小、收益最大的一步;
  • 国内域名用国内的 DNS(明文或加密都可以),保证国内网站拿到就近地址;境外域名如果需要在本地解析,用按域名分类指定 DNS 的方式(常见配置项叫 nameserver-policy)交给加密 DNS,并让它经过代理;
  • 用于解析加密 DNS 服务器自身域名的「引导 DNS」必须填 IP 地址,否则会出现鸡生蛋的问题;
  • fake-ip 过滤列表保留订阅或客户端默认的那一份,局域网、路由器管理页、时间同步、游戏机联网检测相关域名都在里面,不要为了「更干净」而清空。

说实话,大多数机场订阅自带的 DNS 配置已经是 fake-ip 加合理的服务器组合,泄漏更多来自用户自己从网上复制了一整段 DNS 配置覆盖了原来的设置。如果你改过,先恢复默认再测一次。

排查阶梯四:TUN、系统与浏览器绕过了客户端

怎么确认

只开系统代理时,浏览器把域名直接交给代理,本地通常不会解析,泄漏反而少;开 TUN 模式后,所有流量包括 DNS 查询都要经过虚拟网卡,如果配置不当,泄漏会更明显。三个典型情况:一是 TUN 没有开启 DNS 劫持,系统发往 53 端口的查询直接走了物理网卡;二是 Windows 会同时向多个网卡上配置的 DNS 发送查询,谁先回用谁,物理网卡上的运营商 DNS 也会收到查询;三是系统有 IPv6 而 TUN 只接管了 IPv4,IPv6 的 DNS 查询绕过了 TUN。

浏览器是另一个来源。浏览器开启「安全 DNS」后会自己用 DoH 解析域名,拿到真实 IP 后直接连接,客户端只能看到 IP 看不到域名,fake-ip 被完全绕过,基于域名的分流规则也随之失效,表现为某些网站走错了出口。

怎么解决

  1. TUN 设置里打开 DNS 劫持,让所有 53 端口的查询都交给客户端处理;
  2. Windows 上打开严格路由(strict route),它能阻止系统绕过虚拟网卡向物理网卡发 DNS 查询;
  3. IPv6 要么让 TUN 一并接管,要么在客户端里关闭 IPv6,避免出现一半流量走 TUN 一半绕开的情况,原理见IPv6 与机场;
  4. 在 fake-ip 加 TUN 的组合下,关闭浏览器设置里的安全 DNS;只用系统代理时可以保留。

TUN 模式本身的开启与常见问题见TUN 模式教程。

DNS 泄漏到底有多要紧

我们建议按两个层面来看。隐私层面,DNS 泄漏意味着本地网络能看到你查询过哪些境外域名,这对普通用户的实际影响取决于你在意的程度;它不等于暴露你的真实 IP,真正能暴露真实 IP 的常见途径是浏览器的 WebRTC,需要另外处理,更多讨论见机场安全与隐私。可用性层面的影响往往更直接:解析结果与节点出口不匹配,会让一些网站连到不合适的 CDN、加载变慢,个别服务还可能把「解析器在国内、出口在海外」当作风控信号之一,这类情况可以结合Google 人机验证排查一起看。

客户端特定提示

Clash Verge Rev

Clash Verge Rev 的设置里有 DNS 相关的覆写选项(不同版本名称略有差异),开启后可以在不改订阅的前提下指定增强模式、服务器和 fake-ip 过滤列表。TUN 设置里能找到 DNS 劫持和严格路由两个开关,Windows 用户建议两个都开。排查时善用连接页面:fake-ip 正常工作时,连接列表里显示的是域名;如果大量连接只显示 IP,说明有应用绕过了 fake-ip,多半是浏览器安全 DNS 或应用自带的解析。

Shadowrocket

Shadowrocket 在规则模式下,命中代理规则的域名默认交给节点一侧处理,一般不需要额外设置。泄漏通常出在两处:一是配置文件通用设置里的 DNS 服务器被改成了某个明文 DNS,二是规则里的 IP 类规则缺少 no-resolve。iOS 上一些应用会走系统自带的加密 DNS 描述文件,如果你装过此类描述文件,排查时先在系统设置里关掉它再测。

Clash Meta 内核通用

Android 上的 Clash Meta、FlClash、路由器上的 Mihomo 共用同一套 DNS 配置逻辑:enhanced-mode 选 fake-ip,fake-ip-filter 保留默认,IP 规则加 no-resolve,需要更严格时开启 respect-rules 并配好解析节点域名的 DNS。Android 上开启 VPN 模式时注意关闭系统设置里的「私人 DNS」,它和浏览器的安全 DNS 一样会绕过 fake-ip。

什么时候该换机场

情况建议
改 fake-ip、加 no-resolve 后不再泄漏与机场无关,不用换
订阅自带 DNS 配置有问题,但客户端支持覆写自己覆写即可
只提供自研客户端,无法修改 DNS 与规则在意 DNS 设置的用户考虑换支持第三方导入的机场
交给节点解析后,境外网站首次打开明显很慢可能是节点一侧解析质量差,换地区节点对比,普遍如此再考虑换
节点域名本身经常解析失败、连不上属于机场入口质量问题,持续发生可以换

DNS 泄漏九成是客户端层面的问题,单纯为它换机场意义不大。真正与机场相关的是两点:订阅是否允许你在第三方客户端里自由调整 DNS 与规则,以及节点一侧的解析是否稳定。

避坑:DNS 设置的几个常见错误

1)不要从网上复制一大段「终极防泄漏 DNS 配置」直接覆盖订阅,里面的服务器可能在你的网络下不可达,结果是所有网站都打不开。2)引导用的 DNS 必须填 IP,填域名会造成循环依赖。3)不要清空 fake-ip 过滤列表,局域网设备和时间同步会出问题。4)不要把「检测网站显示国内 DNS」一律当作泄漏,先确认测试时客户端在规则或全局模式、检测网站本身走了代理。5)排查时改过的设置记得记录,测试完恢复不需要的修改,避免留下新的问题。

想自己掌控 DNS 与分流设置,我们推荐

光速云、SOGO 云:两家品牌资料都标注 IEPL 专线 + VLESS 协议,并支持 Clash、Shadowrocket 等第三方客户端订阅导入,可以在 Mihomo 内核客户端里自行配置 fake-ip、no-resolve 与 DNS 劫持,不被自研客户端的默认设置限制。光速云 2020 年起运营,入门为年付折算 ¥7.5/月 59GB;SOGO 云 ¥25/月 150GB 月付,是 2026 年新品牌,建议先买一个月验证。

查看 光速云 套餐 查看 SOGO 云 套餐

常见问题

DNS 污染和 DNS 泄漏有什么区别?

DNS 污染是国内解析链路对部分境外域名返回了伪造的错误地址,结果是网站打不开或证书报错。DNS 泄漏是本该交给代理处理的域名查询被发给了本地运营商或其他 DNS,结果是访问记录暴露、解析结果不适合代理出口。两者经常同时出现,但解决思路不同。

fake-ip 和 redir-host 应该选哪个?

大多数情况下选 fake-ip。它对走代理的域名不在本地做真实解析,而是把域名直接交给节点,既快又不容易泄漏。redir-host 会先在本地拿到真实 IP,兼容性好一些,但如果 DNS 服务器配置不当就会把境外域名的查询发给本地 DNS。

为什么开了规则模式还是检测出 DNS 泄漏?

最常见的原因是规则里有 GEOIP 或 IP-CIDR 这类 IP 规则。域名没有命中任何域名规则时,客户端为了匹配 IP 规则必须先解析一次域名,这次解析就可能发给本地 DNS。给 IP 规则加上 no-resolve 参数,或把常用境外域名的规则集放在 IP 规则前面即可改善。

DNS 泄漏检测网站显示国内运营商 DNS,一定是有问题吗?

要看测试的是什么域名。检测网站用的是境外随机子域名,这类查询理论上应由节点一侧处理,如果结果里出现你所在地的运营商 DNS,说明境外域名查询确实走了本地。国内域名本来就该用国内 DNS 解析,这不算泄漏。

TUN 模式下为什么更容易 DNS 泄漏?

TUN 模式接管的是网卡层的流量,如果没有开启 DNS 劫持,系统和应用仍会把 53 端口的查询直接发给物理网卡上配置的 DNS。Windows 还可能同时向多个网卡发查询,IPv6 的 DNS 也可能绕过 TUN。开启 DNS 劫持和严格路由能解决大部分问题。

浏览器的「安全 DNS」要不要关?

在 fake-ip 加 TUN 的组合下建议关闭。浏览器开启安全 DNS 后会自己通过 DoH 解析域名,拿到真实 IP 后再去连接,客户端就看不到域名,基于域名的分流规则会失效。只用系统代理模式时,浏览器把域名交给代理,安全 DNS 影响不大。

DNS 泄漏会暴露我的真实 IP 吗?

DNS 泄漏暴露的是你查询了哪些域名,以及你使用的是哪个地区的 DNS 服务器,不等于直接暴露你的真实 IP。真正暴露真实 IP 的常见途径是浏览器的 WebRTC,这是另一个问题,需要在浏览器层面单独处理。