DNS 泄露检测的做法是:先弄清 DNS 泄露指域名查询没有走代理,再在关闭代理和开启代理两种状态下,各用公开的检测页查看当前生效的 DNS 解析来源并对比;如果开启代理后仍显示本地运营商的解析,就说明可能泄露。随后到客户端里检查 DNS 接管与相关设置,修正后复查。
dns泄露检测,是用代理的人容易忽略的一件事:节点是通的,网页是通的,你以为一切正常,但**域名查询可能悄悄走了本地网络,没有走代理。**这就是 DNS 泄露。它不会让你打不开网页,所以很难凭感觉发现;它泄露的也不是页面内容,而是“你访问了哪些域名”。这篇讲清楚它的原理,然后手把手教你自查:怎么测、怎么读结果、怎么修。
DNS 是什么,泄露又是什么
访问任何网站之前,设备都要先问一个“通讯录”:这个域名对应哪个地址。这就是 DNS 解析。关于 DNS 的基础概念,可以参考 Cloudflare 的科普页 What is DNS。
| 情形 | 域名查询去了哪里 | 结果 |
|---|---|---|
| 正常使用代理 | 通过代理发出 | 本地网络看不到你查询了哪些域名 |
| DNS 泄露 | 绕过代理,直接发给本地 DNS | 本地网络或运营商可能看到你访问了哪些站点 |
关键点:**泄露的是“访问了哪些域名”,不是页面内容。**概念的完整讲解读 DNS 泄露是什么。
为什么会发生泄露
| 原因 | 说明 |
|---|---|
| 客户端没有接管 DNS | 系统仍然使用原来的 DNS 设置 |
| 部分程序自带 DNS | 绕过系统与客户端的设置 |
| 规则与 DNS 配置不配合 | 一些域名被直连解析 |
| 使用 TUN 但 DNS 选项不当 | 接管了流量,却没处理好解析 |
所以检测的目的,是确认“域名查询是否真的跟着流量一起走了代理”。
dns泄露检测的基本思路:前后对比
最关键的方法是对比:
- 关闭代理,用检测页查看当前生效的 DNS 解析来源,记下结果,这是你的“本地基线”;
- 开启代理,再次用检测页查看,记下结果;
- 对比两次:如果开启代理后,显示的仍是本地的解析服务,说明域名查询没走代理;如果变成了代理一侧或其他上游,说明已经被接管。
具体怎么做:用公开的检测页自查
可以使用 Cloudflare 提供的帮助页 Cloudflare 1.1.1.1 帮助(检查连接信息),它会显示一些与你当前连接和解析相关的信息。操作要点:
| 步骤 | 做什么 | 注意 |
|---|---|---|
| 1 | 在本机浏览器里打开检测页 | 不要在这类页面里提交订阅链接或敏感信息 |
| 2 | 关闭代理,记录页面显示的信息 | 作为本地基线 |
| 3 | 开启代理,刷新页面再记录 | 如有缓存,刷新或换浏览器 |
| 4 | 对比两次的差异 | 看解析来源是否随代理变化 |
| 5 | 多测几次 | 排除缓存与偶然 |
检测页的显示内容与判断标准由其提供方决定,会随时变化,本文只讲通用思路。dns测试 和 dns检测 做到前后对比,就已经比单次查看可靠得多。
怎么读结果
| 你看到的情形 | 可能的含义 | 下一步 |
|---|---|---|
| 开代理后,解析来源与本地基线相同 | 可能存在泄露 | 检查客户端的 DNS 设置 |
| 开代理后,解析来源变了 | 已被接管 | 继续观察稳定性 |
| 结果忽而本地、忽而其他 | DNS 设置不稳定 | 检查是否有多个上游、是否有缓存 |
| 页面无法打开 | 代理或网络问题 | 先解决连通,再检测 |
要有分寸地解读:一次检测不能下结论,要结合多次结果。
修复的思路:从客户端设置入手
发现可能泄露,可以从这几个方向排查,具体选项以所用客户端为准:
- **确认客户端接管了 DNS。**很多客户端有专门的 DNS 设置,要确认已开启;
- **检查解析是否走了代理或指定上游。**避免直接使用本地运营商的解析;
- **使用 TUN 时,核对 DNS 选项。**接管了流量却没处理解析,就会泄露,原理读 TUN 模式是什么意思;
- **规则与 DNS 配合。**规则的写法读 Clash 规则模式怎么选;
- **留意副作用。**国内网站可能变慢,局域网访问可能异常,需要设置例外;
- **一次只改一项,改前备份。**改完用检测页复查。
修复之后,怎么复查
| 复查项 | 做法 | 通过的标志 |
|---|---|---|
| DNS 来源 | 再做一次前后对比 | 开代理后不再显示本地解析 |
| 国内网站 | 访问几个国内网站 | 速度正常 |
| 国外网站 | 访问几个国外网站 | 正常 |
| 局域网 | 访问局域网设备 | 不受影响 |
| 重启后 | 重启后再测 | 设置依然有效 |
什么时候需要重新做一次检测
DNS 的状态不是一成不变的,下面这些时刻,建议重新检测一遍:
| 时刻 | 为什么 |
|---|---|
| 换了客户端 | 不同客户端的默认 DNS 行为不同 |
| 升级了客户端或内核 | 默认设置可能变化 |
| 开启或关闭了 TUN | 接管范围变了,DNS 的处理也可能变 |
| 改了规则或策略组 | 可能影响域名走向 |
| 换了网络环境 | 本地 DNS 的情况不同 |
养成“改动之后检测”的习惯,成本只有几分钟,却能避免长期处于泄露状态而不自知。
常见的误解
- **“用了代理就不会泄露。”**DNS 是单独的一环,需要单独确认;
- **“泄露了页面内容就被看光了。”**泄露的是域名,页面内容通常有 HTTPS 保护;
- **“测一次没事就永远没事。”**换了客户端、升级、改设置之后,要再测;
- **“检测页的结论就是绝对的。”**它只是一个参考,要结合多次结果判断。
下一步
如果你想进一步了解风险全貌,读 机场安全吗;没选好机场的话,用 选机场向导 缩小范围,再翻 机场推荐榜 核对资料。dns泄露检测的要点:前后对比、多测几次、改一项复查一次。
最后补充:检测只是手段,目的是让你弄清楚自己的网络到底是什么状态。哪怕暂时没条件修复,知道有泄露,也比不知道要好,至少你能据此决定哪些操作要谨慎。
- 检测页的显示内容与判断标准由其提供方决定,会随时变化,本文只讲通用思路,不保证某个页面的结论。
- 不同客户端的 DNS 选项名称与行为差别很大,请以所用客户端的官方说明为准。
- 请在本机浏览器里使用检测页,不要把订阅链接或敏感信息提交给任何检测工具。
本文引用的官方来源
这篇的几个常见问题
怎么判断自己有没有 DNS 泄露?
在关闭代理和开启代理两种状态下,分别用公开的检测页查看当前使用的 DNS 解析来源,然后对比。如果开启代理后,显示的仍是你本地运营商的解析服务,说明域名查询没有走代理,可能存在泄露。要多测几次,也要在刷新缓存后测。
DNS 泄露了,页面内容会被看到吗?
泄露的是你查询了哪些域名,而不是页面里的内容。页面内容通常有 HTTPS 保护。但域名本身也是访问记录的一部分,泄露意味着本地网络或运营商可能看到你访问了哪些站点,所以仍然值得重视。
怎么在客户端里修正?
通常要确认客户端接管了 DNS,并且解析走了代理或指定的上游,具体选项因客户端而异。使用 TUN 时尤其要检查。修改之后用检测页复查,并留意国内网站是否变慢、局域网是否受影响。改前备份,一次只改一项。
检测页显示的结果每次都不一样,是怎么回事?
可能是因为解析存在缓存、使用了多个上游、或负载分担的机制。可以多测几次,也可以清除缓存后重测,看结果是否稳定。如果结果时而是代理一侧、时而是本地,说明 DNS 设置不够稳定,需要进一步检查客户端的配置。