DNS 泄露:你可能在裸奔
Q:什么是 DNS 泄露?
你访问网站时,第一步是把域名解析成 IP 地址,这个过程叫 DNS 查询。正常情况下,开了代理之后,DNS 查询也应该走代理隧道。
但如果配置不当,DNS 查询走了你本地的运营商网络,而网页流量走了代理——这就是 DNS 泄露。你的运营商看不到你访问的具体内容,但能看到你查询过哪些域名。相当于你戴着口罩出门,但身份证挂在脖子上。
Q:泄露了会怎样?
分两种情况看:
- 只是在意能不能上网:DNS 泄露通常不影响你正常访问,该打开的网站照样打开。所以很多人泄露了几年都不知道。
- 在意隐私:查询记录会留在运营商和本地 DNS 服务商那里。上了哪些网站、一目了然。
傅思的态度是:既然都折腾代理了,就别在这种基础环节裸奔。修好它花不了十分钟。
Q:我怎么知道自己有没有泄露?
方法很简单:
- 先连上你的代理,确认 IP 已经切换(搜"我的 IP"看归属地)。
- 打开一个 DNS 泄露检测网站(搜"DNS leak test"就能找到,选排名靠前的几个,交叉验证)。
- 点"开始检测",看结果里出现的 DNS 服务器归属。
如果结果里全是你的代理服务商的 DNS,或者显示的是代理 IP 所在地区的服务器——没泄露。如果出现了你本地运营商(比如联通、电信、移动)的 DNS——泄露了。
建议换两三个检测网站都测一遍,单个网站的结果偶尔不准。
Q:怎么避免泄露?
按优先级排序:
1. 开 TUN 模式(最省事)
TUN 模式接管整个系统的网络栈,DNS 查询自然也被接管。之前写过 TUN 模式科普,/clash/ 这类客户端里打开开关就行。这是新手最推荐的方案。
2. 客户端里指定 DNS
不想开 TUN 的话,在客户端的 DNS 设置里手动指定可信的 DNS(比如 1.1.1.1、8.8.8.8),并开启"通过代理查询 DNS"或类似选项。具体选项名称各客户端不一样,找设置里的 DNS 一栏就行。
3. 检查分流规则
有些分流规则会把 DNS 查询单独列出去。如果你用了自定义规则集,检查一下有没有把 DNS 流量直连的规则。规则集的概念可以看这篇。
Q:开了 TUN 就万事大吉了吗?
基本是,但有两个例外:
- 浏览器自带的"安全 DNS":Chrome、Edge 都有"使用安全 DNS"功能,开启后浏览器会自己去指定的 DoH 服务器查询,绕过系统设置。如果你开了 TUN 又开了浏览器的安全 DNS,检测网站可能显示 DoH 服务器的归属——这不算泄露,但你要知道流量去了哪里。建议统一用一处管理 DNS,别两头设置。
- IPv6:如果你的网络有 IPv6,而代理只处理了 IPv4,DNS 的 AAAA 查询可能走本地。简单的处理方式是在客户端或系统里关掉 IPv6,或者确认你的代理配置覆盖了 IPv6。
总结
DNS 泄露的检查清单,收藏这一段就行:
- 连上代理,跑一遍泄露检测
- 有泄露 → 开 TUN,或手动指定 DNS 走代理
- 关掉浏览器的"安全 DNS",避免两头打架
- 有 IPv6 的话确认代理覆盖了它,或直接关掉
隐私这件事,都是细节堆出来的。代理只是第一步,DNS 是第二步。