在 Raspberry Pi OS 上设置代理服务器
- 在 Raspberry Pi 上安装 Privoxy Web 代理软件
- 在 Raspberry Pi 上配置 Privoxy Web 代理软件
- 将 Firefox 浏览器配置为用户 Raspberry Pi 作为代理
本文将介绍几种在你的树莓派上设置代理服务器的方法。
在 Raspberry Pi 上安装 Privoxy Web 代理软件
代理服务器是访问 Web 服务或为其提供服务的常用工具。
在这种情况下,我们专注于转发代理,客户端可以使用它来增强安全性或限制来自网关的传出流量。我们提出的方案是将 Raspberry Pi 设置为代理服务器,并将来自其他客户端的流量转发给它。
该解决方案使用 Privoxy 软件,该软件为广告拦截和其他高级功能提供过滤功能。请注意,Privoxy 没有缓存功能,因此必须提供附加软件。
Privoxy 通常可在 Raspberry Pi OS 默认存储库上下载。你可以运行以下命令来安装它或以其他方式确认它是否已安装在你的 Raspberry Pi 设备上:
sudo apt install privoxy
在 Raspberry Pi 上配置 Privoxy Web 代理软件
此时,如果安装成功,应该使用默认配置设置 Privoxy 并在 localhost:8118
端口上运行。请注意,此配置仅足以在同一客户端计算机上使用过滤代理功能。
但是,如果我们将 Raspberry Pi 上的代理服务器提供给其他客户端计算机,那么 Privoxy 应该正在侦听外部端口。后者需要通过编辑 /etc/privoxy/config
文件进行配置。
Privoxy 配置文件需要使用 sudo
权限进行编辑,但你可以使用你最熟悉的任何文本编辑器。在以下示例命令中,我们将使用 vim
文本编辑器:
sudo vim /etc/privoxy/config
打开配置文件后,搜索包含 listen-address 127.0.0.1:8118
的行。
请注意,Privoxy 配置文件包含相当大的注释,因此最好搜索特定的关键字。上述行应更改如下:
listen-address :8118
在后台运行的 Privoxy 服务应该会自动生效。你还可以使用另外一篇文章中描述的 nmap
软件检查外部开放端口。
如果由于某种原因,Privoxy 没有监听外部 8118
端口,你可以使用以下命令重新启动服务以强制更新配置:
sudo systemctl restart privoxy.service
将 Firefox 浏览器配置为用户 Raspberry Pi 作为代理
现在,我们继续进行客户端配置,这可以在你希望使用 Pi 上的代理服务器设置访问 Web 的任何客户端计算机上完成。
在这种情况下,我们只在 Firefox 浏览器上显示客户端设置,这允许我们使用代理而不设置系统范围的代理。在 Firefox 的地址栏中输入 about:preferences
并导航到 Network Settings
部分。
然后,单击设置
按钮以查看代理配置选项。选择手动代理配置并在 HTTP 代理
框中指定 Pi 的 IP 地址。指定端口号 8118
并标记复选框 Also use this proxy for HTTPS
。
接下来,使用 Raspberry Pi 上的代理服务器访问 Web 服务。要验证这一点,请在地址栏中输入以下地址,然后按 Enter:
http://config.privoxy.org/show-status
它应该显示一个以 Privoxy 版本和运行它的主机名、IP 地址和端口号开头的网页。
如果此步骤导致页面显示未使用 Privoxy,请检查防火墙等其他服务是否会干扰。如果是这样,请允许在 Pi 上运行的防火墙将流量从特定客户端 IP 地址传递到给定的服务端口。
你可以查看 ufw
的我们的指南来设置这些规则。
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn