项目背景
公司目前有一些接入到4G网络的树莓派,需要通过远程shell连接对其进行管理和日常维护。但是这些设备没有固定的公网ip,所以需要通过内网穿透来解决。
准备工作
- 需要进行穿透的树莓派*N(我们安装的是ubuntu 20系统,以下操作命令均基于此系统)
- 一台具有公网IP/域名的服务器,系统不限(我们使用的是阿里云windows server)
- lanproxy
架构原理
这里大概讲一下过程,很多细节需要看后续步骤才能理解
大体流程:
- 首先我们在阿里云开启内网穿透lanproxy服务端,监听8000端口
- 在阿里云上lanproxy控制台中,为一个树莓派创建密钥(启动客户端的时候需要用到这个密钥)并且指定一个对外端口10000
- 客户端(树莓派)启动lanproxy客户端,连接到阿里云8000端口,双方建立长连接
- 通过xshell连接到阿里云10000端口,即可成功连接到该树莓派。
注意事项:
- 以上提及的所有端口基于我们公司实际项目填写,实际配置过程中可以随意填写。
- 以上用到的服务器(阿里云)端口要在防火墙中开放,否则无法使用
架构图:
PS:有的小伙伴可能会问,所有树莓派都连接到同一个阿里云端口,那么服务端是靠什么来进行路由转发的呢?答案是密钥,这里会在下边的教程中提及。
部署过程
1.安装服务端
下载服务端–下载地址
链接里边有好多文件,注意别弄混了,服务端的文件名为:proxy-server-0.1.zip
将压缩包解压之后,首先打开conf/config.properties文件,内容如下:
server.bind=0.0.0.0
#客户端的连接端口
server.port=4900
server.ssl.enable=true
server.ssl.bind=0.0.0.0
server.ssl.port=4993
server.ssl.jksPath=test.jks
server.ssl.keyStorePassword=123456
server.ssl.keyManagerPassword=123456
server.ssl.needsClientAuth=false
config.server.bind=0.0.0.0
#服务端后台界面端口号
config.server.port=8090
#后台账号
config.admin.username=admin
#后台密码
config.admin.password=admin
其中有两行特别容易混淆的地方需要单独说明
server.port=4900
config.server.port=8090
其中server.port是服务端与被穿透设备通信时用到的端口(架构图中没有画出这个对应的端口),也就是我在上边架构图中画的8000端口。
config.server.port是指服务端后台界面端口,我们部署完后,通过 localhost:8090即可访问这个界面。
远程端口(就是我上边提到的10000、10001、10002)不在配置文件中配置,需要去后台界面中配置!
以上内容可以根据需要修改。ssl部分因为我们项目中没有用到,故不做讲解。
配置完后,使用bin/目录下的具体sh或bat文件启动项目。通过locathost:8090(如果你改端口了,就用自定义的端口)访问后台,然后按照如下图示操作。
到此为止,我们安装好了lanproxy客户端,并且配置了一台客户端的密钥和穿透端口。需要注意的是,以上用到的端口都需要在防火墙中对外开放(我用的阿里云,需要在阿里云后台配置安全组策略)。
接下来我们需要配置客户端。
2.安装客户端
首先我准备了一台装有ubuntu 20的树莓派(无桌面)。lanproxy准备了用go编译号的客户端,使用起来十分方便。点击下载客户端
下载链接中, lanproxy-client-*开头的都是客户端,需要根据自己的系统选择对应的版本。树莓派是arm架构的,所以我下载的是lanproxy-client-linux-arm.tar.gz,如果是使用桌面cpu的服务器(英特尔或amd),则需要下载lanproxy-client-linux-amd64-20190523.tar.gz或 lanproxy-client-linux-386-20190523.tar.gz(分别对应64位和32位机器)
使用树莓派获取压缩包并解压后,使用命令后台启动程序
sudo nohup client_linux_arm7 -s 服务端IP或域名 -p 服务端端口 -k 密钥 &
其中“服务端端口”指的就是刚才配置文件中“server.port”字段指定的端口号
3.测试
客户端启动后,登录lanprox控制台,在‘客户端管理’界面即可查看到设备的在线状态。
使用xshell进行连接,输入公网的ip和端口号,则可以直接连接到树莓派里边了。
优化
树莓派添加客户端开机自启功能
待完成
服务器添加服务端开机自启功能
待完成
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。