Brave
@47c132035ed7a1105a867946b99d67af 网络安全与大数据研究小组 公开
讨论 如何为Linux系统全局开启Tor,以Ubuntu系统为例

如何为Linux系统全局开启Tor,以Ubuntu系统为例

Tor(The Onion Router)是一个旨在实现匿名通信的自由软件,由美国非盈利组织 The Tor Project, Inc. 开发和维护。Tor 的主要目的是通过隐藏用户的真实 IP 地址,防止网络监控和流量分析,从而保护用户的隐私和安全。通过多层加密和随机路径选择,Tor 能有效隐藏用户的真实 IP 地址,并防止互联网服务提供商和本地监视者跟踪用户的网络活动。

要在 Linux 系统上全局开启 Tor,可以按照以下步骤进行(以Ubuntu系统为例):

1. 安装 Tor:

打开终端并运行以下命令来安装 Tor:

sudo apt update

sudo apt install tor

2. 配置 Tor:

编辑 Tor 的配置文件 /etc/tor/torrc,添加以下内容:

sudo nano /etc/tor/torrc

在文件末尾添加:

SocksPort 9050

为了提高安全性和隐私性,你还可以配置 Tor 避免使用位于特定国家或地区的节点。这对于担心某些国家可能监控或干扰 Tor 流量的用户特别有用。 在 torrc 文件末尾加入以下配置行:

ExcludeNodes  {cn},{hk},{mo},{kp},{ir},{sy},{pk},{cu},{vn},{ru},{by}
StrictNodes  1

3. 安装 Privoxy:

Privoxy 是一个非缓存的网页代理服务器,具有高级过滤功能。Privoxy 常与 Tor 一起使用,以进一步增强用户的隐私保护。当用户通过 Privoxy 访问互联网时,Privoxy 会将请求重定向到 Tor 网络,从而加密用户的流量,防止隐私泄露。此外,Privoxy 还可以用于过滤广告和跟踪器,提高网页加载速度,提供更干净的浏览体验。通过自定义规则,用户可以根据自己的需求调整 Privoxy 的过滤和管理功能。

运行以下命令来安装 Privoxy:

sudo apt install privoxy

4. 配置 Privoxy

Privoxy 是一个非缓存的网页代理服务器,具有高级过滤功能。Privoxy 常与 Tor 一起使用,以进一步增强用户的隐私保护。当用户通过 Privoxy 访问互联网时,Privoxy 会将请求重定向到 Tor 网络(通过其 SOCKS 端口),从而加密用户的流量,防止隐私泄露。此外,Privoxy 还可以用于过滤广告和跟踪器,提高网页加载速度,提供更干净的浏览体验。通过自定义规则,你可以根据自己的需求调整 Privoxy 的过滤和管理功能。

编辑 Privoxy 的配置文件 /etc/privoxy/config,添加以下内容:

sudo nano /etc/privoxy/config

在文件末尾添加:

forward-socks5t / 127.0.0.1:9050 .

如果需要排除本地端口可使用:

forward 192.168.1.0/24 .
forward localhost .
forward 127.0.0.1 .
forward-socks5t / 127.0.0.1:9050 .

5. 启动服务:

启动并启用 Tor 和 Privoxy 服务:

sudo systemctl start tor

sudo systemctl enable tor

sudo systemctl start privoxy

sudo systemctl enable privoxy

检查服务状态以确保它们正常运行:

sudo systemctl status tor
sudo systemctl status privoxy

6. 配置系统代理:

最后,配置系统代理以使用 Privoxy。打开系统设置,找到网络设置中的代理选项,将 HTTP 和 HTTPS 代理设置为 127.0.0.1,端口为 8118

完成这些步骤后,你的 Ubuntu 系统应该会通过 Tor 进行全局代理。

7.如何切换 Tor 节点:

 Tor 默认情况下会自动选择节点(入口、中继、出口)。其内置的路径选择算法旨在平衡负载、性能和匿名性,通过在全球分布的志愿者运行的节点中随机选择路径来保护用户。对于大多数用户来说,依赖 Tor 的自动选择是推荐的做法。

如果你希望手动指定节点或者固定使用特定的节点,可以通过编辑 Tor 的配置文件(通常是 /etc/tor/torrc)来实现。除了前述的设置选项,torrc 文件支持其他更精细的节点控制指令。

例如,EntryNodes {节点指纹或国家代码}:指定只使用某些节点作为入口节点。ExitNodes {节点指纹或国家代码}:指定只使用某些节点作为出口节点。

ExcludeExitNodes {节点指纹或国家代码}:指定避免使用某些节点作为出口节点(这比 ExcludeNodes 更具体,只影响出口)。 使用这些高级选项需要更深入的了解,并且可能影响匿名性或连接稳定性,请谨慎使用。

对于大多数希望提高安全性的用户,使用 ExcludeNodes 和 StrictNodes 排除已知风险区域是更常用和直接的方法。