DNS 泄漏详解:它是什么、如何检测以及如何修复
了解什么是 DNS 泄漏、它为何会暴露你访问的网站,如何用 Colitu DNS 泄漏测试进行检查,以及如何通过 TUN 模式和浏览器设置修复。

VPN 会对你的设备与服务器之间的流量进行加密。但在浏览器打开某个网站之前,它必须先向 DNS 服务器询问该网站的地址。如果这些查询是在隧道之外传输的,那么即使你的网络运营商看不到内容,仍然能看到你访问的每个网站的名称。这就是 DNS 泄漏,也是 VPN 悄悄做得比你以为的更少的最常见原因之一。
DNS 的作用
DNS 是互联网的地址簿。当你输入网站名称时,你的设备会向解析器(通常是运营商的解析器)发送一次查询,并得到一个 IP 地址。传统 DNS 是未加密发送的,因此路径上的任何人都能读到你查询了哪些名称。较新的 DNS over TLS 和 DNS over HTTPS 会对查询加密,但运行解析器的一方仍然能看到每一个名称。
什么算泄漏
开启 VPN 后,你的查询应当通过隧道,并由 VPN 一侧的解析器来回答。泄漏则意味着至少有一部分查询走了别的路径,通常是直接发往运营商的解析器。其后果包括:
- 运营商可以建立一份你打开过的网站清单,并附有时间戳;
- 你可能得到指向拦截页面而不是真实网站的本地解析结果;
- 有些解析器会把你网络的大致部分(EDNS Client Subnet)转交给网站自己的 DNS 服务器。
泄漏为何会发生
- Windows 上的代理模式。 在系统代理模式下,浏览器会通过代理发送流量,但无视代理的程序会自行解析并连接。
- 浏览器的安全 DNS。 Chrome、Edge 和 Firefox 可以使用它们自己的 DNS over HTTPS 提供商。该提供商并不是你的运营商,但它会绕过 VPN 所设置的系统 DNS 配置。
- 自定义 DNS 设置,位于网络适配器、路由器或其他应用中。
- 同时运行的第二个 VPN 或代理,它会改变查询的路由方式。
Colitu DNS 泄漏测试的工作原理
我们的 DNS 泄漏测试会让你的浏览器查询一些仅为本次测试生成的随机名称。Colitu 是这些名称的权威服务器,因此可以看到每次查询是由哪个解析器送来的:那就是你的设备实际使用的 DNS 服务器。页面还会显示解析器是否转交了你网络地址的一部分(“子网”列)。随机 ID 以及查询过它的解析器只会在内存中保存十分钟,然后删除;它们不会与你的账户关联。
四步完成测试
- 先 关闭 VPN 并运行测试。记下你看到的解析器:通常是你的运营商的,或是你自己设置的公共解析器。
- 开启 VPN,等到显示“已连接”,再运行一次测试。
- 对比结果。现在不应再出现你的运营商的解析器,或你所在国家的任何解析器。看到 Google 或 Cloudflare 这类大型公共解析器本身并不算泄漏。
- 查看子网列。如果开启 VPN 后那里仍显示你自己的网络,说明查询是在隧道之外发出的。
如果希望在一个页面上查看全部内容,VPN 连接测试会同时检查 IP、DNS 和 WebRTC。
如何修复泄漏
Windows:使用 TUN 模式。 Colitu for Windows 提供系统代理模式(默认)和 TUN 模式。TUN 模式会让整个系统的所有流量和 DNS 查询都通过隧道,提供最强的保护。在应用设置中将其打开,然后再次运行测试。在 Linux(测试版)上,TUN 模式的作用相同,并会请求 sudo 权限。
浏览器的安全 DNS。 如果测试显示了你意料之外的解析器,请检查浏览器:
- Chrome: 设置 → 隐私和安全 → 安全 → 使用安全 DNS。将其设为你当前的服务提供商,或者关闭。
- Edge: 设置 → 隐私、搜索和服务 → 安全 → 使用安全 DNS。选择同上。
- Firefox: 设置 → 隐私与安全 → DNS over HTTPS。选择“默认保护”或“关闭”。
让解析器的位置与服务器的位置保持一致,有助于确保你的 DNS 查询在你预期的地方得到回答。
Android 私人 DNS。 如果你在 设置 → 网络 → 私人 DNS 下设置了自定义提供商,测试会显示该提供商。它不是你的运营商,但如果你希望由 VPN 一侧来回答查询,请将私人 DNS 设为自动。
其他检查。 测试时先从适配器或路由器中移除自定义 DNS 服务器,关闭其他 VPN 和“安全”类应用,然后再次运行测试。
什么不算泄漏
- 部分地区性网站。 在 Windows 和 Android 上,部分地区性网站(内置列表中的域名和 IP 段)会在隧道之外直接打开,以便拒绝外国 IP 地址的服务能继续正常使用。这是内置设计,没有开关,因此这些网站按设计看到的是你的正常连接。我们的测试运行在 colitu.com 上,不受影响。
- 公共解析器。 Google、Cloudflare,或服务器所在国家的解析器都是正常的。
速查表
| 开启 VPN 后测试显示的内容 | 含义 | 操作 |
|---|---|---|
| 服务器所在国家的解析器,或大型公共解析器 | 没有泄漏 | 无需操作 |
| 你的运营商的解析器 | 泄漏 | 在 Windows 上使用 TUN 模式,检查浏览器 DNS |
| 子网列中显示你自己的网络 | 泄漏 | 同上 |
| 你在浏览器中选择的 DoH 提供商 | 浏览器绕过了系统 DNS | 将安全 DNS 设为自动或关闭 |
相关内容:WebRTC 泄漏详解,以及帮助中心中的连接测试。
来源
- RFC 1035: Domain names, implementation and specification
- RFC 9076: DNS privacy considerations
- RFC 7858: DNS over TLS
- RFC 8484: DNS queries over HTTPS
- RFC 7871: Client subnet in DNS queries
- Chromium Blog: Secure DNS in Chrome
- Mozilla Support: DNS over HTTPS in Firefox
- Android Developers Blog: DNS over TLS support in Android