前言
上一篇我们在树莓派上运行了一下目标检测中的yolo系列,这篇先介绍树莓派上VPN以外的外网访问方式。在物联网的项目中,这些技术也可用于解决内外穿透,负载平衡和远程控制等需求。
代理服务器充当着你的电脑和另一台计算机之间的联络人,当你使用代理连接到互联网时,你需要通过代理服务器请求连接。当你在计算机上执行的所有操作也称为客户端,将转发到代理服务器,该代理收集你的要求信息,随之将其返送给你。
VPN或虚拟专用网络允许你将计算机连接到远程网络,VPN通常专门用于连接到本地intranet或外部链接不可访问的内容。许多工作场所允许他们的员工使用VPN远程连接,以便,以便从办公室外部访问公司的本地Intranet上的数据。
简而言之,VPN将构建一个隧道来构建虚拟局域网,而代理服务器只是做一个中间人转发数据,就安全性和匿名性来说,代理服务器一般会弱一些。
代理的方式有很多,包含了各种HTTP代理服务、Socks服务、VPN服务,其中以 ssh tunnel 的方法比较有代表性。
s
1. 下载源码
大名鼎鼎的“小飞机”,使用Socks5协议来做ssh代理,拆分了server端和clinet端,隐藏了ssh的数据特征。
由于太出名了,最终在github上只留下一个空白页...
git clone https://github.com/s/s
cd s
# 切换到 master
git checkout master
Tip:
直接通过 sudo apt-get install s 安装的版本比较老,不支持 aes-256-gcm 加密,推荐官网源码编译的方式安装。需要 checkout 到 master 版本选择最新的版本。
2. 编译安装
python3 setup.py build # 编译
sudo python3 setup.py install # 安装
3. 配置信息
设置 s 客户端配置
sudo nano /etc/s.json
修改远程服务器的配置信息
{
"server": "XXX.XXX.XXX.XXX",
"server_port":999,
"local_address": "127.0.0.1",
"local_port":1080,
"password":"PASSWORD",
"timeout":600,
"method":"aes-256-gcm",
"fast_open": false,
"workers": 1
}
4. 运行程序
# 启动
sudo /usr/local/bin/sslocal -c /etc/s.json -d start
# 停止
sudo /usr/local/bin/sslocal -c /etc/s.json -d stop
5. 设置开机启动
sudo nano /etc/rc.local
在最后的exit之前添加
sudo /usr/local/bin/sslocal -c /etc/s.json -d start
查看运行服务
sudo systemctl status rc-local.service
客户端安装完成。
6. 配置服务器端(linux服务器端)
编译安装过程如上,服务器端运行程序
ssserver -p 999 -k password -m aes-256-gcm
# 后台运行
sudo ssserver -p 443 -k password -m aes-256-cfb --user nobody -d start
# 停止
sudo ssserver -d stop
设置 s 服务器配置
sudo nano /etc/s.json
修改服务器的配置信息
{
"server": "0.0.0.0",
"server_port":999,
"password":"PASSWORD",
"method":"aes-256-gcm"
}
7. 配置成服务(linux服务器端)
sudo nano /etc/systemd/system/s.service
[Unit]
Description=Shadowsocks
[Service]
TimeoutStartSec=0
ExecStart=/usr/local/bin/ssserver -c /etc/s.json
[Install]
WantedBy=multi-user.target
systemctl enable s
systemctl start s
//查看服务启动状态
systemctl status s -l
服务器端部署成功。
SwitchyOmega
前面说到,通过 Shadowsocks 的数据是socks5的,本身不支持http和https的协议,所以还需要安装插件,我们给chromimum安装SwitchyOmega插件。
1. 下载插件
先到以下网址,下载最新版本的.crx格式文件
https://github.com/FelisCatus/SwitchyOmega/releases
现在的chromimum不支持拖入安装,所以需要更改.crx为.zip或者.rar解压到文件夹之后,在chromimum插件页面导入整个文件夹。
2. 配置插件
进入SwitchyOmega,在proxy页面配置ss,协议选socks,代理服务器127.0.0.1,端口1080
可以配置auto switch, 默认直连,代理规则选刚配置完的proxy,规则列表格式选AutoProxy,网址写入
https://raw.githubusercontent.com/gfwlist/gfwlist/master/gfwlist.txt
3. 验证网页
访问一下 www.google.com,一切顺利的话,就能看见网页了。不过这个代理只在浏览器中有效,如果要在树莓派的shell 或是其他软件中使用代理,还需要安装Polipo。
Polipo
1. 安装软件
sudo apt-get install polipo
2. 修改配置文件
sudo nano /etc/polipo/config
将下面的内容整个替换到文件中并保存:
logSyslog = false
logFile = /var/log/polipo/polipo.log
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
proxyAddress = "0.0.0.0"
proxyPort = 8123
3. 重启Polipo
sudo /etc/init.d/polipo restart # 重启
sudo /etc/init.d/polipo start # 启动
sudo /etc/init.d/polipo stop # 停止
4. 查看服务状态
ps -e|grep polipo
5. 设置http_proxy环境变量
sudo nano /etc/profile
写入
export http_proxy="http://127.0.0.1:8123/"
export https_proxy="https://127.0.0.1:8123/"
6. 验证代理是否正常工作
curl www.google.com
至此,我们梳理一下流程:
- 树莓派客户端通过Polipo代理本地的 8123 端口访问 web 服务
- 连接到本地s的 1080 端口转换成 socks5 协议
- 连接到远端服务器 ss 的 999 端口
- 请求到外部网站的数据
完美!
软件下载
本期相关文件资料,可在公众号后台回复:“rpi10”,获取下载链接。
下一篇预告
我们将介绍树莓派上的端口映射方法,
解决物联网项目的外网访问,
远程控制等功能,
敬请期待...