使用 Raspberry Pi 设置 Tor 代理以控制互联网流量

通过简单的步骤和一些价格实惠的硬件创建一个匿名服务器和浏览器。
170 位读者喜欢这篇文章。
Coding the Raspberry Pi in a web emulator

Opensource.com

首先:什么是代理服务器,以及为什么要使用它们?

维基百科 提供了以下描述和图表:代理服务器是一种服务器(计算机系统或应用程序),它充当客户端从其他服务器请求资源的中间人。 客户端连接到代理服务器,请求一些服务,例如文件、连接、网页或可从不同服务器获得的其他资源,代理服务器评估该请求,以此来简化和控制其复杂性。

Proxy server diagram

代理服务器在许多情况下都很有用

  • 在办公室:通过阻止某些网站或某些关键字来控制互联网流量,从单个点管理与外部互联网的联系,或通过在代理级别缓存页面来优化互联网带宽使用。
  • 在家中:控制家庭互联网访问,阻止对儿童有害的网站。
  • 供个人使用:使用匿名连接或绕过网络 ISP 阻止。

这些只是一些例子!

Tor 项目

来自 Tor(匿名网络)维基百科页面

Tor 是免费和开源软件,用于启用匿名通信。 该名称源自原始软件项目名称“The Onion Router”(洋葱路由器)的首字母缩写。 Tor 通过一个免费的、全球的、由志愿者组成的覆盖网络(由 7000 多个中继组成)来引导互联网流量,从而隐藏用户的位置和使用情况,使其免受任何进行网络监视或流量分析的人的监视。 使用 Tor 使跟踪 Internet 活动到用户变得更加困难; 这包括“访问网站、在线帖子、即时消息和其他通信形式”。 Tor 的预期用途是保护其用户的个人隐私,以及他们通过防止他们的互联网活动被监控来进行保密通信的自由和能力。

Tor 项目 是目前开发软件以促进 Tor 网络使用的非营利性协会。

我需要 Tor 代理还是使用 Tor 网络的替代方法?

您可以通过一些检查找到这个问题的简单答案

  • 如果您可以在单台计算机中使用不同的浏览器,那么您可以评估 Tor 浏览器。 Tor 浏览器可以安装在您的 PC 中,并允许您使用 Tor 网络浏览网页。 我们的朋友 ProPrivacy 提供了一个很好的安装指南
  • 如果您需要一种方法来使用 Tor 网络以及您当前的浏览器,或者您需要连接大量计算机并保持其当前浏览器,那么您应该选择 Tor 代理。 请继续阅读有关在廉价的 Raspberry Pi 中安装 Tor 代理的说明。

分步过程

所需硬件

  • 一个 Raspberry Pi Zero W(或更高型号)及其电源(通过 WiFi 连接)
  • 一张 micro SD 卡

在本指南中,我们将使用默认的 Raspbian Buster Lite 作为操作系统。 然后,我们将从 Raspbian 存储库安装 Tor,并应用一个非常简单的配置,将其用作 Socks 代理。

我将配置 Tor 代理来管理 192.168.1.0/24 专用网络上所有客户端对互联网的访问。 您将需要根据您的需求和网络配置来修改此网络。

1. 安装操作系统和 Tor

从一个全新的 Raspbian Buster Lite 安装 开始。 确保您的操作系统已更新

sudo apt-get update
sudo apt-get upgrade

通过使用 Raspbian 存储库安装 Tor

sudo apt-get install tor

安装结束时,您将有两个服务作为 Tor 运行:“tor.service”和“tor@default.service”。

第一个是一个虚拟服务,它向用户显示为活动状态,但处于退出状态。 实际上,一个简单的检查

sudo systemctl status tor.service

将给出以下结果

● tor.service - Anonymizing overlay network for TCP (multi-instance-master)
   Loaded: loaded (/lib/systemd/system/tor.service; enabled; vendor preset: enabled)
   Active: active (exited) since Tue 2019-10-01 20:25:18 BST; 35s ago
 Main PID: 5546 (code=exited, status=0/SUCCESS)
   Memory: 0B
   CGroup: /system.slice/tor.service

这是正常的。 检查 Tor 是否正在运行的最可靠的服务是第二个。 命令

sudo systemctl status tor@default.service

应该提供一个更熟悉的结果

