用树莓派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   阅读(4)   评论(0)
 标签: ai

涨知识
I2C

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。

评论:
相关文章
Maixduino几种开发环境的搭建

Sipeed k210 RISC-V AI+lOT ESP32视觉听觉开发套装的开发环境搭建。


可视化解释11种基本神经网络架构

随着深度学习的飞速发展,已经创建了完整的神经网络体系结构主机,以解决各种各样的任务和问题。 尽管有无数的神经网络架构,但对于任何深度学习工程师来说,这里有11种必不可少的知识,它们分为四大类:标准网络,递归网络,卷积网络和自动编码器。


K210开发环境搭建 、开发文档、常见问题、开发板选择

勘智K210采用RISC-V处理器架构,具备视听一体、自主IP核与可编程能力强三大特点,支持机器视觉与机器听觉多模态识别,可广泛应用于智能家居、智能园区、智能能耗和智能农业等场景。


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

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


荐书|人工智能基础(高中版)

《人工智能基础(高中版)》是面向高中学生的教材。讲授人工智能的发展历史、基本概念以及实际应用,使学生理解人工智能的基本原理,特别是数据、算法与应用之间的相互关系。

搜索
小鹏STEM教研服务

专属教研服务系统,助您构建STEM课程体系,打造一站式教学环境。