你真的了解 DNS 是什么吗?哪怕你觉得懂,还是建议看完下面这段解释。
DNS 是什么?
简单来说:
当你访问 torproject.org,背后其实是访问了 116.202.120.166 这个 IP 地址,域名只是为了方便人类记忆。DNS 就是把 “人类能读懂的地址” 转换成 “机器能识别的 IP 地址” 的系统。
这些域名-IP 对应表存储在全球分布的 DNS 服务器 上。大多数人使用的 DNS 服务器由 ISP(运营商)决定,也可以自行指定,比如用 Google 的 8.8.8.8。
实际结构更复杂,还涉及 NS/CDN 等中间层,但为简化理解,我们把功能都归类到 DNS 上。
Tor 中 DNS 是如何工作的?
当你使用 Tor 浏览网页时,不是你自己选择 DNS 服务器,而是由 Tor 网络的 出口节点(Exit Node) 选择。这意味着:
- 每次构建新的 Tor 路由链条时,出口节点都会更换,DNS 服务器也可能不同;
- 你无法控制出口节点使用哪个 DNS;
- Tor Project 也无法控制出口节点的 DNS 设置。
例如:2018 年 Tor Project 发现 24% 的 DNS 请求都发到了 Google 的服务器,后来又演变为 Cloudflare 和 Google 一起占了 31%。这引发了“去中心化”和隐私上的担忧。
什么是 DNS 泄露?它如何导致你被识别(去匿名化)?
DNS 泄露是指:本该通过 Tor 网络发出的 DNS 请求,却绕过 Tor,直接通过本地网络发出。
危害非常大:
国家机构可以通过以下方式追踪你:
- 监控 DNS 请求记录,得知你在某个时间访问了某些网站;
- 比对同一时间段访问同一网站的 DNS 请求记录,找出是谁发起的请求;
- 多次重复这个过程,逐步缩小范围,最终可能锁定你的真实身份。
如何检测 DNS 是否泄露?
你可以访问:https://www.dnsleaktest.com
如果测试结果显示的 DNS 服务器不在你的国家或地区,通常说明没有 DNS 泄露。建议多次更换 Tor 路由链条重新测试,结果应有所变化。
如何避免 DNS 泄露?
第一条:别乱配置 Tor!
最常见的错误:用普通浏览器 + socks5 手动设置 Tor 代理。这样不仅可能导致 DNS 泄露,还可能泄露浏览器指纹、系统信息等。
正确做法:
- 使用官方的 Tor Browser
- 或者更高级的:使用 Whonix(一套设计用于匿名通信的系统)
程序通过 socks5 代理也可能泄露 DNS
许多程序(如 XMPP 聊天客户端、FTP 工具等)即使设置了 socks5 代理,也不一定把 DNS 请求通过 Tor 发送,导致泄露。
如何安全使用这类程序?
- 简单方案:使用
torsocks命令,例如:
torsocks curl https://example.com
torsocks 可以自动接管程序的网络流量,强制走 Tor。
- 推荐方案:使用 Whonix Workstation 运行程序,它通过 Gateway 强制所有流量走 Tor,防止任何泄露。
那为什么我不能自己设定 DNS,比如用 DoH(DNS over HTTPS)?
Tor 不允许你自己设置 DNS,就是怕你“作死”。
原因如下:
- 如果你设定了自己的 DNS(比如 Google 的 DoH),那么你的行为就和大多数 Tor 用户不一样,容易暴露身份特征;
- 出口节点仍然有能力忽略你的 DNS 查询,返回伪造 IP;
- 你失去了 “每次更换 DNS” 的匿名特性,反而变得更集中、更容易追踪;
- DNS 缓存开启(比如 UseDNSCache)也会造成“伪造 IP 依然有效”的问题,即便换了路由链条仍会命中假地址。
总结一句话:你越折腾,匿名性越差。
如何验证自己系统中是否误用了 DNS 缓存?
执行以下命令检查配置文件是否存在相关缓存设置:
sudo egrep -inR --color 'DNSCache|CacheDNS|CacheIPv.DNS|UseIPv.Cache' /etc/tor/tor* /etc/torrc.d/ /usr/local/etc/torrc.d/ ~/.torrc*
如果什么也没输出,就说明没问题;如果有设置了 CacheDNS/UseDNSCache 等字段,把它们删除即可。
总结:Tor 中正确的 DNS 使用姿势
| 行为 | 是否推荐 |
|---|---|
| 使用官方 Tor Browser | |
| 使用 Whonix + Firefox/Tor Browser | |
| 使用 socks5 配合其他浏览器 | |
| 在浏览器中启用 DoH | |
| 系统开启 DNS 缓存 | |
| 自行设定 DNS 服务器 | |
| 使用 torsocks 启动应用程序 |
最后:真正破坏匿名性的不是 Tor,而是用户自己的误操作!
结论可能让人意外:Tor 本身的设计其实非常合理,真正造成匿名性破坏的,是我们自己“优化”、“改进”时犯下的错误。