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

这篇介绍树莓派上VPN以外的外网访问方式。

前言

上一篇我们在树莓派上运行了一下目标检测中的yolo系列,这篇先介绍树莓派上VPN以外的外网访问方式。在物联网的项目中,这些技术也可用于解决内外穿透,负载平衡和远程控制等需求。

最近中美关系趋紧,VPN一直不太稳定,经常一断就好几天,代理服务器就是访问外网的另一种选择,以备不时之需。

代理服务器充当着你的电脑和另一台计算机之间的联络人,当你使用代理连接到互联网时,你需要通过代理服务器请求连接。当你在计算机上执行的所有操作也称为客户端,将转发到代理服务器,该代理收集你的要求信息,随之将其返送给你。

VPN或虚拟专用网络允许你将计算机连接到远程网络,VPN通常专门用于连接到本地intranet或外部链接不可访问的内容。许多工作场所允许他们的员工使用VPN远程连接,以便,以便从办公室外部访问公司的本地Intranet上的数据。

简而言之,VPN将构建一个隧道来构建虚拟局域网,而代理服务器只是做一个中间人转发数据,就安全性和匿名性来说,代理服务器一般会弱一些。代理的方式有很多,包含了各种HTTP代理服务、Socks服务、VPN服务,其中以 ssh tunnel 的方法比较有代表性。

shadowsocks

 1   下载源码

大名鼎鼎的“小飞机”,使用Socks5协议来做ssh代理,拆分了server端和clinet端,隐藏了ssh的数据特征。

由于太出名了,最终在github上只留下一个空白页... 

git clone https://github.com/shadowsocks/shadowsocks
cd shadowsocks
# 切换到 master
git checkout master

直接通过 sudo apt-get install shadowsocks 安装的版本比较老,不支持 aes-256-gcm 加密,推荐官网源码编译的方式安装。需要 checkout 到 master 版本选择最新的版本。


  2      编译安装
python3 setup.py build  # 编译
sudo python3 setup.py install  # 安装
  3      配置信息设置shadowsocks客户端配置
sudo nano /etc/shadowsocks.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/shadowsocks.json -d start
# 停止
sudo /usr/local/bin/sslocal -c /etc/shadowsocks.json -d stop

 5   设置开机启动

sudo nano /etc/rc.local

在最后的exit之前添加

sudo /usr/local/bin/sslocal -c /etc/shadowsocks.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

设置 shadowsocks 服务器配置

sudo nano /etc/shadowsocks.json
修改服务器的配置信息
{
  "server": "0.0.0.0",
  "server_port":999,
  "password":"PASSWORD",
  "method":"aes-256-gcm"
}

 7   配置成服务(linux服务器端)

sudo nano /etc/systemd/system/shadowsocks.service
[Unit]
Description=Shadowsocks

[Service]
TimeoutStartSec=0
ExecStart=/usr/local/bin/ssserver -c /etc/shadowsocks.json

[Install]
WantedBy=multi-user.target
systemctl enable shadowsocks
systemctl start shadowsocks
//查看服务启动状态
systemctl status shadowsocks -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 服务

  • 连接到本地shadowsocks的 1080 端口转换成 socks5 协议

  • 连接到远端服务器 ss 的 999 端口

  • 请求到外部网站的数据

- 本文内容来自网络,如有侵权,请联系本站处理。

2023-01   阅读(31)   评论(0)
 标签: 人工智能

涨知识
UART

UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。在嵌入式设计中,UART用于主机与辅助设备通信。

评论:
相关文章
艾伦·图灵 –人工智能之父

Sometimes it is the people who no one imagines anything of who do the things that no one can imagine.


基于 TinyML的语音识别机器人车

在本文中,我将在 Wio 终端上制作一个带有内置麦克风的声控机器人车,以通过 TinyML 识别行驶、停止和背景噪音。


MaixCube

MaixCube 是基于Sipeed M1n 模块(主控:Kendryte K210)开发的一款集学习开发和商用一体的人脸识别产品。


MIT麻省理工提供给孩子们的免费AI教学平台!

在人工智能(AI)日益影响生活的今天,让孩子们从小接触AI并学习相关知识,不仅能够帮助他们理解现代科技的发展,也能提升他们的逻辑思维、创造力和问题解决能力。



用树莓派4b构建深度学习应用(2) 软件篇

这篇我们来搭建一下树莓派的系统,并安装一些必要的工具软件。


MaixPy是什么?

MaixPy 是将 Micropython 移植到 K210 的一个项目,不但支持 MCU 常规操作, 还集成了硬件加速的 AI 机器视觉和麦克风阵列相关的算法。


Jetbot基础教程-无线WIFI的安装与调试

要为 Jetson Nano(含 2GB)装上一片无线网卡是非常简单的事情,但复杂的是“设置”的细节,必须兼顾更多可能的使用场景。


用树莓派4b构建深度学习应用(6) TensorFlow Lite篇

这篇我们部署一下专门为移动端和嵌入式设备而生的 TensorFlow Lite,并跑几个模型,测试一下纯树莓派上的极限帧率。


Jetbot基础教程-Jetbot系统介绍

本文重点先为大家剖析一下 Jetbot 的组成元件列表,并将这些元件进行分类,这样有助于在后面分项细节说明中,清楚每个类别所扮演的角色。