换客户端或换订阅之后,我做的第一件事都是连上代理开检测站看一眼 DNS 一栏。这个习惯值得养成,因为 DNS 泄漏(也常写作 DNS 泄露)不影响你上网,网页照常打开,速度照常快,你根本感觉不到。它只是安静地把你访问过的域名清单交给了运营商。

DNS 泄漏指的是代理已经连上,但应用发出的域名解析请求没有进入代理隧道,直接以明文从本机发到了运营商的 DNS 服务器。结果是网页内容仍然加密,运营商却拿到了你访问过的完整域名清单,明文查询还可能被篡改(这就是 DNS 污染的来源)。它不影响上网速度和成功率,所以只能靠检测发现。

这篇讲的是怎么查、为什么漏、以及每一个常用客户端具体该改哪一项

来源说明。设置项名称按各客户端官方文档与当前版本界面整理,核对日期 2026 年 9 月 14 日,以你当前版本为准。本站没有逐家测试机场默认订阅的 DNS 行为,所以本文不给「哪家机场不漏」的结论,只教你自己确认。配图为示意图。

DNS 泄漏检测,30 秒判断有没有漏

检测方法是先连上代理,用浏览器打开 dnsleaktest.com(点 Extended test)或 ipleak.net,看 DNS 一栏列出的解析器归属。列出的是中国电信、中国联通、中国移动,或你路由器的局域网地址,就是泄漏;列出的是节点所在机房或你自己配置的 DoH 服务商,就是正常。整个过程不到 30 秒,换客户端、换订阅、改过 DNS 设置后都应重测一次。

判断标准只有一条,看解析器属于谁。解析器的 IP 在国内也可能正常。

  • 报出来的是电信、联通、移动,或者你路由器的地址 → 泄漏了,查询走的是本地明文通道
  • 报出来的是机场节点那边的地址,或者你自己配的 DoH 服务商 → 正常
  • 解析器在国内但不是你运营商的 → 通常也正常,有些机场的解析器就在国内,有些人给直连域名配了国内 DoH

顺手看一眼 IPv6 那一栏。显示了你的真实 IPv6 地址,说明 IPv6 绕过了隧道,后面单独说。

泄漏时到底发生了什么

正常代理与 DNS 泄漏的数据流对比。正常时域名查询和网页流量都在加密隧道里,泄漏时只有网页流量在隧道里,域名查询以明文发给了运营商的解析器
正常代理与 DNS 泄漏的数据流对比。正常时域名查询和网页流量都在加密隧道里,泄漏时只有网页流量在隧道里,域名查询以明文发给了运营商的解析器

浏览器拿到 youtube.com 这个域名时没法直接连,得先问「它对应哪个 IP」。正常情况下这一问和后面的网页流量一起进隧道,运营商只看到一条到境外 IP 的加密流。泄漏就是这一问没进隧道,从本机网卡直接发给了运营商的解析器。这时网页内容还是加密的,但「你几点几分查了 youtube.com」这份清单是明文的

为什么会漏?三种典型情况

一、系统代理模式下,非浏览器应用自己解析了。 系统代理只对遵守它的应用生效。浏览器发请求时把域名交给代理,本机不解析;但很多桌面软件、命令行工具、游戏客户端根本不看系统代理,自己解析、自己连,这些查询全走运营商。这是 Windows 和 macOS 上最常见的一类泄漏来源。

二、订阅里没有 dns 段,或者 dns.enable 是 false。 Clash / Mihomo 内核的 DNS 是可以整个关掉的。关掉之后内核不管 DNS,全交给系统解析器。有些机场的订阅为了「兼容性」就不写 dns 段,这时候完全靠客户端自己的覆写。

三、开了 TUN 但没有劫持 53 端口。 TUN 模式接管了网卡,但如果没有配 dns-hijack(它让 TUN 把发往任意地址 53 端口的查询全部拦下、交给内核 DNS 处理),应用直接发给某个 DNS 地址的查询还是可能原样出去。多数客户端的 TUN 设置里有这一项,默认开着,但值得确认。

fake-ip 是什么,为什么它能堵住 DNS 泄漏

fake-ip 模式示意。应用询问域名时客户端立刻回一个假 IP,应用拿假 IP 发起连接,客户端认出对应域名后交给节点在远端解析,域名查询从未离开设备
fake-ip 模式示意。应用询问域名时客户端立刻回一个假 IP,应用拿假 IP 发起连接,客户端认出对应域名后交给节点在远端解析,域名查询从未离开设备

