跳到正文
不翻车专注 VPN 软件评测

开着 VPN 还在 DNS 泄漏?Clash 十几组设置实测,附不漏的写法

不翻车编辑部 · 更新于

不翻车 DNS 泄漏检测结果:规则模式加 114 DNS,检测到 DNS 泄漏,两台 DNS 服务器都是中国电信

先说结论:DNS 漏不漏,和开不开 TUN 关系不大,看两样东西,一是客户端的 DNS 填的是谁,二是规则里有没有那条要先查 IP 地址的 GEOIP,CN,DIRECT。2026 年 10 月 17 日我们用 mihomo v1.19.32(Clash Verge Rev 2.5.8 自带的内核)测了十几组设置,用的是本站的 DNS 泄漏检测。最常见的“规则模式 + 国内 DNS”测出来就是泄漏,开 fake-ip 也一样;全局模式不漏;TUN 下换了 DNS 写法,10 次检测一次都没漏。还有一个坑:Clash Verge 的“DNS 覆写”用默认值时,检测网页显示一切正常,内核日志里每个域名却同时发给了阿里和腾讯。

这篇有视频版:YouTube 上看《开着VPN,你上过的网站国内DNS全看得到?实测十几组设置》。

DNS 泄漏是什么、泄了什么,见什么是 DNS 泄漏。这篇只讲实测。

怎么测的

  • 内核:mihomo v1.19.32,就是 Clash Verge Rev 2.5.8 安装包里带的那个版本。没用图形界面,直接用同一个内核跑配置文件。
  • 检测:Chrome 走内核的代理端口,打开本站 DNS 泄漏检测。工具会让浏览器查 10 个一次性的随机域名,再看替你去查的是哪几台 DNS 服务器。
  • 客户端的 DNS 填 114.114.114.114,代表国内常见的运营商和公共 DNS。
  • 节点是我们自己搭的 Shadowsocks 服务端,服务端的 DNS 用 Cloudflare。所以结果很好认:出现中国电信,就是查询走了 114;出现 Cloudflare 或 Google,就是查询进了节点。
  • TUN 那几组要管理员权限,放在 Linux 容器里,用同一个版本的内核跑,容器里用 curl 按网页工具同样的方法请求随机域名。

全部配置和原始结果按组列在文末。

规则模式加国内 DNS,为什么会泄漏

第一组就是大多数人的用法:规则模式,DNS 填 114,规则用 3x-ui 导出的 Clash 订阅自带的那四条。结果:检测到 DNS 泄漏,两台服务器全是中国电信。

规则模式加 114:检测到 DNS 泄漏,两台 DNS 服务器都是中国电信

问题出在倒数第二条规则:

rules:
- GEOSITE,private,DIRECT
- GEOSITE,cn,DIRECT
- GEOIP,CN,DIRECT      # 服务器在国内就直连
- MATCH,PROXY

GEOIP,CN 要判断网站的服务器在不在国内,可客户端手里只有域名,得先查出 IP 地址。这一查,就是拿着你要去的域名问了 114。mihomo 文档写得很直白:

mihomo 文档:域名匹配目标 IP 规则时会触发 DNS 解析,可以用 no-resolve 跳过

内核日志里能看到每个随机域名都是向 114 查的:

[DNS] resolve nnftmsfs4qklqj0igshhdb3jno42u8w5.edns.ip-api.com A from udp://114.114.114.114:53
[DNS] resolve fqfexesf6fis6dlg5toxfxf2o0t5cag5.edns.ip-api.com A from udp://114.114.114.114:53

前两条域名规则没匹配上的海外网站,都会被这样问一遍。

开了 fake-ip 能防泄漏吗

不能。我们把增强模式在 fake-ip 和 redir-host 之间换着测:fake-ip 泄漏,redir-host 也泄漏,后者的表里中国电信和 Cloudflare 都有,114 和节点那边各查了一遍。

redir-host:表里既有中国电信也有 Cloudflare

GEOIP 规则要的是真实 IP,fake-ip 发的 198.18 开头的假地址不算数,该查还得查。

全局模式会泄漏吗

同样填 114,换成全局模式,没有发现泄漏,表里全是 Cloudflare,内核日志里本机一次都没有向 114 发起解析。全局模式不看规则,域名原样交给节点,由节点那边去查。

