很多人理解 DNS,但很少有人理解 Tor 环境下 DNS 的脆弱性。本文将带你拆解这个隐藏的“隐私杀手”。
重新认识 DNS:互联网的“导航员”
简单来说,DNS(域名系统)是互联网的电话簿。
当你访问 torproject.org 时,机器并不认识这个字母组合,它需要通过 DNS 查询到背后的 IP 地址(如 116.202.120.166)。
- 常规模式:你的 DNS 请求通常发给 ISP(运营商)或 Google(8.8.8.8)。
- 隐私风险:谁掌握了 DNS 记录,谁就掌握了你访问过哪些网站的“绝对证据”。
Tor 的 DNS 是如何“强制匿名”的?
在 Tor 网络中,DNS 解析权不在你手里,而在出口节点(Exit Node)手里。
- 链路绑定:你的 DNS 请求通过加密隧道传输,直到抵达出口节点。
- 出口解析:出口节点代替你向公共 DNS 发起查询。
- 动态切换:由于 Tor 链路每 10 分钟左右会自动更换,你的 DNS 解析路径也在全球范围内不断漂移。
核心逻辑:Tor 让你“消失在人群中”,通过让你和成千上万个出口节点的行为保持一致,来掩盖你的真实身份。
DNS 泄露:身份曝光的第一步
DNS 泄露是指:你的电脑本该通过 Tor 隧道查询 IP,却因为配置错误,绕过代理直接向本地 ISP 发起了明文查询。
致命后果:
- 流量关联:即便你的网页内容是加密的,ISP 依然知道你在这一秒访问了某暗网地址。
- 时序攻击:攻击者通过比对 DNS 请求的时间戳和网站流量进入 Tor 的时间,可以极高概率锁定你的真实地理位置。
避坑指南:如何检测并防止泄露?
1. 实时检测
访问 dnsleaktest.com。
- 通过标准:显示的 IP 必须是国外地址,且每次更换“新线路”后,DNS 服务器应当发生变化。
2. 拒绝“作死”配置
禁止:使用 Chrome/Edge + SOCKS5 手动代理。这不仅漏 DNS,还漏浏览器指纹。
推荐:使用官方 Tor Browser(已预设全链路防泄露)。
终极方案:使用 Whonix 系统。它通过网关隔离,强制所有流量(包括 DNS)必须经过 Tor,物理上杜绝泄露。
3. 应用层加固
很多程序(如 FTP、XMPP)不遵循系统代理设置。
- 命令行工具:使用
torsocks前缀,例如:torsocks curl https://example.com - 强制接管:在 Whonix Workstation 中运行这些程序。
深度思考:为什么不能在 Tor 里用 DoH (DNS over HTTPS)?
很多“技术宅”喜欢在 Tor 浏览器里开启 DoH,觉得更安全,这其实是巨大的误区。
| 行为 | 为什么它会破坏匿名性? |
|---|---|
| 自定义 DNS | 让你在所有 Tor 用户中显得“卓尔不群”,形成了独特的指纹特征。 |
| DoH 绕过 | DNS 请求直接发给 Google/Cloudflare,出口节点无法代为解析,破坏了 Tor 的路由闭环。 |
| DNS 缓存 | 开启 UseDNSCache 后,即便你换了链路,电脑可能还在访问出口节点给你的“旧 IP”,增加了被追踪风险。 |
金句总结:在 Tor 网络中,一致性胜过优越性。你越努力“优化”,你就越容易被识别。
系统自检:清理危险的 DNS 缓存
如果你曾手动修改过 Tor 配置文件,请运行以下命令检查是否开启了缓存:
sudo egrep -inR --color 'DNSCache|CacheDNS|CacheIPv.DNS|UseIPv.Cache' /etc/tor/tor* /etc/torrc.d/ /usr/local/etc/torrc.d/ ~/.torrc*