关于内网穿透

内网穿透即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信时,就需要支持内网穿透。

内网穿透简单原理:

  1. 首先用户可以访问具有公网IP的服务器
  2. 服务器与本地电脑保持连接,当有请求的时候,服务器将请求转发到本地电脑
  3. 本地电脑将响应回复给服务器
  4. 服务器将响应回复给用户

使用场景

树莓派连上家里的wifi,在连接同一局域网的情况下,下我们可以通过手机或电脑使用ssh连接并操作树莓派。但当我们不在家却需要远程连接树莓派的时候,就需要内网穿透服务,实现远程访问树莓派

准备工作

  • 需要实现内网穿透的树莓派(4B, Raspbian系统)
  • 一台具有公网IP的服务器(腾讯云学生机,CentOs系统)
  • lanproxy服务端与客户端

基本流程

  1. 首先在云服务器启内网穿透lanproxy服务端,监听4900端口
  2. 在搭建好的lanproxy控制台中,为一个树莓派创建密钥(启动客户端的时候需要用到这个密钥)并且指定一个对外端口10000
  3. 客户端(树莓派)启动lanproxy客户端,连接到服务器4900端口,双方建立长连接
  4. 运用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

下面是远程连接成功后的效果