我已使用 torsocks 在系统上设置 Tor,方法是将 127.0.0.1:9050 添加到 Ubuntu 的网络代理设置(设置为手动)。我可以通过比较 IP 地址并使用以下方法确认此操作是否按预期运行https://check.torproject.org/
然而,虽然我希望在某些时候使用系统范围的 Tor 连接,但我还希望能够在安全和隐私不是那么重要的时候运行正常连接。
在 Android 版本(OrBot)中,您可以连接到 Tor 网络并维持该连接,但您也可以切换“VPN 模式”,以决定是建立标准连接还是 Tor 连接。
这基本上就是我所寻找的功能;通过单击或设置热键即可快速方便地在 Tor 和标准连接之间切换。
答案1
经过一番研究,我发现了一个可能的解决方案。这涉及设置两个热键,以及使用 gsettings。
配置代理设置后,您需要转到设置>设备>键盘并创建一个启动以下命令的自定义热键:
gsettings set org.gnome.system.proxy mode manual
然后创建第二个:
gsettings set org.gnome.system.proxy mode none
无论是否启用,代理设置都会保持保存,因此您可以为第一个命令分配一个“启用”键,为第二个命令分配一个“禁用”键。
按下第一个热键并导航至“设置”>“网络”,然后导航离开,按下第二个热键并返回网络设置,以确认更改。假设 Tor 设置正确,并且通过https://check.torproject.org,这就是所需要的全部内容。
也许这不是最理想的解决方案,但就目前而言可以如此,除非有人能在活动栏上添加一个切换按钮或类似的东西。
编辑:
对上述方法稍作改进,就是使用一个热键检查代理模式的当前状态,然后将其设置为相反状态。使用文本编辑器并创建一个包含以下内容的新文件:
case "$(gsettings get org.gnome.system.proxy mode)" in
"'none'") gsettings set org.gnome.system.proxy mode "'manual'"
notify-send "Tor Enabled";;
"'manual'") gsettings set org.gnome.system.proxy mode "'none'"
notify-send "Tor Disabled" ;;
esac
这还将显示一条消息,显示您的代理设置的当前状态。
将脚本保存在某处,然后在创建自定义热键时引用该文件位置。
答案2
您需要研究“透明”代理与“隔离”代理。透明代理(就像您尝试做的一样)非常灰心因为它们会泄露数据包。Tor 项目一些关于危险的讨论,其中包括“通过电路共享实现身份关联”;剪贴板问题,特别是下载管理器和防病毒软件;以及您正在运行的软件的其他问题。
如果你坚持的话,有很多方法可以做到。请参阅第一个链接,其中涉及大量使用 iptables,和/或查看红袜队,转运袜子, 或者利卡(redsocks 可能是最好的 - 请参阅 lcat 链接中的讨论)。正确的方法是隔离代理,例如。Whonix,它使用一对虚拟机作为隔离手段。一台机器是虚拟操作系统,另一台是虚拟路由器。屈贝斯操作系统就是围绕这种方法构建的。隔离可以确保没有数据包泄漏,因此更加安全。您无需在一个操作系统上切换代理,而是在虚拟操作系统或主机和虚拟操作系统之间切换。Whonix 的替代方案是子图OS,锁定网络,以便所有数据包都通过 Tor。您可以在虚拟机中运行它,而主机保持不变。(但请注意,Subgraph 仍处于 alpha 阶段。)
顺便说一下,另一个透明代理也具有混淆性,它是影子袜子。这种方法在中国被广泛使用,就像 VPN 一样。与连接到 Tor 不同,您需要在另一端使用服务器 - shadwosocks 提供客户端和服务器软件 - 但您不需要超级用户身份,因此很容易获得一个便宜的 shell 帐户并进行设置。您也可以使用 redsocks 来实现这种方法,尽管它不会被混淆。与之配合的最佳服务器软件是但丁服务器,但确实需要超级用户身份才能安装。(dante-server 是 Ubuntu 中的一个 apt 包。有一个 dante-client,但它不透明,所以你需要 redsocks。)shadowsocks 或 dante/redsocks 的一个优点是它们将代理 UDP,而 Tor 仅是 TCP。但这可能偏离了主题。