● tor@default.service - Anonymizing overlay network for TCP
Loaded: loaded (/lib/systemd/system/tor@default.service; enabled-runtime; vendor preset: enabled)
Active: active (running) since Tue 2019-10-01 20:25:30 BST; 1min 36s ago
Main PID: 5552 (tor)
Memory: 23.5M
CGroup: /system.slice/system-tor.slice/tor@default.service
└─5552 /usr/bin/tor --defaults-torrc /usr/share/tor/tor-service-defaults-torrc -f /etc/tor/torrc --RunAsDaemon 0

2. 配置 Tor

Tor 的主要配置文件名为 torrc。 在编辑之前,创建一个备份副本

sudo cp /etc/tor/torrc /etc/tor/torrc.backup

一个非常简单的配置将在 Tor 默认端口 (9050) 上公开 Tor Socks 代理服务,并且仅接受来自本地 LAN (192.168.1.0/24) 的连接。 它将作为守护进程运行,因此我们每次使用它时都不需要调用它。 最后,它将数据存储在默认目录 (/var/lib/tor/) 中。

编辑配置文件

sudo nano /etc/tor/torrc

仅包含以下行(假设 192.168.1.100 是您的 Raspberry Pi IP 地址)

SocksPort 192.168.1.100:9050
SocksPolicy accept 192.168.1.0/24
RunAsDaemon 1
DataDirectory /var/lib/tor

关闭并保存文件,然后重新启动 Tor 服务

sudo systemctl restart tor@default.service

3. 配置您的客户端以使用代理服务器

现在您需要配置您的客户端以使用 Socks 代理服务器进行互联网连接。 您必须根据您的客户端浏览器检查这一点。 Mozilla Firefox 可以使用 Socks 代理,可以通过选择选项、网络设置,然后选择设置进行配置。 选择手动代理配置,在 Socks 主机字段中插入 Raspberry Pi IP 地址,在相关端口中插入 9050,并确保 SOCKS v5 标志处于活动状态。 您应该有一个像下图一样的配置

Firefox proxy settings

关闭然后重新启动您的浏览器。 现在您正在浏览器中使用您的 Tor 网络。 您可以通过浏览 URL https://check.torproject.org/?lang=en 来验证它。

Tor proxy check

享受吧!

 

本文最初发表于 peppe8o.com,并已获得作者的许可发布。

接下来要阅读什么
标签
User profile image.
幸运的丈夫,开源爱好者。 天性好奇。 为我的根感到自豪,乐于混合和学习不同的根

14 条评论

这可以在运行 pihole 的 dietpi 上运行吗?

好的好的...但是公网 IP 暴露了! 使用 https://browserleaks.com/ip 检查,IP 通过 DNS 服务器暴露了

始终显示公共 IP,但使用 TOR 代理时,此 IP 不是您的 IP。 您可以通过在没有代理的情况下查看您的 IP,然后在启用 TOR 代理后再次验证它来检查这一点。 关于 DNS 查询,使用 Firefox,您还可以启用选项“在使用 SOCKS v5 时代理 DNS”

回复 ,作者:Shensueru (未验证)

我以前使用过 tor 浏览器,不知道我们可以从中创建一个服务器。 非常有用的文章,感谢您的撰写。

谢谢你,Abhinav。 我认为,很酷的是,这可以用非常便宜的硬件(Raspberry PI Zero W 的成本非常实惠)和非常低的功耗(RPI Zero W 使用 5V 和大约 0.5A)来完成

回复 ,作者:Abhinav Ramesh

我不知道,这可以完成,简直太棒了!

谢谢。 非常有趣,并且效果很好。 我正在使用一些服务设置一个旧的 Rasp 3B,包括这个 ver tor 代理,我想知道 raspi 本身是否会默认通过 Tor 路由其所有流量? 由于 raspberry 本身会产生流量,我是否需要设置其他内容? 非常感谢您的提前帮助!

谢谢您的反馈!
要使 RPI 客户端使用其内置的 TOR 服务,您需要在其代理配置中将 127.0.0.1:9050 设置为 socks 代理 URL。 例如,要在 apt 上使用 tor,您需要在 /etc/apt/apt.conf.d/ 下设置一个正确的 conf 文件。

回复 by ExMM (未验证)

互联网会像 tor 浏览器一样变慢吗?

你好,

