什么是 DNS 泄漏
即使正在使用 或 ,如果忽视了 DNS 的处理,关于你试图连接哪些域名的线索,也可能从另一条路径流出。
这就叫 DNS 泄漏(DNS leak)。
DNS 泄漏和通信内容本身被读取的问题略有不同。 真正的问题在于,它会暴露“试图访问哪个网站”这一连接目标线索。
例如,你以为已经通过 VPN 改变了通信路径,但如果只有 DNS 查询被发送到平时使用的 ISP 的 DNS 解析器,那么 ISP 一侧可能会看到被查询的域名。
本文会整理 DNS 泄漏中会看到什么、它与 VPN 和 Tor 有什么关系,以及检查时应该看哪些点。
DNS 是查询连接目标的机制
DNS 是把域名对应到 IP 地址的机制。
用浏览器打开网站时,人会使用域名。 但是,要在网络上实际通信,就需要连接目标的 IP 地址。
因此,设备或浏览器会向 DNS 解析器发出查询,查找与域名对应的 IP 地址。
| 阶段 | 发生的事 | 匿名性中要看的点 |
|---|---|---|
| 1 | 浏览器使用域名 | 产生想要连接的网站名 |
| 2 | 向 DNS 解析器查询 | 向哪个解析器查询会变得重要 |
| 3 | 返回 IP 地址 | 可以向该 IP 地址通信 |
| 4 | 连接到网站 | 如果是 HTTPS,正文会受到加密保护 |
DNS 查询不是页面正文或表单内容本身。 但是,“查询了哪个域名”会成为推测访问目标的强线索。
DNS 泄漏的问题是什么
DNS 泄漏的问题在于,即使你以为已经改变了通信路径,只有 DNS 查询会从另一条路径流出。
例如,假设使用 VPN 的目的是“让 ISP 更难直接看到连接目标”。 这时,即使 Web 通信正在前往 VPN 服务器,如果只有 DNS 查询流向 ISP 一侧,ISP 仍可能看到被查询的域名。
也就是说,即使连接目标网站的正文因为 HTTPS 而不容易被读取,在 DNS 阶段仍可能留下“试图查看哪个域名”的痕迹。
| 状态 | Web 通信的可见方式 | DNS 的可见方式 |
|---|---|---|
| 普通连接 | ISP 能看到连接目标 IP 等信息 | 通常会使用 ISP 一侧的 DNS |
| VPN 正常工作 | ISP 看到的是 VPN 连接 | 流向 VPN 一侧或指定的 DNS |
| 存在 DNS 泄漏 | Web 通信经过 VPN | 只有 DNS 流向 ISP 一侧 |
| 使用 Tor Browser | Tor Browser 内的名称解析会经由 Tor 处理 | 需要与普通浏览器和其他应用分开考虑 |
如果以为“既然用了 VPN,连接目标就看不见”,DNS 泄漏就容易被漏掉。
在匿名性中,需要把 Web 通信的路径和 DNS 查询的路径分开确认。
使用 VPN 时尤其容易发生
DNS 泄漏在使用 VPN 时尤其需要注意。
VPN 会从设备到 VPN 服务器建立通信路径,再经由该服务器向外通信。 从连接目标网站来看,看到的不是用户的家庭 IP,而是 VPN 服务器的 IP 地址。
但是,如果 DNS 查询设置没有随着 VPN 一起切换,只有 DNS 可能会流向平时的网络。
在这种状态下,即使连接目标网站看到的 IP 是 VPN 服务器,被查询的域名仍会留在 DNS 解析器一侧。
| 原因 | 发生的事 | 要确认的事 |
|---|---|---|
| VPN 的 DNS 设置不充分 | 只有 DNS 流向普通线路 | VPN 连接中的 DNS 服务器 |
| OS 一侧固定 DNS | OS 设置优先于 VPN | 网络设置 |
| 浏览器的独立 DNS | 浏览器使用另一个 DNS | 浏览器的 DNS 设置 |
| VPN 断开时的泄漏 | 断开后回到普通线路 | Kill switch 和重新连接设置 |
如果使用 VPN,不只要确认 IP 地址,也要确认 DNS。 仅凭“连接目标看到的 IP 变了”,不能说明不存在 DNS 泄漏。
与 Tor 的关系
使用 Tor Browser 时,思路会不同于普通 Web 浏览。
Tor Browser 被设计为通过 Tor 网络处理通信。 因此,在 Tor Browser 内访问网站时的名称解析,需要与普通浏览器分开考虑。
不过,如果 Tor Browser 以外的应用或平时使用的浏览器仍通过普通线路通信,它们的 DNS 查询会作为另一个问题留下。
也就是说,即使使用 Tor,整个设备的所有通信也不会自动全部经由 Tor。 需要确认想要匿名化的通信到底是从哪个应用发出的。
DNS 泄漏中看得见和看不见的信息
要正确理解 DNS 泄漏,需要把可见的信息和不可见的信息分开。
| 信息 | DNS 泄漏中是否可见 | 说明 |
|---|---|---|
| 域名 | 可能可见 | 会成为查询了哪个网站的线索 |
| 查询时间 | 可能可见 | 会成为与其他日志比对的轴 |
| 页面正文 | 仅凭 DNS 看不见 | 与 HTTPS 的内容是另一回事 |
| URL 的路径和查询 | 普通 DNS 中通常看不见 | DNS 主要处理域名 |
| 表单输入内容 | DNS 中看不见 | 作为 HTTP 通信的内容处理 |
DNS 泄漏并不是页面内容全部泄漏的问题。 但是,在匿名性中,仅仅“试图访问哪个域名”也可能是重要线索。
尤其是当它与时间、IP 地址、VPN 连接日志、发布时间、账号行为组合起来时,就会成为关联分析的材料。
要确认什么
确认 DNS 泄漏时,要比较 VPN 连接前后可见的信息。
使用外部 DNS 泄漏检测网站时,要看显示的 DNS 服务器属于平时的 ISP 一侧、VPN 一侧,还是浏览器自己的 DNS。
不过,不能只凭测试网站的结果就判断为完全安全。 结果会因测试范围、浏览器、OS 设置、VPN 应用、连接时机而变化。
| 确认项目 | 查看理由 |
|---|---|
| VPN 连接中的 DNS 服务器 | 确认 ISP 一侧的 DNS 是否没有出现 |
| 浏览器的 DNS 设置 | 确认浏览器独立 DNS 是否符合意图 |
| VPN 断开时的行为 | 查看断开时是否回到普通线路 |
| IPv6 的处理 | 确认是否只有 IPv6 走了另一条路径 |
| 多个浏览器 | 查看匿名用和平时用的结果是否混在一起 |
DNSLeakTest 是一个可以确认外部看到的 DNS 解析器信息的检测网站。 在 VPN 连接前后比较显示结果,可以更容易确认 DNS 查询是否走了预期路径。
URL : https://www.dnsleaktest.com/
在高风险匿名活动中,不要只因为完成了 DNS 泄漏检查就安心。 、登录状态、浏览器指纹、发布内容、文件元数据也需要另行确认。
总结
DNS 泄漏是指,即使你以为已经改变了通信路径,DNS 查询仍从非预期路径流出。
DNS 不是处理页面正文的机制。 但是,被查询的域名会成为试图连接哪个网站的线索。
即使使用 VPN,如果只有 DNS 流向 ISP 一侧,仍会留下推测连接目标的材料。 使用 Tor Browser 时,也需要把 Tor Browser 以外的应用和普通浏览器的通信分开考虑。
在匿名性中,不只要确认 IP 地址,也要一起确认 DNS、Cookie、登录状态、浏览器、发布内容。 DNS 泄漏对策很重要,但并不意味着匿名性就此完成。
相关工具
WhatIsMyIP
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
DNSLeakTest
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
BrowserLeaks WebRTC
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
Proton VPN
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
URL : https://protonvpn.com/
Mullvad VPN
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
URL : https://mullvad.net/