跳至正文
中文
立即开始

DNS 泄漏

DNS 泄漏是指域名查询绕过预期的代理或 VPN 路由,使 DNS 解析器看到所请求的域名和原始网络。

文章目录(8 个章节)

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 泄漏

  1. 使用配置了代理的同一应用测试。 记录代理出口 IP,以及浏览器 DNS 泄漏测试报告的 DNS 解析器。
  2. 检查解析器的运营方。 如果解析器属于本地 ISP,就值得警惕。位于其他地区的公共解析器本身不能证明发生了泄漏,因为路由和任播会影响其显示位置。
  3. 启用远程解析。 选择“代理 DNS”或类似设置。使用 SOCKS5 代理时,应将主机名发送给代理,而不是在本地解析。
  4. 覆盖所有网络路径。 如果所有流量都必须走同一路径,请配置全隧道 VPN,并关闭拆分隧道或 DNS 直连回退。
  5. 更改设置后重新测试。 检查浏览器的安全 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 路由。

相关术语

查看全部术语