我有一个树莓派 4,我想安装 TOR。
我知道我可以简单地安装,所以我需要使用 Chromium。
我按照您的步骤操作,但是在配置浏览器时,我收到了以下消息
//在受支持的桌面环境下运行 Chromium 时,将使用系统代理设置。 但是,要么您的系统不受支持,要么启动系统配置时出现问题。//

请问您能帮我提供命令行吗?

另外,我想提一下,我已经使用了付费 VPN 和 ufw,添加此项会弄乱我的设置吗?

谢谢

尝试从终端命令
chromium-browser --proxy-server="proxy_ipaddress:port"
如果将端口保留为 9050,则命令应为
chromium-browser --proxy-server="127.0.0.1:9050".

回复 by Kraker (未验证)

嘿! 谢谢你的教程! 我有以下问题:我已经设置了一个 AP 并安装了 tor,但我的 IP 没有改变。 这是我的日志

eth0: flags=4163 mtu 1500
inet 192.168.0.150 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 2a02:8070:4df:5d00:d399:bdb2:7fda:14f3 prefixlen 64 scopeid 0x0
inet6 fe80::a4de:b9d0:f66:54aa prefixlen 64 scopeid 0x20
ether dc:a6:32:3f:22:7a txqueuelen 1000 (Ethernet)
RX packets 414505 bytes 501022352 (477.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 260123 bytes 29306573 (27.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 1000 (Lokale Schleife)
RX packets 68 bytes 6216 (6.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 68 bytes 6216 (6.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

wlan0: flags=4163 mtu 1500
inet 192.168.4.1 netmask 255.255.255.0 broadcast 192.168.4.255
inet6 fe80::fba:3c94:dc4f:36fc prefixlen 64 scopeid 0x20
ether dc:a6:32:3f:22:7b txqueuelen 1000 (Ethernet)
RX packets 247724 bytes 24231954 (23.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 392175 bytes 507092369 (483.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

torrc 文件
Log notice file /var/log/tor/notices.log
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsSuffixes .onion,.exit
AutomapHostsOnResolve 1
TransPort 9040
TransListenAddress 192.168.4.1
DNSPort 53
DNSListenAddress 192.168.4.1

● tor.service - 用于 TCP 的匿名覆盖网络 (多实例主节点)
Loaded: loaded (/lib/systemd/system/tor.service; enabled; vendor preset: enab
Active: active (exited) since Tue 2020-06-09 22:06:37 CEST; 1 day 13h ago
Main PID: 321 (code=exited, status=0/SUCCESS)
Tasks: 0 (limit: 4915)
Memory: 0B
CGroup: /system.slice/tor.service

Jun 09 22:06:37 access systemd[1]: Starting 用于 TCP 的匿名覆盖网络
Jun 09 22:06:37 access systemd[1]: Started 用于 TCP 的匿名覆盖网络 (
Jun 11 00:00:20 access systemd[1]: Reloading 用于 TCP 的匿名覆盖网络
Jun 11 00:00:20 access systemd[1]: Reloaded 用于 TCP 的匿名覆盖网络

tor@default.service - 用于 TCP 的匿名覆盖网络
Loaded: loaded (/lib/systemd/system/tor@default.service; enabled-runtime; ven
Active: active (running) since Thu 2020-06-11 11:40:57 CEST; 16min ago
Main PID: 31206 (tor)
Tasks: 1 (limit: 4915)
Memory: 32.7M
CGroup: /system.slice/system-tor.slice/tor@default.service
└─31206 /usr/bin/tor --defaults-torrc /usr/share/tor/tor-service-defa

Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.923 [notice] 读取配置
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.931 [warn] 跳过过时的
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.931 [warn] 跳过过时的
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.932 [notice] 打开 Socks 监听
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.933 [notice] 已打开 Socks 监听
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.933 [notice] 打开 DNS 监听
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.933 [notice] 已打开 DNS 监听
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.933 [notice] 打开透明
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.933 [notice] 已打开透明
Jun 11 11:40:57 access systemd[1]: Started 用于 TCP 的匿名覆盖网络。

我绊倒了

Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.931 [warn] 跳过过时的
Jun 11 11:40:54 access tor[31206]: Jun 11 11:40:54.931 [warn] 跳过过时的

有什么想法吗? 提前感谢!
问候

Creative Commons License本作品采用知识共享署名 - 相同方式共享 4.0 国际许可协议进行许可。
© . All rights reserved.