背景
家中有一台裝有 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