Tor Browser 只覆盖一个应用,而不是整台设备
浏览器只把自己的连接交给 Tor,别的什么都不管。在假定整台机器都随之受保护之前,先看清是哪个进程拥有这条连接。
Tor Browser 把自己的连接交给本地代理,再引入 Tor 网络,而它不会移动机器上的其他部分。邮件客户端、同步守护进程和第二个浏览器都保留原有设置,所以一个窗口里的干净结果,完全可以与它背后的直连同时存在。四项检查把真正被覆盖的和只是看起来被覆盖的区分开来。先从会点出进程名的那一项开始。
浏览器实际代理了什么
在浏览器内部,流量会走向 Tor Browser 为自己启动的本地 SOCKS 监听端口,而浏览器被配置为使用它。线路选择、身份隔离和指纹防护都活在这一对组合里。保存到磁盘的文件不携带其中任何一项,用外部查看器打开它,等于启动一个有着自己网络行为的新程序。
这也是那个熟悉的公网地址页面证明力如此之弱的原因。它只报告加载它的浏览器所用的出口,完全观察不到另一个应用。把结果当作关于一个程序的证据,而不是关于设备的断言。
每条连接归哪个进程所有
把套接字和它们背后的进程列出来。找一找有没有不是浏览器、却在与本地监听端口通话的东西:
ss -tunp
ss -tunp | grep -E 'tor|firefox'
任何带公网目的地的条目,都是绕过了线路的连接。如果发现了,先确认是哪个程序,再去改动别的东西,因为每个客户端的修法不同:
curl --socks5-hostname 127.0.0.1:9150 https://check.torproject.org/api/ip
-hostname 这种写法之所以重要,是因为它要求代理来解析域名。在本地解析、再把地址交给代理,即使连接本身走了代理,目的地仍然会暴露。
协议到底会不会被承载
Tor 中继承载的是 TCP 流。围绕 UDP 构建的应用,比如某些语音和游戏客户端,在网络上的行为不像网页,强行让它们走代理通常只会失败,而不是保护它们。
| Coverage model | What it covers | What it leaves alone |
|---|---|---|
| Tor Browser | Its own browsing and downloads | Every other application |
| Proxy setting in one app | That app, if it honours the proxy | Its DNS behaviour and other programs |
| System VPN | Traffic routed through the tunnel | Browser fingerprint and identity |
| Whole-device routing | The operating system's traffic | Application-level identity signals |
如果你在意的应用依赖 UDP,浏览器设置不是答案,应用会忽略的代理变量也不是。需求会变成另一种设计,带着另一种失效方式。
你实际选择的那层覆盖
系统级 VPN 的范围比浏览器更宽,目的却更窄。当路由和平台支持为此配置好时,它可以承载多个应用,但它不提供指纹抵抗,而 VPN 出口不是匿名网络。
整台设备的覆盖是一种系统设计,而不是一个安装程序。它路由的是操作系统的流量,而不是某一个进程,同时也带来浏览器下载所没有的运维边界。
先想清楚你在回答哪个问题:是哪个应用受保护,还是每一个数据包是否受保护。前者是浏览器设置,后者是路由策略。把这两者混为一谈,正是一台机器最后剩下一扇受保护的窗口、五个不受保护的进程的原因。在安装别的东西之前,先把答案写下来。