内网穿透 - 在公网访问内网主机
背景
家中有一台装有 Linux 系统的开发板(树莓派等),通过局域网连接网络,由于内网中的设备只有内网 IP,无法通过外网访问。此时可以使用反向代理的方法,借助一台接入外网的 VPS,来实现内网穿透。
具体操作
目标
实现在外网通过 SSH 访问内网中的 Linux 开发板。
设备
- 具有固定 IP 的 VPS (此处使用阿里云主机)
- 需要进行内网穿透的 Linux 开发板(包括树莓派等,局域网方式接入,需要进行穿透)
软件
使用 frp,frp 包括两个可运行程序:frpc (客户端) 和 frps (服务器端)。
vps 配置
登录阿里云主机 106.15.250.195
(下载的 frp 版本需要根据设备类型来选择)
mkdir -p /etc/frp
cd /etc/frp
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_386.tar.gz
tar -xzvf frp_0.32.1_linux_386.tar.gz
cd frp_0.32.1_linux_386/
vi frps.ini
frps.ini
配置
[common]
bind_port = 7000
token = 123456789
配置完成后启动 frps
./frps -c frps.ini
内网设备配置
由于当时不太清楚这个开放板的处理器类型,导致无法选择 frp 版本,所以先查看下开发板处理器信息。
# Print certain systeminformation
uname -a
# 系统处理器的体系结构
uname -p
# CPU硬件的配置
more /proc/cpuinfo
通过上述任意一种都可以查看处理器类型,得到的是 aarch64
执行状态,也就是 ARMv8
,所以可以选择 frp 的 linux-arm 版本进行下载,完成后进行 frpc.ini
的配置:
[common]
server_addr = 106.15.250.195
server_port = 7000
token = 123456789
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7022
[common]
填入 VPS 信息,port 是 frps 运行时的端口,token 需要保持一致。[ssh]
将内网的 22 端口映射到 VPS 的 7022 端口。访问 106.15.250.195:7022,相当于访问当前设备的 22 端口。
配置完成后启动 frpc
./frpc -c frpc.ini
连接测试
经过上述两步,已经可以实现在外网访问内网主机。
ssh -p 7022 root@106.15.250.195
References
内网穿透:在公网访问你家的 NAS https://zhuanlan.zhihu.com/p/57477087
FRP 简单入门安装配置教程 https://www.iplaysoft.com/frp.html
uname 命令参数及功能 https://blog.csdn.net/wonxxx/article/details/41627939