如何让 Tor Browser 测试与 VPN 流量互不干扰
给实验单独的浏览器、配置文件和路由,测完再把一切复原。公共 IP 页面只能证明一个出口,不能证明机器上的每条路径。
实验的对象不是浏览器,而是浏览器运行期间机器上的全部路径。如果你为了用 VPN 测试 Tor Browser 而改动全局代理或路由,其他所有程序都会继承这项改动,包括在后台同步文件、检查邮件的程序。安全的做法是给实验单独的应用程序、单独的配置文件和单独的路由,并且清楚知道如何把一切复原。公共 IP 页面只能告诉你用了一个出口,不能告诉你机器其余部分做了什么。
检查 1:给三条连接命名
在动任何设置之前先给它们命名。正常路径是工作程序今天使用的路径,实验路径是你希望 Tor Browser 使用的路径,预期的失败行为则是某一层失效时应当出现的结果。
把这三条写在一个地方,并标明哪个程序属于哪条路径。原因不是官僚流程:大多数意外的泄漏来自没人记得还在运行的程序,而不是被测的浏览器。密码管理器、聊天客户端和文件同步服务都是后台流量,系统给什么路径它们就走什么。正是给它们命名,才让边界成为真的。
检查 2:让每项设置留在所属程序里
Tor Browser 支持的配置并不等同于系统代理设置,而且它刻意不支持从环境中指向任意代理。
环境变量或浏览器扩展可能造出第三条路径,浏览器的文档和你的笔记都不会描述它。优先使用程序内部支持的设置,而不是全局覆盖。
浏览器交接出去的东西同样如此。下载的文件在外部查看器中打开,不会继承浏览器的路由,而是使用系统的路由,那可能是 VPN、局域网,也可能什么都不是。这种交接是内容在你以为仍留在实验内时悄悄流出的常见方式。先判断外部查看器是否属于实验;如果不属于,就把文件留在浏览器里。
检查 3:使用丢了也无妨的载荷
网络检查应使用不需要个人账号的页面,因为登录会话会把一次路由测试变成别人服务器上的一次已认证事件。一个能返回你所见出口的检查页,就足以回答路由问题。
具体来说,curl --socks5-hostname 127.0.0.1:9150 https://check.torproject.org/api/ip 会走浏览器使用的同一个 SOCKS 端点并返回它看到的出口,从而把浏览器问题和 Tor 问题分开。机器上的 ss -tnp 会显示哪个进程在与哪个地址通信,这正是抓住被遗忘程序的那项检查。两条命令都不需要登录,而且都可重复。把结果留成前后对照的一对,而不是一次孤立的观察。
检查 4:有意识地恢复日常使用
通过创建测试排除项和临时设置的那个组件来移除它们,而不是用一个碰巧提供类似开关的别的工具。
然后检查正常程序,包括 DNS 解析和工作路径所需的任何私有资源。只浏览能用但内部域名解析失效的测试,不能算结束。
记录足以复现有用发现的内容即可,不要更多。记下所用的 VPN 配置文件、程序排除项、观察到的出口地址和时间;不要记录账号凭据或访问过的页面内容。如果这种组合没有明显好处,不要因为一个测试页能打开就保留额外设置。留在原地的实验会变成生产路径里没有记录的一部分。
Tor Project 关于在 Tor Browser 中管理身份的指南,是浏览器自身如何隔离的参考,值得在再加一层之前读一读。
测试结束于预定配置被复原或新配置被理解之时,而不是某个程序不再报错之时。这是两种不同的终态,只有一种可以安全留下。如果你说不出检查一里列出的每个程序当前的路径,实验就还在进行。请有意识地结束它。