跳到主要内容

DNS 泄漏测试看起来很简单:打开一个网页,点一下按钮,读一串地址。实际上,很多人只测一次,看到一个看着没事或者看着吓人的结果,就放心或慌张,却不知道输出究竟意味着什么。测试页面本身只是一面镜子,你怎么布置实验,决定了镜子里的影像有没有用。

本文讲的是方法,不是定义。如果你需要先了解什么是 DNS 泄漏、为什么重要,请先阅读 什么是 DNS 泄漏。这里假设你已经理解概念,想把测试做对:先记录基线,在泄漏真正会发生的条件下测试,正确解读结果,并知道下一步该做什么。

DNS 泄漏测试到底在测什么

每次你打开一个网站,设备都会先请求 DNS 解析器把名称翻译成地址。没有 VPN 时,这个问题会发给网络分配给你的解析器,通常由宽带运营商运营,也就是说它能看到你查询了哪些名称。有了 VPN,这些查询应当在隧道内传输,交给 VPN 服务选定的解析器。泄漏就是部分查询仍然走老路出去了。

泄漏测试会诱使你的设备查询大量只有测试服务器认识的唯一名称。服务器记录每个查询是由哪个解析器送来的,然后把清单展示给你。所以页面并不是在看你的 VPN,而是在看是谁把问题递过来的。这就是解读很重要的原因:清单回答的是“谁替我的设备提了问”,而你得先知道自己期待的是谁。

有两个事实帮助你读懂它。

  1. 清单里的地址是解析器,不是你。 它告诉你是哪台服务器在提问。
  2. 解析器归谁所有才是关键。 属于宽带运营商或家用路由器的地址是警示信号;属于 VPN 服务或你自己选的公共解析器的地址,是预期的结果。

关于解析过程的通俗说明,请看 DNS 是如何工作的,正式细节可参阅 RFC 1035 规范。

第 1 步:连接之前先记录基线

大多数失败的测试在第一步就错了,因为人们从来没见过自己的网络“正常”是什么样子。

  1. 彻底断开 VPN,而不是仅仅暂停。
  2. 关闭多余的浏览器窗口和其他会发出网络请求的应用。
  3. 打开泄漏测试页面,运行标准测试,如有扩展测试再运行扩展测试。
  4. 记下解析器、归属方和显示的国家。
  5. 记下可见的公网 IP 地址。

你的基线可能显示宽带运营商的解析器、路由器的地址,或你此前自己设置的公共解析器。这就是你的参照清单。凡是出现在其中的东西,不应再出现在下一次测试里,除非你有意保留。

对你使用的每个网络都要保留一份基线。家里的结果和咖啡馆的结果不同,而 VPN 应该把两者都隐藏起来。

第 2 步:连接后在干净状态下测试

现在连接 VPN,并在以下控制条件下测试。

  1. 等应用明确显示已连接。
  2. 打开一个新的隐私浏览窗口。旧标签页可能缓存了查询结果。
  3. 访问测试页面,先运行标准测试,再运行扩展测试。
  4. 记录新的解析器和归属方清单。
  5. 与基线比较。

可以用下表解读结果。

你看到的 可能的含义 该怎么做
只有 VPN 服务的解析器 隧道承载了 DNS 此场景下通过
你在 VPN 应用中选择的公共解析器 应用使用了你设置的解析器 如符合你的本意则通过
与你的基线相同的解析器 DNS 走了隧道之外 视为泄漏
两组混合出现 部分查询绕过了隧道 视为泄漏并继续排查
浏览器自己选的解析器 浏览器有自己的 DNS 检查浏览器 DNS 设置
什么都没有或报错 测试被阻止或页面失败 换个网络重试

单次结果只是一个数据点。接下来的步骤会告诉你它是否站得住。

第 3 步:在泄漏真正出现的场合测试

DNS 泄漏很少一直存在,它们往往发生在状态切换时,也就是软件正在决定把流量送往何处的时候。请在下面这些情形里重复同样的测试。

  1. 切换服务器之后。 在应用里更换位置,等待新连接建立,然后重测。
  2. 切换网络之后。 从 Wi-Fi 换到移动数据,或在两个 Wi-Fi 之间切换,再测一次。
  3. 休眠或睡眠唤醒之后。 合上笔记本盖子再打开,网络一恢复就马上测试,一分钟后再测一次。
  4. 短暂断线之后。 把 Wi-Fi 关了再开,等 VPN 重新连上后测试。
  5. 开启与关闭 IPv6 时。 有些网络同时给设备 IPv4 和 IPv6,DNS 查询可能走了 VPN 没覆盖的那一个。参见 IPv6 泄漏说明 了解如何区分。
  6. 开启与关闭浏览器的安全 DNS 时。 浏览器可以使用自带的加密 DNS 而忽略系统解析器。DNS over HTTPS 与 VPN 一文说明了两者如何相互作用。
  7. 开启分流时。 被你排除在隧道之外的应用也会使用外部 DNS。这是预期的,但要测试确认它只发生在你选定的应用上。

