打开 VPN,DNS 还在出卖你吗?我实测了一遍
很多新手可能从来没认真考虑过,VPN 连接成功,并不代表你的网络就一定配置好了。
正常来说,我们翻墙无非就是这 4 步,包括我自己以前也是这么干的:
1️⃣ 下载 VPN
直接从应用商店下载,这一步就不展开了。
能看到这篇文章的朋友,这一步基本都没什么问题。
2️⃣ 购买机场节点
贵的、便宜的都有。
我自己也用过几个,但数量不算多,所以这里就不随便推荐了。
3️⃣ 订阅节点
把机场提供的订阅链接导入 VPN,然后配置好节点。
4️⃣ 开始 X 上班。
到这里,很多人可能就觉得:
完事了。
但其实,可能还差一步。
网络优化。
如果 VPN、系统、浏览器的 DNS 等设置没有处理好,有些情况下,你的 DNS 查询可能仍然通过本地网络或运营商的 DNS 路径进行解析。
换句话说:
你人已经“翻出去了”,DNS 可能还留在原地。
这也是我这次最意外的发现。
AI 给我的专业解释是:
DNS 泄露通常是因为本地 DNS 请求没有完全经过代理内核处理,或者浏览器的安全 DNS(DoH)走了另一条直连解析路径。
看到这里,我才意识到:
原来“能翻墙”和“网络配置得比较完整”,根本不是一回事。
好了,废话不多说。
进入正题。
PS:本篇文章主要面向翻墙新手,大佬轻喷,看到这里可以直接划走 😂
另外,为了让新手更容易理解,我特意保留了一部分我和 AI 的对话。
中间其实绕了不少弯路,我已经帮大家删掉了。
下面直接放最终整理出来的内容。
如果你也只是会“买节点 → 导入 → 开 VPN → 上 X”,那这篇可能值得看完。
**阶段一:**先确认,系统 DNS 到底有没有被接管
\1. 用户问题与实测
我首先问 AI:
我 Windows 用 FlClash,检查发现 DNS 泄露。
然后在 CMD 里运行:
结论
这里其实出现了一个非常关键的信息:
198.18.0.x
这不是 Google 的真实 IP,而是 Clash / Mihomo 常见 Fake-IP 模式使用的保留地址范围。
也就是说:
Windows 发起的普通 DNS 查询,已经被 FlClash 的 DNS/Fake-IP 机制接管。
这时候我就产生了一个疑问:
既然系统 DNS 已经被接管,为什么 DNSLeakTest 还是能检测出其他 DNS?
这就意味着:
问题可能不在最表面的“系统 DNS 有没有设置正确”,而是在后面的解析链路。
阶段二:先别猜,直接测
为了搞清楚到底有没有泄露,我找了几个常见的检测网站。
浏览器无痕模式
Chrome / Edge / Brave:
Ctrl + Shift + N
我这次用的是 Chrome。
主要是为了减少缓存等因素对测试结果的干扰。
检测工具如下:
综合检测:
BrowserLeaks
我主要用这个。
DNS 专项检测:
DNSLeakTest
环境检测:
IPHey
几个网站侧重点不同,大家根据自己的需要测试即可。
第一次测试
测试结果很有意思。
主出口 IP 已经跟着节点走了。
也就是说:
表面看起来,一切正常。
但继续往下看,却发现了一堆其他 IP。
这时候问题就来了:
主 IP 藏起来了,为什么 DNS 还冒出来了?
于是继续查。
阶段三:先解决 WebRTC 真实 IP 暴露
继续检查的时候,又发现了另外一个问题。
主出口 IP 已经变成美国加州节点:
140.235.143.226
但在 WebRTC Leak Test 里面,却出现了国内宽带的真实公网 IP。
这就很尴尬了。
VPN 开着。
节点也是美国。
结果自己的公网 IP 还在网页里露着。
为什么?
简单理解:
WebRTC 是浏览器的一套实时通信技术。
在特定网络环境和浏览器配置下,它可能通过 STUN 等机制获取网络地址信息,因此单纯依赖系统代理并不能保证 WebRTC 测试页面看不到本地网络地址。
所以我继续处理浏览器这一层。
我的处理方式
打开 Chrome 应用商店:
https://chromewebstore.google.com
安装:
WebRTC Control
然后在 Chrome 扩展管理里面,允许它在无痕模式下运行。
这一步很重要。
因为我平时测试 DNS 的时候,本身就喜欢用无痕模式。
如果扩展没有允许在无痕窗口运行:
普通窗口修好了,无痕窗口可能还是原来的状态。
再测一次
结果:
WebRTC Public IP Address
变成:
n/a
阶段四:真正让我头疼的 DNS
接下来才是这次折腾时间最长的部分。
打开 DNSLeakTest:
Run DNS Leak Test
然后……
中国 IP 又出现了。
而且数量还不少。
这时候我就有点懵了。
前面的 Fake-IP 正常。
主出口 IP 正常。
WebRTC 也处理了。
为什么 DNS 还在冒出来?
于是我重新检查 FlClash 的 DNS 配置。
这时候发现了一个很容易让新手混淆的地方:
FlClash 里面有多个 DNS 配置项。
这时候发现了一个很容易让新手混淆的地方:
FlClash 里面有多个 DNS 配置项。
default-nameserver ≠ nameserver
这个地方我一开始也搞混了。
default-nameserver
它不是“所有网站都使用的 DNS”。
它主要用于解析 DNS 服务器自身,以及一些启动阶段需要解析的域名。
所以我之前看到:
223.5.5.5
第一反应是:
是不是它导致 DNS 泄露?
后来才发现:
没这么简单。
尤其是机场节点本身的域名解析,如果你贸然把这里改成一个无法正常访问的海外 DNS,可能反而导致节点解析失败。
我之前就实际遇到了:
改完之后,节点全部 Timeout。
所以这里千万别看到一个国内 DNS 就直接删。
真正需要重点看的,是 nameserver
我当时这里配置的是:
也就是国内的 DoH DNS。
问题来了:
虽然它们使用的是加密 DNS,但“加密”并不等于“境外”。
DNS 请求仍然可能被送到国内的 DNS 服务商进行解析。
所以 DNSLeakTest 里出现国内 DNS,并不能简单理解成:
DNS 明文泄露了。
更准确地说:
你的 DNS 查询可能仍然通过国内的解析服务完成。
这也是我之前对“DNS 泄露”的理解过于简单的地方。
修改方案:将 nameserver 里的腾讯/阿里全部删除,替换为海外加密 DoH:
阶段五:继续排查 Windows
于是我继续测试。
把 nameserver 调整之后,再跑一次 DNSLeakTest。
这一次有变化。
顶部已经出现了境外 DNS。
说明:
FlClash 的境外 DNS 配置确实开始工作了。
但下面……
依然出现了:
China Mobile / Nanjing 之类的中国IP
(顶部为 Google LLC / Los Angeles,下方出现大量 183.207.x.x China Mobile / Nanjing)
这就有意思了。
因为这时候我已经开始怀疑:
是不是 Windows 自己还有另一条 DNS 路径?
Windows 的“智能多宿主名称解析”
这时候 AI 给我解释了一个之前完全没注意过的东西:
Smart Multi-Homed Name Resolution
简单来说,Windows 在多网卡、多网络接口的情况下,会对 DNS 解析进行跨网络处理;微软文档也说明,这项机制涉及在不同网络上并行发起 DNS 查询,并根据收到的结果和网络绑定顺序进行处理。
而我电脑现在是什么情况?
物理网卡 + FlClash 虚拟网卡。
于是问题就变得值得怀疑了:
会不会 FlClash 已经接管了一条 DNS 路径,但 Windows 还有其他网络接口参与 DNS 解析?
于是我继续排查。
阶段六:Windows 家庭版又给我上了一课
按照网上常见的方法:
cmd命令→gpedit.msc
准备从组策略里设置。
结果:
Windows:找不到。😂
后来才发现:
我这台电脑是 Windows 家庭版。
家庭版没有完整提供本地组策略编辑器,所以只能换其他方式处理。
这里就不把中间那一堆折腾过程全放出来了。
毕竟这篇文章不是《我和 Windows 打了一晚上架》。
好在最终也是找到了替代方案
最终命令执行(管理员命令行 CMD):
reg delete “HKLM\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient” /v DisableSmartNameResolution /f
至此,终于将Windows 其他网络接口参与 DNS 解析的路完全堵死!
搞定,收工!
下面就是见证奇迹的时刻:
关闭 Chrome → 重新打开无痕模式 → 再跑一遍 DNS 泄露测试。
结果……
所有 IP 全部变成了节点所在国家的 IP。
公网 IP 成功隐藏,DNS 泄露测试也终于干净了。
Perfect!****👏
折腾了这么久,终于没白折腾。
给自己加个鸡腿 🍗
以后大家就可以:
安心上网,放心冲浪,愉快地装 X 了。****😂
当然,网络这东西水还是挺深的。
如果你也只是:
买节点 → 导入 VPN → 点开 X → 开始上班
那建议你也花点时间看看自己的 DNS,到底有没有偷偷“漏风”。
好了,今天就到这里。








