上一篇我们在树莓派上运行了一下目标检测中的yolo系列,这篇先介绍树莓派上VPN以外的外网访问方式。在物联网的项目中,这些技术也可用于解决内外穿透,负载平衡和远程控制等需求。
代理服务器充当着你的电脑和另一台计算机之间的联络人,当你使用代理连接到互联网时,你需要通过代理服务器请求连接。当你在计算机上执行的所有操作也称为客户端,将转发到代理服务器,该代理收集你的要求信息,随之将其返送给你。
VPN或虚拟专用网络允许你将计算机连接到远程网络,VPN通常专门用于连接到本地intranet或外部链接不可访问的内容。许多工作场所允许他们的员工使用VPN远程连接,以便,以便从办公室外部访问公司的本地Intranet上的数据。
简而言之,VPN将构建一个隧道来构建虚拟局域网,而代理服务器只是做一个中间人转发数据,就安全性和匿名性来说,代理服务器一般会弱一些。代理的方式有很多,包含了各种HTTP代理服务、Socks服务、VPN服务,其中以 ssh tunnel 的方法比较有代表性。
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 版本选择最新的版本。
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
服务器端部署成功。
前面说到,通过 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。
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 端口
请求到外部网站的数据
RISC-V(发音为“risk-five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。RISC-V指令集可以自由地用于任何目的,允许任何人设计、制造和销售RISC-V芯片和软件。
本文并不花时间去说明 CSI 摄像头的工作原理,主要配合 Jetbot 的安装,以及执行最简单指令去确认您手上的摄像头是否良好可用。
本文重点先为大家剖析一下 Jetbot 的组成元件列表,并将这些元件进行分类,这样有助于在后面分项细节说明中,清楚每个类别所扮演的角色。
跟着指定路线去前进,才是真正进入有实用价值的应用。
这一篇在 COVID-19 仍在全世界肆虐的当下,我们尝试用 AI 来做一个有趣的自动戴口罩应用。
本文从芯片架构,到开发板选型,再到软件开发环境的搭建介绍了关于K210的基础ABC,这块KPU其实有很多有意思的应用,我会在后面的文章中进行更多介绍,包括SDK中各个模块的使用方式,以及如何将自己的AI模型部署到K210上面去运行。
MaixPy 是将 Micropython 移植到 K210 的一个项目,不但支持 MCU 常规操作, 还集成了硬件加速的 AI 机器视觉和麦克风阵列相关的算法。