DNS 泄露检测
挂着 VPN 或代理时,你的域名解析请求有没有绕开隧道、交给了真实运营商的解析器?
什么才算 DNS 泄露
浏览器访问一个网站之前,要先向递归解析器问这个域名的地址。VPN 保护的是之后的流量;如果解析请求仍然发给了你真实运营商(比如本地电信、联通)的解析器,那么运营商就知道你访问了哪些域名,你访问的网站也能看出你真实的运营商。这才是泄露。
很多检测站在这件事上会误报:
- 「解析器 IP 与出口 IP 不同」不是泄露。递归解析器本来就是另一台机器,按这个标准,所有人都在泄露。
- 使用公共解析器不是泄露。出口在瑞典、解析器是 Cloudflare,ASN 和国家都对不上,但这只是在用公共 DNS,对隐私往往还是好事。
- 没挂 VPN 就无所谓泄露。直连用户用自家运营商的解析器完全正常,没有东西在被隐藏。严重程度必须以「出口是否在匿名」为前提。
n0.wiki 怎么测
我们在 dl.n0.wiki 运行自己的权威 DNS 服务器。测试时,浏览器请求几个随机生成的一次性子域名,你的递归解析器不得不来问我们的服务器,于是我们能直接看到两条相互独立的证据:
- 解析器是谁。判断它属于已知公共解析器、与出口同一网络、云或托管网络,还是疑似你真实运营商的接入网。识别 Google Public DNS 用的是 Google 官方发布的前缀表,而不是反向解析或只看 ASN(Google 解析器的出口看不出 8.8.8.8,而同一个 ASN 还承载着 Google Cloud)。
- ECS 网段是否包含你的出口。部分解析器会把客户端所在网段(EDNS Client Subnet)直接写进查询报文。如果这个网段不包含你的出口地址,说明解析请求来自另一个网络。这条证据是解析器自己写的,不需要推断。实测 Google 会发送 ECS,Cloudflare 与 Quad9 不发。
判定结果的含义
| 判定 | 含义 |
|---|---|
| 未观测到 | 测试没跑起来(比如被拦截),不代表没泄露。 |
| 未在匿名 | 有证据显示你是直连,谈不上泄露。 |
| 同网 | 解析器与出口在同一网络,通常是 VPN 自带的 DNS。 |
| 公共解析器 | 走的是已知公共解析器,符合预期。 |
| 无法定性 | 有第三方解析器,但我们分辨不出它是谁。不等于安全。 |
| 疑似泄露 | 解析器疑似属于你真实运营商的接入网。 |
| 条件性泄露 | 如果你在用 VPN,这就是泄露;但我们无法确认你是否在匿名。 |
如何修复 DNS 泄露
- 在 VPN 客户端里打开「使用 VPN 的 DNS」或「防止 DNS 泄露」选项;WireGuard 配置里写上
DNS =。 - Windows 上关闭「智能多宿主名称解析」,或确保 VPN 网卡的接口优先级最高。
- 浏览器里开启 DNS over HTTPS,并指定一个与出口一致或可信的解析器。
- 代理软件使用 TUN 模式或 fake-ip 时,确认 DNS 也走代理,而不是回落到系统解析器。
- 改完后回到首页重新测试一次。
隐私说明
测试记录只保存在内存数据库里,15 分钟后自动删除;一次性子域名是随机生成的,不关联任何身份。详见关于与隐私。