如果泄漏只在其中一种情形出现,你就已经知道该修什么了。

第 4 步:不要只看网页

测试页面测的是浏览器的查询。其他软件的行为可能不同,所以最好用命令行或第二个应用交叉检查。

  • 查询一个名称,看谁回答。 nslookup 或 dig 这类工具会显示是哪台服务器回答的。对一个你控制的域名下编造的子域名或一个已知名称运行,并查看“Server”一行。
  • 检查已配置的 DNS。 在系统网络设置里,看 VPN 适配器使用哪些解析器地址。在 Windows 上,ipconfig /all 会列出它们;在 macOS 上,scutil --dns 显示解析器顺序;在 Linux 上,检查系统的解析器配置。各平台指南 Windows 上的 DNS 泄漏 和 Mac 上的 DNS 泄漏 有详细说明。
  • 如果熟悉,可以抓包。 在网络接口上抓包,过滤 53 端口的 DNS,就能看出明文查询是否在隧道之外离开了这台机器。这是最直接的证据,但需要一定技能。
  • 用第二台设备。 如果可以,用同一个账号在手机和笔记本上各测一次。如果只有一台泄漏,原因在那台设备上的应用或操作系统设置。

我们对 如何测试 VPN 的概述把 DNS 测试与 IP、kill switch 和速度检查放在一起,而侧重浏览器的 浏览器泄漏测试 指南则说明了这类页面能看到什么、看不到什么。

区分虚惊与虚假的安心

不是每个意外都是泄漏,也不是每个干净的结果都真的干净。

虚惊

  • 测试显示的解析器所在国家与你预期不同。大型解析器运营方使用许多地点,测试可能显示的是恰好回答的那个。
  • 测试显示同一运营方的多个地址。这是正常的负载分散。
  • 解析器属于你在 VPN 应用里配置的公共服务。那是你的选择,不是泄漏。
  • 企业或学校的 VPN 有意使用机构的解析器。请查看你所在网络的政策。

虚假的安心

  • 页面只显示 VPN 的解析器,但你只在稳定状态下测了一次,从未重复。
  • IP 地址看上去正确,这说明的是流量,而不是 DNS。
  • 浏览器的安全 DNS 把泄漏对网页隐藏了,但没有对其他应用隐藏。
  • 缓存的查询导致测试根本不需要提出新问题。

请记住,干净的结果只证明测试那一刻的行为,并不保证接下来的一个小时。

三个实际例子

休眠后泄漏的笔记本。 小米在书桌前测试,只看到 VPN 的解析器。后来她合上盖子,在咖啡馆重新打开,立刻再测。结果里有大约三十秒出现了咖啡馆的解析器,随后自行纠正。她明白了笔记本在 VPN 重新连上之前就已经在回应 DNS。她启用了应用的自动保护设置,并在状态显示已连接前避免打开新标签页。

带有自己 DNS 的浏览器。 约纳斯运行测试,看到一个不认识的公共解析器。VPN 应用已开启,系统 DNS 也正确。检查后他发现浏览器的安全 DNS 选项指向了一个公共解析器。他决定让查询跟随 VPN,于是把浏览器设为使用系统解析器。下一次测试只显示 VPN 的解析器。

IPv6 绕路。 爱子家的网络除了 IPv4 还提供 IPv6。她的基线在两者上都显示宽带运营商的解析器。开着 VPN 时,IPv4 的清单是干净的,但扩展测试在 IPv6 上仍显示她的运营商。她在网络适配器上关闭 IPv6,重新测试,清单变干净了。她也记下这一点,留给下一个网络,因为每个网络的表现各不相同。

发现泄漏后怎么办

  1. 重新连接并重复测试。 完全断开,重新连接,等到已连接状态再测。状态切换后的一次坏结果未必会重现。
  2. 更新应用和操作系统。 关于泄漏的修复在更新中很常见。
  3. 查找应用里的 DNS 或防泄漏设置,如果是关闭的就打开。
  4. 关闭相互竞争的路径。 如果测试指向它们,就在适配器上关闭 IPv6,或关闭浏览器自带的 DNS。
  5. 检查分流设置。 确认被测试的应用没有被排除在外。
  6. 清除设备上的 DNS 缓存,避免旧的查询干扰结果。
  7. 换一个网络试试。 如果泄漏只出现在某一个 Wi-Fi 上,可能是路由器劫持了 DNS。与移动数据对比。
  8. 联系客服,附上你的基线、泄漏的清单、出现的情形和应用版本。

