机场知识 知识解读

DNS 泄漏是什么?代理环境下 DNS 泄漏的成因、检测与避免方法

DNS 泄漏指本应经过代理处理的域名解析请求被直接发给本地 DNS。本文解释它在代理环境中的影响、五种常见成因、通用检测思路,以及 TUN、fake-ip 与浏览器设置的处理方法。

首次发布
最后更新
内容类型
知识解读
阅读时间
约 3 分钟

直接答案

DNS 泄漏是指开启代理后,本应交给代理客户端或远端节点处理的域名解析请求,仍然直接发给了本地运营商或系统默认的 DNS 服务器。它会让本地网络看到你访问了哪些域名,可能拿到被污染的解析结果,也会让目标服务看到与代理出口不一致的地区信号。常见成因是只用系统代理、TUN 未开启 DNS 接管、IP 类规则触发本地解析、浏览器自行解析和 IPv6 DNS 绕行。

定义 DNS 泄漏
DNS Leak。在使用代理或 VPN 时,域名解析请求没有按预期经过代理通道,而是直接发送到本地网络或系统默认的 DNS 服务器,导致访问的域名暴露给本地网络,并可能得到被污染的解析结果。

Key Takeaways · 要点速览

  • DNS 泄漏暴露的是访问的域名,而不是访问内容,但同样会带来隐私和地区判断问题。
  • 规则模式下国内域名用本地 DNS 解析是设计行为,需要关注的是代理域名的解析去向。
  • TUN 模式要同时开启 DNS 接管,否则程序可能直接向外部 DNS 发起解析。
  • IP 类分流规则可能为了匹配而触发本地解析,客户端通常提供相应选项避免。
  • 检测思路是看解析请求最终由哪个网络的 DNS 服务器发出。

DNS 泄漏的直接解释

访问任何网站之前,设备都要先把域名解析成 IP 地址。正常的代理环境中,代理域名的解析要么交给代理客户端处理,要么随连接一起交给远端节点完成。如果解析请求绕过了这套机制,直接发给了本地运营商或系统默认的 DNS 服务器,就是 DNS 泄漏。

泄漏不会暴露你访问的具体内容,但会暴露访问了哪些域名;同时可能拿到被污染的解析结果,导致连接失败。对依赖环境一致性的服务来说,DNS 出口与代理出口地区不一致,也会成为一个异常信号,参见 IP 风控是什么。

DNS 污染、解析失败的系统性排查已在 DNS 错误与 DNS 污染排查指南 中介绍,本文聚焦「泄漏」本身。

先区分:哪些本地解析是正常的

情况 是否属于泄漏 说明
规则模式下,国内域名由国内 DNS 解析 否 分流设计如此,目的是直连更快
代理节点的服务器域名由本地 DNS 解析 通常否 客户端需要先找到节点地址才能建立连接
境外代理域名的解析请求发给了本地运营商 DNS 是 本应经由客户端或远端处理
全局模式下仍有请求发给本地 DNS 是 说明有程序绕过了客户端

判断是否泄漏,关键是看本应走代理的域名,解析请求最终从哪里发出。

五种常见成因

  1. 只开系统代理:系统代理只对遵循代理设置的程序有效,命令行工具、部分桌面应用会自行解析并直连。
  2. TUN 未开启 DNS 接管:TUN 接管了流量,但程序直接向外部 DNS 服务器发出的解析请求没有被劫持到客户端。
  3. IP 类规则触发本地解析:分流规则中如果有按 IP 或 IP 归属地匹配的规则,客户端可能需要先在本地解析域名才能判断,从而把代理域名发给了本地 DNS。部分客户端支持在这类规则上设置不解析的选项(如 Mihomo 的 no-resolve),以客户端文档为准。
  4. 浏览器安全 DNS:浏览器开启安全 DNS(DoH)后会自行解析,绕过客户端的 fake-ip 与规则匹配。
  5. IPv6 DNS 绕行:系统通过 IPv6 获得了运营商下发的 DNS 服务器,客户端只接管 IPv4 时,这部分解析可能直接发出,详见 IPv6 与代理。

通用检测思路

DNS 泄漏检测的原理是:让设备解析一批随机生成的子域名,再由检测方的权威 DNS 记录是哪些递归 DNS 服务器来查询了它们。检测时:

  1. 固定一个代理节点,确认代理已生效;
  2. 使用 DNS 泄漏检测类工具发起检测,查看列出的 DNS 服务器所属的网络与国家;
  3. 如果列表中出现本地运营商的 DNS 服务器,说明代理域名的解析发生了泄漏;
  4. 分别在浏览器和命令行环境中各测一次,二者结果可能不同。

提示在 fake-ip 模式下,检测结果显示的通常是节点所在地区或节点服务商使用的 DNS 服务器,这是正常结果。用 nslookup 看到 198.18 开头的地址也属于正常现象,不要误判为污染。

如何避免 DNS 泄漏

措施 解决的成因 说明
使用 TUN 模式并开启 DNS 接管 1、2 让不遵循系统代理的程序也经过客户端,设置方法见 Clash Verge Rev TUN 模式设置
启用 fake-ip 3 代理域名不在本地做真实解析
IP 类规则设置不解析选项 3 避免为匹配规则而本地解析,以客户端文档为准
关闭或统一浏览器安全 DNS 4 让浏览器解析交回客户端处理
处理 IPv6 5 让客户端接管 IPv6,或在客户端中关闭 IPv6 解析

注意修改 DNS 设置后,记得清除系统与浏览器的 DNS 缓存再复测,否则旧的解析结果会干扰判断。如果改动后出现大面积无法解析,可参考 DNS 错误怎么办 回退排查。

结论

DNS 泄漏的本质是「解析请求没有跟着代理走」。规则模式下国内域名本地解析是正常设计,需要关注的是代理域名的解析去向。用 TUN 加 DNS 接管覆盖更多程序,用 fake-ip 和不解析选项减少本地解析,再处理好浏览器安全 DNS 和 IPv6,绝大多数泄漏都能消除。

常见问题

规则模式下国内网站走本地 DNS,算 DNS 泄漏吗?

通常不算。分流的目的就是让国内域名直连并由国内 DNS 解析,以获得更快的访问。需要关注的是本应走代理的境外域名,是否也被发给了本地 DNS。

开了 fake-ip 还会发生 DNS 泄漏吗?

fake-ip 可以让代理域名不在本地做真实解析,但如果程序绕过客户端(如浏览器安全 DNS、未被接管的 IPv6 DNS),或 IP 类规则触发了本地解析,仍可能出现泄漏。

DNS 泄漏会影响 AI 工具使用吗?

可能有影响。泄漏可能导致解析到错误地址而连接失败,也可能让服务方看到与代理出口不一致的环境信号。能否使用仍以官方支持地区列表为准。

只用系统代理为什么容易泄漏?

系统代理只对遵循系统代理设置的程序生效,不遵循的程序会自己解析并直连。TUN 模式在网络层接管流量,配合 DNS 接管能覆盖更多程序。