用树莓派4b构建深度学习应用(十)Polipo篇

前言

上一篇我们在树莓派上运行了一下目标检测中的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”,获取下载链接。


下一篇预告

我们将介绍树莓派上的端口映射方法,
解决物联网项目的外网访问,
远程控制等功能,
敬请期待...

欢迎扫码关注,更多分享


你可能感兴趣的:(raspberry-pi,人工智能,深度学习,网络,物联网)