DNS 泄漏原理

DNS 查询为什么会绕过代理、泄漏的解析器会暴露什么信息,检测原理与修复方法。

约 5 分钟阅读更新于 2026-11-02

访问任何网站之前,设备都要先把域名解析成 IP,这一步由 DNS 完成。如果流量走了代理,DNS 查询却仍由本地运营商的服务器处理,就发生了 DNS 泄漏:网站内容是加密的,但你访问了哪些域名、你所在的网络,都可能被暴露。

DNS 查询的路径

  1. 浏览器请求 example.com,交给系统的 DNS 解析器;
  2. 解析器(通常是路由器或运营商的 DNS 服务器)向上递归查询;
  3. 域名的权威服务器返回 IP,并且能看到是哪个递归解析器来问的。

第 3 步是检测与泄漏的关键:权威服务器看到的递归解析器 IP,往往属于你的运营商,能直接反映你的真实网络与大致地区。

为什么开了代理还会泄漏

  • 代理只接管了连接,没接管解析:浏览器先用系统 DNS 解析域名,再把解析后的 IP 交给代理连接。
  • 分流规则需要先解析:按「国内直连、国外代理」分流时,客户端常常要先解析域名来判断走哪条路,这次解析可能用的就是本地 DNS。
  • 系统或浏览器另有 DNS 设置:例如操作系统指定了运营商 DNS,或浏览器开启了指向某个服务商的 DoH,绕开了代理客户端的 DNS 设置。
  • IPv6 未被代理:代理只接管 IPv4 时,IPv6 的 DNS 查询会直接走本地网络。

检测原理

检测服务会让浏览器去访问一批随机生成、从未出现过的子域名。因为是全新的名字,任何缓存都没有,必须一路查到检测服务自己的权威服务器。权威服务器记下发起查询的解析器 IP,再把结果告诉网页:

  • 解析器的国家、运营商与代理出口一致:没有泄漏;
  • 解析器属于本地运营商、或国家与出口不同:存在 DNS 泄漏。

本站会同时比对解析器与当前出口的国家和 ASN。解析器是公共 DNS(如 Cloudflare、Google)时,只要它所在国家与出口一致,通常也可以接受。

如何修复

  • 开启代理客户端的 DNS 接管:使用 TUN 模式或开启「DNS 劫持 / Fake-IP」,让所有 DNS 查询都由代理客户端处理。
  • 远程解析:SOCKS5 代理选择「由代理端解析域名」(如浏览器中的远程 DNS 选项)。
  • 同时处理 IPv6:代理不支持 IPv6 时,可在系统中关闭 IPv6,避免查询绕过。
  • 检查浏览器的安全 DNS:确认 DoH 设置与你的代理方案一致,不要让浏览器直连另一家 DNS 服务。

WebRTC 是另一条常见的泄漏途径,见 WebRTC 泄漏原理。