DNS 泄漏防护

更新于 2026年9月21日 · 我们如何研究

DNS 泄漏意味着你的流量是加密的,但域名解析不是。隧道在传输数据的同时,你的设备却悄悄去问 ISP 的解析服务器该连到哪个地址 — 等于交出了一份你访问过的所有网站的清单。

DNS 泄漏防护改变了什么

页面请求可能已经加密,但 DNS 查询仍可能暴露目标域名。

ZoogVPN 在文档中说明其应用具备 DNS 泄漏防护;VPN Sherlock 认为,在给出测试结论之前应先公开可观察的测试条件。

左:查询跑到了 ISP 的解析服务器。右:查询在隧道内部传输。

三种成因各不相同的泄漏

这是彼此独立的问题。通过了 DNS 测试,并不能说明另外两项的情况。

泄漏成因解决办法
DNS 泄漏操作系统把域名解析发给了隧道之外的解析服务器。Windows 特别容易出现这种情况,因为它可能同时向所有网卡发起查询,谁先回答就用谁的。客户端必须指定隧道的解析服务器,并阻止发往其他解析服务器的查询。
IPv6 泄漏隧道只承载 IPv4,但操作系统优先使用 IPv6,于是把那部分流量发到了普通连接上。客户端要么把 IPv6 也送进隧道,要么在连接期间把它关掉。
WebRTC 泄漏浏览器的一个 API 会为点对点连接找出本地和公网地址,并通过 ICE 候选项把它们交给网页。在浏览器层面处理:禁用或限制 WebRTC,或者装一个扩展。只靠 VPN 解决不了这个问题。

WebRTC 是浏览器层面的问题

没有哪家 VPN 能靠自己完全堵住 WebRTC 泄漏,因为泄漏发生在流量到达网络栈之前的浏览器内部。任何声称能做到的服务商,都夸大了技术上可行的范围。请在你实际使用的那个浏览器里检查。

如何检查

  1. 连接之前先记下你的真实 IP 地址和 ISP。
  2. 连接到另一个国家的 VPN 服务器。
  3. 做一次 DNS 泄漏测试,确认显示出来的每一个解析服务器都属于 VPN,而不是你的 ISP。
  4. 做一次 IPv6 检查,确认要么没有显示 IPv6 地址,要么显示的是 VPN 的地址。
  5. 在每个浏览器里分别做一次 WebRTC 检查 — 不同浏览器的结果并不一样。
  6. 强制重连之后再测一遍,泄漏最常出现的正是这个时候。

ZoogVPN 是怎么说的

据 ZoogVPN 所述

ZoogVPN 称:「当你使用 ZoogVPN 应用时,我们会保护你免受 DNS 泄漏。我们的应用经过配置,使 ISP 无法收到 DNS 查询」,并称域名由其他 DNS 服务器解析。它的泄漏防护页面没有专门提到 IPv6 或 WebRTC 泄漏,我们也没有独立测试过这些行为中的任何一项。

由于那段说明并没有覆盖 IPv6 和 WebRTC,请按如何测试 VPN 里的步骤自己验证一遍。

常见问题

什么是 DNS 泄漏?
你的流量走隧道,但域名查询却走到了隧道之外的解析服务器,通常是你 ISP 的。结果是浏览的内容被保护了,而你访问过哪些网站却没有 —— 这让大半意义落空。它之所以常见,是因为决定查询去向的是操作系统,而 VPN 客户端必须去覆盖这个决定,而不是光存在就行。
VPN 能阻止 WebRTC 泄漏吗?
不能完全防住。WebRTC 是向浏览器索要候选地址的,所以暴露发生在浏览器内部,而不是 VPN 所控制的网络路径上。VPN 可以让公网地址不是真实的那个,但可靠的修复办法是浏览器设置或扩展。请在你用的每个浏览器里分别测试,因为各家表现并不一样。
为什么重连之后会出现泄漏?
重连期间虚拟网卡会短暂消失,操作系统会退回到默认的解析服务器。要紧的正是这个空档 —— 这也是为什么在 VPN 闲置时做测试说明不了什么。防住它的是防火墙层面的终止开关,因为它直接拦截隧道之外的流量,而不是等客户端重新建立隧道。
我自己设一个 DNS 不就行了吗?
可以,这对付 ISP 的解析服务器有帮助,但解决的不是同一个问题。手动设置的公共解析服务器依然看得到你的查询,而且除非客户端把它引进隧道,它仍然在隧道之外。目标是让查询走隧道,而不只是换个地方去问。
就算 DNS 没问题,IPv6 也会造成泄漏吗?
会,而且这正是人们最容易漏掉的一点。如果隧道只走 IPv4,而你的线路同时有 IPv6,操作系统可能优先用 IPv6,把那部分流量完全路由到隧道之外。请单独检查有没有 IPv6 地址:要么一个都不出现,要么出现的那个属于 VPN。