全局模式加 114:没有发现泄漏,两台 DNS 服务器都是 Cloudflare

这里我们踩了一个坑:刚切到全局,第一次测还是泄漏。翻日志才发现,全局走的是一个叫 GLOBAL 的组,它默认选的是 DIRECT,等于什么代理都没走。Clash Verge Rev 界面上也是这样:

Clash Verge Rev 切到全局后,GLOBAL 组当前节点是 DIRECT

切到全局以后,记得在 GLOBAL 里点一下你的节点。全局的代价是国内网站也绕到国外,慢,国内 App 还可能提示异地登录,日常用不划算。

开 TUN 是不是必然泄漏

不是,TUN 本身决定不了。TUN 组每组测 10 次:

TUN 下的写法 10 次检测结果
fake-ip + DNS 114 10 次全是中国电信
redir-host + DNS 114 10 次全是中国电信
fake-ip + DNS 114 + no-resolve 10 次全是 Cloudflare
本文后面的不漏写法 10 次全是 Google
内核的 DNS 功能没开 劫持过来的查询没人处理,全部解析失败

最后一组挺意外:TUN 开着、配置里没开 DNS,日志里能看到查询被劫持了,但没人回应,网页全部打不开。开 TUN,DNS 要一起开。

Windows 上还多一层:首选网卡的 DNS 一秒没回应,系统会把查询发给所有网卡的 DNS,包括本地宽带的。Clash Verge Rev 里打开“严格路由”能挡住,这部分我们没在 Windows 上测,依据是 mihomo 文档和微软文档,详见 TUN 模式是什么。

检测说没泄漏,就一定没漏吗

不一定。Clash Verge Rev 的“DNS 覆写”打开以后,默认的域名服务器有三个:Google 的 8.8.8.8、腾讯的 doh.pub、阿里的 alidns,源码里就是这么写的:

Clash Verge Rev 源码:DNS 覆写默认域名服务器是 8.8.8.8、doh.pub、dns.alidns.com,代理节点 DNS 和直连域名服务器默认为空

我们用这套默认值测,10 次检测结果全是 Google,看着没问题。可内核日志里,每个随机域名都同时发给了这三家:

[DNS] resolve 3omd3zhgtu0lm8r21yrkxquophyv9r0m.edns.ip-api.com A from https://dns.alidns.com:443/dns-query
[DNS] resolve 3omd3zhgtu0lm8r21yrkxquophyv9r0m.edns.ip-api.com A from https://doh.pub:443/dns-query
[DNS] resolve 3omd3zhgtu0lm8r21yrkxquophyv9r0m.edns.ip-api.com A from udp://8.8.8.8:53

网页为什么没显示阿里和腾讯?检测服务记下的是最先找上门的那一台 DNS,三家同时去问,谁先到表里就是谁,其余的不会出现。这是这类检测方法本身的局限,本站工具也一样。拿不准的时候,打开客户端日志,看看域名到底发给了谁。

怎么设置才不漏

两个办法,我们在规则模式和 TUN 下都测过。

办法一:给 GEOIP 规则加 no-resolve。 意思是不为这条规则去查 IP,查不到就往下走:

- GEOIP,CN,DIRECT,no-resolve

规则模式加 no-resolve:没有发现泄漏,两台 DNS 服务器都是 Cloudflare

代价有两个:有的网站服务器在国内、域名却不在国内名单里,它会绕去节点;而且订阅一更新,自带的规则会被覆盖回去。

办法二:改 DNS 覆写(更推荐)。 Clash Verge Rev 设置 → DNS 覆写,打开以后改四个格子:

  1. 域名服务器:填海外的加密 DNS,比如 https://1.1.1.1/dns-query、https://8.8.8.8/dns-query。
  2. 遵循路由规则:打开。查询本身也按规则走,海外的 DNS 走节点去查。
  3. 代理节点DNS:填一个国内的,比如 https://223.5.5.5/dns-query,只用来解析节点自己的域名。
  4. 直连域名服务器:也填国内的,国内网站照样用国内 DNS 解析,速度不受影响。

Clash Verge Rev 中文界面文案:遵循路由规则、域名服务器、代理节点DNS、直连域名服务器

“遵循路由规则”对应的就是 mihomo 的 respect-rules:

mihomo 文档:respect-rules,DNS 连接遵守路由规则,需配置 proxy-server-nameserver

