DNS 泄漏是如何发生的
连接到 example.com 之前,客户端会使用 DNS 查询服务器的 IP 地址。如果该查询通过常规网络连接发送,而网页请求使用代理或 VPN,就会发生 DNS 泄漏。
HTTP 代理通常会接收主机名并完成解析。SOCKS 客户端可能在本地解析,也可能让代理解析,具体取决于设置。浏览器 DNS 预取、直接使用 DNS-over-HTTPS 和拆分隧道也可能形成另一条路径。
使用代理时为什么要关注 DNS 泄漏
请求可能通过代理出口 203.0.113.20 发出,而对应的 DNS 查询仍通过原始连接发送。DNS 解析器可以看到所请求的域名和源 IP 地址,但无法看到完整路径或经 HTTPS 加密的内容。
目标网站通常只能看到代理 IP,看不到 DNS 查询。但如果网站控制自己的权威 DNS,就能创建唯一的主机名,并将解析器信息和时间特征与网页请求比对。两者不一致时,可能成为一项机器人检测信号,但这并不代表使用代理的请求本身绕过了代理。
如何发现并阻止 DNS 泄漏
- 使用配置了代理的同一应用测试。 记录代理出口 IP,以及浏览器 DNS 泄漏测试报告的 DNS 解析器。
- 检查解析器的运营方。 如果解析器属于本地 ISP,就值得警惕。位于其他地区的公共解析器本身不能证明发生了泄漏,因为路由和任播会影响其显示位置。
- 启用远程解析。 选择“代理 DNS”或类似设置。使用 SOCKS5 代理时,应将主机名发送给代理,而不是在本地解析。
- 覆盖所有网络路径。 如果所有流量都必须走同一路径,请配置全隧道 VPN,并关闭拆分隧道或 DNS 直连回退。
- 更改设置后重新测试。 检查浏览器的安全 DNS、预取和扩展程序设置,清除 DNS 缓存条目,并分别测试 IPv4 和 IPv6。
DNS 泄漏与 WebRTC 泄漏的区别
WebRTC 泄漏源于浏览器的媒体网络功能,而不是主机名解析。
| DNS 泄漏 | WebRTC 泄漏 | |
|---|---|---|
| 机制 | 域名查询走了另一条路径 | 浏览器收集连接候选项 |
| 观察方 | DNS 解析器或网络运营商 | 网页脚本及相关服务器 |
| 可能暴露的信息 | 域名和源网络 | 本地或公网 IP 候选地址 |
常见问题
DNS 泄漏会把我的真实 IP 暴露给网站吗?
通常不会。DNS 解析器会看到源 IP,而网站通常看到的是代理出口 IP。但如果网站控制自己的 DNS,仍可能根据解析器数据推断出网络不一致。
HTTPS 能防止 DNS 泄漏吗?
不能。HTTPS 会加密域名解析完成后的网页流量。DNS-over-HTTPS 会加密查询,但如果直接连接解析器,仍可能绕过预期的代理或隧道。
代理正常工作时也会发生 DNS 泄漏吗?
会。HTTP 请求可以走代理,而 DNS 查询仍通过常规网络连接发送。许多客户端会分别设置代理路由和 DNS 路由。