如果你在用 XPASS 套餐搭配免费的 VPNclient 应用,My Pass 页面和帮助文档会说明设置与排障。检查 VPN 是否在工作的指南 以更通用的方式带你走一遍基本检查。

任何泄漏测试的局限

  • 测试页面只能看到到达它自己服务器的东西。
  • 它无法证明将来绝不会泄漏。
  • 它不测试使用自己 DNS 方式的应用。
  • 它无法告诉你 VPN 服务商对收到的查询做了什么。那是服务商条款和可信度的问题。
  • 在屏蔽测试网站的网络上运行,测试什么也不会显示。

把测试当作例行流程中的一次测量:取基线、连接、测试、对切换状态施压,并在更新后重复。

总结

好的 DNS 泄漏测试从未开 VPN 时记录的基线开始,再与干净的已连接状态对比。要根据解析器归谁所有来解读,而不是看有多少个或表面上在哪里。在切换服务器和网络之后、休眠之后、开关 IPv6 时,以及开关浏览器自带 DNS 时都要重复测试,因为泄漏多发生在状态切换时。能用命令行工具交叉验证就尽量验证,一旦发现泄漏,就按顺序逐项排查修复。

如果你想要一个预付套餐来在自己的设备上做这些检查,可以在 价格页面 看看有哪些选择。

常见问题

怎么判断测试结果是不是真的泄漏?

与未开 VPN 时记录的基线对比。如果开着 VPN,结果里仍然列出你的宽带运营商或家用路由器的解析器,说明 DNS 查询在隧道之外发出。如果列出的是 VPN 服务的解析器或你自己选的公共解析器,则不算泄漏。

为什么测试结果里有好几个解析器?

解析器常分布在多个地址,测试也可能查询多个名称。同一运营方的多个地址是正常的。要看它们归谁所有,而不是看有多少个。

测一次够吗?

不够。切换网络后、电脑从休眠唤醒后、更换服务器后,以及连接断开又恢复后,都应重复测试。泄漏往往出现在状态切换的瞬间,而不是稳定状态。

即使 VPN 工作正常,浏览器设置也会导致泄漏吗?

会。有些浏览器使用自带的加密 DNS,可能把查询发到你在浏览器里选择的解析器,而不是 VPN 提供的那个。这算不算泄漏取决于你的本意,但测试结果会把它显示出来。

测出泄漏后该怎么办?

先断开、重新连接,再测一次。然后检查应用里是否有 DNS 或防泄漏选项,如果原因是 IPv6 就关闭该路由,检查浏览器层面的 DNS 设置,并更新应用。仍然存在的话,带着测试结果联系客服。

关于作者

Bob Kanokphon Thongdee,XPASS VPN 创始人

Bob Kanokphon Thongdee

  • XPASS VPN 创始人
  • eSIMonline.asia 联合创始人
  • 7 年以上网络营销经验
  • Cojourney Visa 与 Cojourney Travel 创始人

短途出行或忙碌的一个月,需要 VPN?

XPASS 提供按天数计算的预付通行证。一次付款,不会自动续费。

查看通行证

继续阅读

VPN 安全

什么是 DNS 泄漏?

DNS 泄漏是指设备在 VPN 隧道之外查询网站地址。本文说明它为什么发生、如何检测,以及该怎么处理。

阅读约 10 分钟

VPN 安全

如何自己评测 VPN:一份测试清单

许多 VPN 评测是为赚取佣金而写的。这份清单教你自己测试任何 VPN:哪些能验证,哪些不能,以及如何给结果打分。

阅读约 9 分钟

设备指南

如何测试浏览器 VPN 扩展是否泄漏

一套可重复的浏览器 VPN 扩展测试流程:先记基线,再做四项检查,记录所见,并在地址漏出时决定下一步。

阅读约 10 分钟

VPN 安全

IPv6 泄漏与 VPN:实用指南

一份动手指南:两套地址体系为何会造成缺口、怎样测试和解读结果,以及按顺序可以尝试的修复办法。

阅读约 10 分钟

VPN 安全

DNS over HTTPS 与 VPN 有何不同?需要两者一起用吗

DoH 与 DoT 让本地网络看不到你的 DNS 查询,VPN 则包住你的全部流量。了解各自覆盖什么、Android 私人 DNS 如何配合,以及何时需要两者并用。

阅读约 9 分钟