写成配置是这样(DNS 覆写的“高级”里可以直接贴,也可以写进自己的配置文件):

dns:
  enable: true
  enhanced-mode: fake-ip
  respect-rules: true
  nameserver:
    - https://1.1.1.1/dns-query
    - https://8.8.8.8/dns-query
  proxy-server-nameserver:
    - https://223.5.5.5/dns-query
  direct-nameserver:
    - https://223.5.5.5/dns-query

改完测一次,9 台 DNS 服务器全是 Google 和 Cloudflare,没有 114:

改用 respect-rules 写法后:没有发现泄漏,9 台 DNS 服务器都是 Google 和 Cloudflare

DNS 覆写是按订阅单独保存的,换了订阅要再开一次。

浏览器的安全 DNS 也要看

Chrome 和 Edge 设置里有“使用安全 DNS”,如果选的是阿里或腾讯,开着 TUN 时浏览器会绕开系统,自己去问它们。走系统代理时,浏览器一般把域名直接交给代理,这一项影响不大。在浏览器设置里搜“安全 DNS”,关掉或者换成海外的。

测完 DNS,再查这两样

  • WebRTC 泄漏检测:看浏览器有没有把本地 IP 露出去,这和 DNS 设置无关,是浏览器自己的事。
  • 分流检测:看国内网站是不是直连、国外网站是不是走了节点。改完 DNS 和规则以后测一次,确认没把国内网站也绕出去。

Clash Verge Rev 的其他常见问题见 Clash Verge Rev 常见问题,从零连上自建节点见 Windows 用 Clash Verge Rev 连 3x-ui 节点。

这次测试的缺点

  1. 单台测试机、单个时段,每组 10 次查询,换一个网络环境结果的细节可能不同。
  2. TUN 只在 Linux 容器里测了,Windows 的多网卡 DNS 行为没测。
  3. 检测服务只显示最先到的那台 DNS,几家并发时会漏显示,所以“Clash Verge 默认值”那组要靠内核日志才看得出来。
  4. “国内 DNS”用 114 代表,没有逐家测运营商的默认 DNS。

常见问题

测出 DNS 泄漏,节点是不是就不能用了?

不是。节点照样能用,泄出去的是访问记录:国内的 DNS 能看到你几点查了哪些域名,看不到网页内容。

手机上用 Clash 类客户端要不要管?

手机上的 Clash 类客户端用的也是这类内核,道理一样。在手机浏览器里打开同一个检测页面就能测。

海外 DNS 会不会拖慢国内网站?

按上面的写法,直连域名服务器填的是国内的,国内网站还是国内 DNS 来解析。

规则模式下,国内网站用国内 DNS 算泄漏吗?

不算,这是正常设计。检测用的随机域名在海外,它被国内 DNS 查了,才说明规则或 DNS 没配好。

原始数据

测试日期 2026-10-17,内核 mihomo v1.19.32,检测用不翻车 DNS 泄漏检测(ip-api EDNS 方式,每组 10 个随机域名)。

组 模式与写法 结果
1 规则 + DNS 114,fake-ip 泄漏:2 台,均为中国电信
2 规则 + DNS 114,redir-host 泄漏:中国电信 2 台、Cloudflare 2 台
3 全局 + DNS 114,GLOBAL 保持默认 DIRECT 泄漏(等于全部直连,作废)
4 全局 + DNS 114,GLOBAL 选中节点 不漏:Cloudflare 2 台
5 规则 + DNS 114 + no-resolve 不漏:Cloudflare 2 台
6 规则 + respect-rules 写法 不漏:Google 8 台、Cloudflare 1 台
7 规则 + Clash Verge DNS 覆写默认值(容器) 网页显示 Google ×10;日志显示同时发给阿里、腾讯、Google
8 规则,内核 DNS 未开、系统 DNS 为 114(容器) 泄漏:中国电信 ×10
9 TUN + DNS 114,fake-ip(容器) 泄漏:中国电信 ×10
10 TUN + DNS 114,redir-host(容器) 泄漏:中国电信 ×10
11 TUN + DNS 114 + no-resolve(容器) 不漏:Cloudflare ×10
12 TUN + respect-rules 写法(容器) 不漏:Google ×10
13 TUN,内核 DNS 未开(容器) 全部解析失败
对照 直连 + DNS 114 中国电信 2 台