天天看點

樹莓派:使用frp搭建内網穿透

目的:通過公網IP通路内網本地的樹莓派伺服器

frp介紹文檔:https://gofrp.org/docs/examples/ssh/

github包位址:https://github.com/fatedier/frp/releases

1 分别下載下傳對應的frp二進制包到公網IP和内網IP的機器上

公網IP:x.x.x.x x86機器 下載下傳amd64二進制檔案 (getconf LONG_BIT指令檢視機器)

樹莓派本地IP:172.18.78.17 arm32機器 使用arm二進制檔案

2 更新配置檔案

公網IP機器為server,配置frps.ini檔案

[common]
bind_port = 7000
           

内網IP機器為client,配置frpc.ini檔案

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
           

3 啟動

先啟動公網IP機器上的服務(背景運作:nohup ./frps -c frps.ini>/dev/null 2>&1 &)

./frps -c frps.ini
2021/10/20 18:23:31 [I] [root.go:200] frps uses config file: frps.ini
2021/10/20 18:23:31 [I] [service.go:192] frps tcp listen on 0.0.0.0:7000
2021/10/20 18:23:31 [I] [root.go:209] frps started successfully
           

再啟動内網IP機器上的服務(背景運作:nohup ./frpc -c frpc.ini>/dev/null 2>&1 &)

./frpc -c frpc.ini
2021/10/20 18:25:18 [I] [service.go:304] [f7184405256ea933] login to server success, get run id [f7184405256ea933], server udp port [0]
2021/10/20 18:25:18 [I] [proxy_manager.go:144] [f7184405256ea933] proxy added: [ssh]
2021/10/20 18:25:18 [I] [control.go:180] [f7184405256ea933] [ssh] start proxy success
           

通過其它機器通路公網IP機器固定端口達到通路内網伺服器的目的

ssh -oPort=6000 [email protected].x.x.x
           

輸入樹莓派的密碼後即可連接配接成功

4 設定守護程序開機啟動

重新檢視安裝封包件,這裡提供了守護程序檔案systemd

frp_0.37.1_linux_arm $ ls
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd
frp_0.37.1_linux_arm $ cd systemd/
frp_0.37.1_linux_arm/systemd $ ls
frpc.service  [email protected]  frps.service  [email protected]
           

檢視frpc.service檔案

frp_0.37.1_linux_arm/systemd $ vim frpc.service
[Unit]
Description=Frp Client Service
After=network.target

[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/bin/frpc -c /etc/frp/frpc.ini
ExecReload=/usr/bin/frpc reload -c /etc/frp/frpc.ini
LimitNOFILE=1048576

[Install]
WantedBy=multi-user.target
           

将frpc.service檔案copy到/etc/systemd/system

這裡根據ExecStart配置項将二進制檔案及配置檔案copy到對應目錄并賦權

(systemctl enable指令相當于激活開機啟動)

frp_0.37.1_linux_arm/systemd $ sudo cp frpc.service /etc/systemd/system
frp_0.37.1_linux_arm/systemd $ cd ..
frp_0.37.1_linux_arm $ sudo cp frpc /usr/bin
frp_0.37.1_linux_arm $ sudo mkdir /etc/frp
frp_0.37.1_linux_arm $ sudo cp frpc.ini /etc/frp
frp_0.37.1_linux_arm $ sudo chmod 777 /etc/frp
frp_0.37.1_linux_arm $ sudo systemctl enable frpc	
frp_0.37.1_linux_arm $ sudo systemctl start frpc
frp_0.37.1_linux_arm $ sudo systemctl status frpc
           

檢視程序并重新開機,程序已經自動重新開機

~ $ ps -ef|grep frpc
nobody    1609     1  0 12:00 ?        00:00:02 /usr/bin/frpc -c /etc/frp/frpc.ini
pi        1806  1581  0 12:49 pts/0    00:00:00 grep --color=auto frpc
~ $ sudo reboot

# 重連後,服務已自動重新開機
~ $ ps -ef|grep frpc
nobody    1548     1  0 12:50 ?        00:00:00 /usr/bin/frpc -c /etc/frp/frpc.ini
pi        1578  1564  0 12:51 pts/0    00:00:00 grep --color=auto frpc
           

同理,公網IP位址的機器也可通過配置frps設定守護程序

繼續閱讀