关于内网穿透
内网穿透即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信时,就需要支持内网穿透。
内网穿透简单原理:
- 首先用户可以访问具有公网IP的服务器
- 服务器与本地电脑保持连接,当有请求的时候,服务器将请求转发到本地电脑
- 本地电脑将响应回复给服务器
- 服务器将响应回复给用户
使用场景
树莓派连上家里的wifi,在连接同一局域网的情况下,下我们可以通过手机或电脑使用ssh连接并操作树莓派。但当我们不在家却需要远程连接树莓派的时候,就需要内网穿透服务,实现远程访问树莓派
准备工作
- 需要实现内网穿透的树莓派(4B, Raspbian系统)
- 一台具有公网IP的服务器(腾讯云学生机,CentOs系统)
- lanproxy服务端与客户端
基本流程
- 首先在云服务器启内网穿透lanproxy服务端,监听4900端口
- 在搭建好的lanproxy控制台中,为一个树莓派创建密钥(启动客户端的时候需要用到这个密钥)并且指定一个对外端口10000
- 客户端(树莓派)启动lanproxy客户端,连接到服务器4900端口,双方建立长连接
- 运用ssh连接到服务器10000端口,即可成功远程连接到该树莓派
以上用到的服务器端口需要在防火墙中开放,否则无法使用
开始部署
1.部署服务端
服务器需要java环境
首先下载 lanproxy服务端与客户端程序,下载地址
下载完成后,将proxy-server-0.1.zip解压然后找到proxy-server-0.1\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
修改完后把解压的程序上传到服务器上任意目录,然后进入上传程序目录下的/bin
执行startup.sh
启动服务:
如上图所示,服务端就算搭建成功了
2.配置客户端
接着上一步,打开地址:http://ip:8090 进入lanproxy控制面板:
使用上面配置文件中的默认账号和密码登录,接下来在控制面板中添加一个新的客户端配置:
然后在配置管理就会出现刚添加的客户端,对新添加的客户端进行配置:
点击提交即可
这里下载lanproxy-client-linux-arm.tar.gz客户端,并解压。
使用树莓派获取压缩包并解压后,使用命令后台启动程序:
sudo nohup ./client_linux_arm7 -s 服务器ip -p 4900 -k 控制台生成的客户端秘钥
之后登录lanprox控制台,在客户端管理界面即可查看到设备的在线状态。
然后就可以使用ssh远程连接树莓派了
ssh -p 10000 pi@119.29.99.101
下面是远程连接成功后的效果