fake-ip 是 Clash / Mihomo 内核的一种 DNS 增强模式(配置项 enhanced-mode: fake-ip)。应用查询域名时,客户端不做真实解析,直接从 198.18.0.0/16 这个保留网段返回一个假 IP,并记住假 IP 与域名的对应关系;应用连这个假 IP 时,客户端把原始域名交给代理节点,在节点那一侧解析并连接。这样真正的 DNS 查询从未离开你的设备,也就无从泄漏。

举个例子,应用问「youtube.com 是哪个 IP」,客户端不去查,立刻回 198.18.0.7。应用拿着这个假地址发起连接,客户端认出它对应 youtube.com,把域名原样交给节点。

换成 redir-host 模式,客户端会先真的查一次 DNS 再决定走向,这一查如果走了系统解析器就可能泄漏。所以默认用 fake-ip;需要拿到真实 IP 的程序(部分游戏、局域网服务)可以写进 fake-ip-filter 排除,不必整体切回 redir-host。

DNS 泄漏怎么解决?逐个客户端的设置

DNS 泄漏的解决办法归结为四件事。一、桌面端用 TUN 模式代替系统代理模式,让不遵守系统代理的应用也进隧道;二、让客户端接管 DNS 并使用 fake-ip 模式(Clash / Mihomo 系配置项 enhanced-mode: fake-ip),域名查询就不会离开设备;三、把明文 DNS 换成 DoH(如 https://dns.alidns.com/dns-query),至少让查询加密、不可篡改;四、节点不支持 IPv6 时关闭 IPv6。改完回检测站复查。

客户端 平台 要改的设置项 目标值
Clash Verge Rev Windows / macOS 系统设置里的 TUN 模式;Clash 设置里的 DNS 覆写;TUN 设置里的 DNS 劫持 开;开,enhanced-mode: fake-ip,nameserver 用 DoH;any:53
ClashBox 鸿蒙 复写页里的 DNS 项 启用,fake-ip
ClashMi iOS / Windows 设置里的 DNS 项 启用,fake-ip
Shadowrocket iOS 设置 → DNS 覆写 一个 DoH 地址
sing-box 全平台 dns.serversdetour;fakeip 指向代理出站;启用
v2rayN Windows 底部 TUN 模式;DNS 设置 → 远程 DNS;路由设置 → 域名策略 开;DoH 地址;AsIs
Clash Meta for Android / FlClash Android 配置里的 dns 段 enable: trueenhanced-mode: fake-ip
DNS 泄漏处理流程。先在检测站看解析器归属,泄漏则按客户端修改设置,改完回检测站复查并看 IPv6
DNS 泄漏处理流程。先在检测站看解析器归属,泄漏则按客户端修改设置,改完回检测站复查并看 IPv6

下面的设置项名称以你当前版本为准,界面改名了就找含义相同的入口。改完一定回检测站复查,这是最直接可靠的确认方式,怎么复查见文末。

Clash Verge Rev(Windows / macOS)开 TUN、DNS 覆写和 fake-ip

桌面端用得很多的客户端之一,也是最容易在系统代理模式下漏的。

  1. 设置页的系统设置卡片 → 打开 TUN 模式。系统代理模式只管浏览器,TUN 才管全部应用。
  2. 设置页的 Clash 设置卡片 → 打开 DNS 覆写。它会用客户端内置的一套 dns 配置替换订阅里的,不管订阅写没写 dns 段。
  3. 点进覆写的编辑页确认三项,分别是 enable: trueenhanced-mode: fake-ip,以及 nameserver 填的是 DoH 地址(形如 https://…/dns-query),看到 114.114.114.114 这种明文地址就换掉。
  4. TUN 设置里确认 DNS 劫持dns-hijack: any:53)是开着的。

安装和导入订阅的步骤在 Clash Verge Rev 教程

ClashBox(鸿蒙)与 ClashMi(iOS / Windows)

同一个内核家族,思路和上面一样,确认 DNS 已启用、模式是 fake-ip。ClashBox 的相关项在「复写」页,ClashMi 在设置里的 DNS 项。这两款本文未逐项核对当前版本的界面,以你看到的「覆写 / 复写」页为准。iOS 上客户端走系统 VPN 隧道,所有应用的查询天然会被收进来,泄漏概率比桌面低,但订阅把 dns 关掉的情况一样存在,所以还是要查。

鸿蒙上的 ClashBox 安装见华为手机 ClashBox 教程,ClashMi 见 ClashMi iOS 教程ClashMi Windows 教程

Android(Clash Meta for Android、FlClash)

这类客户端通过系统 VpnService 接管全部应用流量,泄漏风险主要来自订阅关掉了 dns 段。检查方法与桌面端相同,确认配置里 dns.enable: trueenhanced-mode: fake-ip,改完回检测站复查。安装和导入订阅的步骤见 FlClash 教程Clash Meta for Android 教程

Shadowrocket(小火箭)在 DNS 覆写里填 DoH

设置 → DNS 覆写 → 填一个 DoH 地址,例如 https://dns.alidns.com/dns-query(国内可直连)。如果想填 Google 或 Cloudflare 的 DoH,要先确认 DoH 请求本身能经代理发出,否则解析会直接失败。小火箭的分流规则里域名类规则不需要本地先解析,配合 DoH 基本能把明文查询堵掉。

它的规则模式和节点配置见 Shadowrocket 教程。复查时如果开着 iCloud 专用代理(Private Relay),Safari 里的检测结果会显示 Apple、Cloudflare 或 Akamai 的解析器,那是 Private Relay 的效果,不是泄漏;测试期间可以临时关掉它以免干扰。

sing-box(iOS / Android / 桌面)

sing-box 的 DNS 全在配置文件的 dns 段。机场给的 sing-box 订阅一般已经配好了,自己拼的配置要确认两件事。

  • 代理用的 DNS 服务器带 detour 指向代理出站,不带的话查询就直连出去了
  • 如果用 fakeip,dns.fakeip.enabled: true 且有对应的 dns.rules 把代理域名指到 fakeip 服务器

以上按 1.11 及以前的配置格式写;1.12 起 DNS 服务器改为按 type 声明、fakeip 变成一种服务器类型,字段名有变化,以官方文档 DNS 一节为准。配置结构和导入见 sing-box iOS 教程

v2rayN(Windows)先开 TUN,域名策略选 AsIs

v2rayN 的漏点在「域名策略」,前提是先开 TUN。

  1. 主界面底部打开 TUN 模式;系统代理模式下非浏览器应用同样会绕过 v2rayN 自行解析。
  2. 设置 → DNS 设置 → 远程 DNS 填 DoH 地址
  3. 设置 → 路由设置 → 域名策略选 AsIs。它的意思是域名原样交给节点、由节点解析;选 IPIfNonMatch 或 IPOnDemand 时 v2rayN 会先在本地解析再匹配规则,那一次解析就可能漏。代价是不在域名规则里的国内站点也会走代理,可用 geosite 规则补齐。

安装与订阅见 v2rayN 教程

改成 8.8.8.8 为什么没用

网上最常见的建议是把系统 DNS 改成 8.8.8.81.1.1.1。这在国内环境解决不了问题,因为查询仍然是明文 UDP 53 端口从本机发出去,一样经过运营商,一样看得见、改得了,而且这两个地址直连本身就经常超时。

有两个概念别搞混。

  • DoH(DNS over HTTPS,走 443 端口)/ DoT(DNS over TLS,走 853 端口) 解决的是「查询被看见和篡改」,把 DNS 变成加密请求
  • fake-ip 解决的是「查询根本不出隧道」

桌面端优先 fake-ip + TUN,iOS 上至少把 DNS 换成 DoH。两个一起上最稳。

怎么看你的订阅有没有接管 DNS

Clash Verge Rev 里右键订阅 → 编辑文件,搜 dns:。看三行就够了。

dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - https://dns.alidns.com/dns-query

没有 dns: 段,或者 enable: false,就说明订阅不管 DNS,全靠你在客户端里开覆写。nameserver 里全是 223.5.5.5 这种明文地址的话,域名查询本身在隧道里没问题,但直连域名的解析是明文的,介意的话用覆写换成 DoH。

sing-box 和 v2rayN 的订阅同理,分别看 dns 段和 DNS 设置。

还有一个「明明开了 fake-ip 还漏」的常见原因出在规则上。订阅里的 IP-CIDR 类规则如果没带 no-resolve,内核匹配这条规则时要先把域名解析成真实 IP 才能比对,这一次解析就可能出去。检查方法是在配置里搜 IP-CIDR,没有 ,no-resolve 后缀的让服务商补上,或在覆写里自己加。

IPv6 顺带处理

节点不支持 IPv6、但你的宽带和系统开着 IPv6 时,部分应用会优先走 IPv6 直连,绕过隧道。检测站 IPv6 一栏显示了真实地址就是这种情况。处理办法是在客户端设置里关掉 IPv6(Clash 系是 ipv6: false),或者在系统网络设置里禁用 IPv6,然后复查。

修好了怎么确认

复查标准就两条。一是检测站的 DNS 一栏变成节点那一侧的地址或你配的 DoH 服务商,二是 IPv6 一栏没有你的真实地址。另外有三个容易误判的地方。

  • 浏览器自带的「安全 DNS」(Chrome、Edge、Firefox 都有)会让检测站显示 Google 或 Cloudflare 的解析器,既可能掩盖真实泄漏,也可能被当成泄漏。复查时先在浏览器设置里关掉它,或者换系统自带浏览器测。
  • ipleak.net 的 WebRTC 一栏显示的是 IP 泄漏,不是 DNS 泄漏,两回事,别混着看。
  • 检测站有缓存。改完设置换一个节点再测一次,两次结果一致才算数。

本站的边界

哪家机场的默认订阅接管了 DNS、接管得干不干净,需要逐家实测才能说,本站目前没有这项数据,所以不排名、不推荐。挑机场的一般方法在如何判断机场是否可靠;如果你测出某家订阅默认就漏,欢迎告诉我,攒够样本我会做一轮专项测试。

常见问题

怎么检测 DNS 泄漏?
连上代理后打开 dnsleaktest.com 或 ipleak.net,看 DNS 一栏的解析器归谁。是电信、联通、移动或你路由器的地址就是泄漏;是节点机房或你配置的 DoH 服务商就正常。改完任何 DNS 设置都要回去复查。
DNS 泄漏检测显示解析器在国内,就一定是泄漏吗?
不一定,要看解析器属于谁。有些机场的解析器就部署在国内,或者你在客户端里配了国内的 DoH 给直连域名用,这都正常。只有报出来的是电信、联通、移动这类你自己运营商的解析器,才是查询走了本地明文通道。
fake-ip 是什么?开了有副作用吗?
fake-ip 是 Clash / Mihomo 的 DNS 增强模式。应用查域名时客户端不真正解析,直接回一个 198.18.0.0/16 网段的假 IP,等应用来连时再把域名交给节点远端解析,所以查询不会离开设备。副作用是应用拿到的是假 IP,需要真实 IP 的程序要写进 fake-ip-filter 排除,或改用 redir-host 模式。
把 DNS 改成 8.8.8.8 或 1.1.1.1 能解决泄漏吗?
不能。改地址只是换了问谁,查询仍然是明文 UDP 53 端口从本机发出去,一样经过运营商,一样能被看见和篡改,而且这两个地址在国内直连本身就不稳。真正有效的是让客户端用 fake-ip 把查询留在隧道里,或者至少把明文 DNS 换成 DoH 这类加密查询。
系统代理模式和 TUN 模式哪个更容易泄漏?
系统代理模式更容易。它只对遵守系统代理设置的应用生效,浏览器一般没问题,但很多桌面应用、命令行工具和游戏会绕过它自己解析域名,这些查询就直接走了运营商。TUN 模式接管整个网卡,配合 DNS 劫持能把所有查询都收进来,是桌面端更省心的选择。
机场给的订阅里没有 dns 段怎么办?
靠客户端自己的 DNS 覆写。Clash Verge Rev 打开 DNS 覆写后会用它内置的 dns 配置替换订阅里的,Shadowrocket 在设置里填 DoH 也是同一个思路。改完必须回检测站复查,因为覆写的默认值也可能不适合你的网络。
浏览器开了「安全 DNS」还需要改客户端吗?
需要。浏览器的安全 DNS 只管浏览器自己的查询,其他应用照样走系统解析器;而且它会让检测站显示 Google 或 Cloudflare 的解析器,掩盖真实情况。复查前先关掉它或换系统自带浏览器测,客户端那边的 fake-ip 和 DoH 该改还是要改。
IPv6 也会泄漏吗?
会,而且经常被忽略。节点不支持 IPv6 而系统开着 IPv6 时,部分查询和连接会绕过隧道走 IPv6 直连。检测站的 IPv6 一栏如果显示了你的真实地址,在客户端或系统里把 IPv6 关掉再复查。

发现信息过期或错误?欢迎联系纠错,我会尽快复核更新。

继续阅读

  • 晚高峰速度慢的常见原因与排查步骤

    白天流畅晚上卡顿?从国际出口拥堵、机场超售、线路类型到本地网络,逐层分析晚高峰变慢的原因,并给出可自己动手的排查步骤和改善方案。