先搞清楚 DNS 是干什么的
你在地址栏输入 example.com,浏览器并不认识这个名字。它得先问一个叫 DNS(域名系统) 的服务:这个域名对应哪个 IP 地址。拿到 IP,才能真正发起连接。
DNS 可以理解成互联网的电话簿。你报一个名字,它回一个号码。默认情况下,回答这个问题的是你的网络自动指定的 DNS 服务器,通常就是**本地运营商(ISP)**的那台。
关键在于:这次「查号码」的动作本身也是一条网络请求,它也要走某条线路发出去。问题往往就出在这里。
什么是 DNS 泄漏
当你挂上代理或 VPN,期望所有流量都从加密通道走出去。但如果域名解析请求没有进入这条通道,而是直接发给了本地运营商的 DNS 服务器,这就叫 DNS 泄漏。
结果是一种割裂:你访问网页的数据流确实套着代理的 IP,看起来人在境外;可「你正在查询哪些域名」这件事,却被本地运营商原原本本地记了下来。IP 藏住了,解析行为却漏了。
代理都挂上了,为什么还会漏
这是最反直觉的部分。代理只负责转发它接管的那部分流量,而 DNS 查询在很多情况下绕过了它:
- 系统的「抢答」机制。 以 Windows 为例,较新的系统会同时向多个 DNS 服务器发问,谁先回就用谁的(即 Smart Multi-Homed Name Resolution)。本地运营商那台往往物理距离最近、回得最快,于是查询就从它那儿漏了出去。
- 切换网络的瞬间。 从 Wi-Fi 切到热点、或网络断开重连时,如果客户端没有「断线即断网」(Kill Switch)的保护,DNS 配置可能短暂回退到运营商默认值。
- 透明 DNS 劫持。 有些运营商在网络层做了强制拦截,不管你在客户端里把 DNS 指向谁,53 端口的请求都会被偷偷改道回它自己的服务器。
- IPv6 被忽略。 如果目标站点支持 IPv6,而你的代理只处理 IPv4,那么 IPv6 的解析请求可能完全不走代理,直接明文发出。
泄漏到底暴露了什么
对普通用户,泄漏意味着浏览隐私:你查过哪些域名、用过哪些服务,会被记录成一份相当完整的访问画像。
但对多账号、跨境运营这类防关联场景,泄漏的杀伤力更直接。DNS 查询会暴露那台解析服务器的归属,也就间接暴露了你真实的运营商和大致地区。你精心用代理把 IP 伪装成了某个国家,结果解析请求的出口却指回了你的真实网络——平台的风控系统一旦发现「IP 在 A 地、DNS 解析在 B 地」这种矛盾,账号就可能被判定为异常甚至关联。换句话说,IP 对得上、DNS 对不上,照样会穿帮。
此外,本地运营商的 DNS 通常防护较弱,还存在被劫持、把你导向钓鱼站点的风险。
怎么自查
最简单的办法是用在线的 DNS 泄漏检测工具(搜索 "DNS leak test" 能找到不少)。挂好你的代理,再打开检测页面,看它报告出来的 DNS 服务器:
- 如果列出的服务器归属地、运营商和你代理的出口地区一致,基本正常;
- 如果里面出现了你真实所在地的运营商名字,那就是漏了。
多测几次、并在切换网络后再测一次,更能发现间歇性的泄漏。
怎么预防
没有单独一招能一劳永逸,通常是组合使用:
| 方法 | 作用 |
|---|---|
| 用自带加密 DNS 的代理/VPN,并开启 Kill Switch | 让解析强制走通道,断线时不裸奔 |
| 关闭用不到的 IPv6 | 避免 IPv6 解析绕过只支持 IPv4 的代理 |
| 浏览器开启 DNS over HTTPS(DoH) | 把 DNS 查询包进 HTTPS,运营商看不到也难劫持 |
| 防火墙限制 53 端口 | 只允许发往指定 DNS 服务器,堵住旁路出口 |
对需要稳定隔离多个身份的运营者来说,更省心的方向是让每个环境把 IP 和 DNS 绑定在同一条出口上,从源头避免「地区对不上」的矛盾。虎鲸 AI 浏览器就是这样处理的:每个环境走各自的代理出口,并内置 DNS 泄露防护,减少解析请求从本地旁路漏出去。
小结
DNS 泄漏的本质,是「访问走代理、查询走本地」这两条线路没对齐。它不一定让你当场断网,却会在防关联最要命的地方留下破绽。养成挂代理后顺手测一次的习惯,比出事后排查要省力得多。