遠程調試frp

嵌入式設備上線之後,如果遇到問題想要線上維護,最直接的方法的能夠遠程ssh進入到設備裏,然後查看日誌定位問題,這邊介紹使用frp配合mqtt的方式進行設備遠程調試。

1.遠程調試原理

遠程調試的原理如下:

  • 本地網關與MQTT服務器保持長連接,用來接收開啓遠程/關閉遠程命令
  • fprs服務器需要有公網IP,開發人員可以通過該公網IP和指定的端口遠程
  • 開發人員通過約定好的MQTT消息,發送開啓遠程命令給本地網關。本地網關收到開啓遠程的命令後,就啓動frpc去連接對應的frps服務器。
  • 本地網關frpc連接frps成功之後,開發人員就可以內網穿透ssh到本地網關

2.frps服務器搭建

2.1 下載

不需要編譯,可以直接用

https://github.com/fatedier/frp/releases

從github上面下載對應平臺的壓縮包,是go語音寫的不需要編譯。

ubuntu:~/Desktop/frp_0.36.2_linux_arm$ ls
frpc  frpc_full.ini  frpc.ini  frps  frps_full.ini  frps.ini  LICENSE  systemd
  • frps爲服務器
  • frps.ini爲服務器的配置文件,frps_full.ini全部的配置信息
  • frpc爲客戶端
  • frpc.ini爲客戶端的配置文件,frpc_full.ini全部的配置信息
2.2 服務器配置

一般會被指兩個參數

  • bind_port服務器綁定的地址
  • dashboard服務器的後臺管理頁面地址
[common]
bind_port = 1000

dashboard_user = admin
dashboard_pwd = admin
dashboard_port = 1001
enable_prometheus = true

設置好內容後,運行如下命令就可以

/usr/local/bin/frps -c /etc/frp/frps.ini

看板內容如下:


2.3 服務器添加自啓動
# 需要先 cd 到 frp 解壓目錄.

# 複製文件
cp frps /usr/local/bin/frps
mkdir /etc/frp
cp frps.ini /etc/frp/frps.ini

# 編寫 frp service 文件,以 ubuntu 爲例
vim /usr/lib/systemd/system/frps.service (有時候需要手動創建system文件夾)
# 內容如下
[Unit]
Description=frps
After=network.target

[Service]
TimeoutStartSec=30
ExecStart=/usr/local/bin/frps -c /etc/frp/frps.ini
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=multi-user.target

啓動 frp 並設置開機啓動

systemctl enable frps
systemctl start frps
systemctl status frps

部分服務器上,可能需要加 .service 後綴來操作,即:

systemctl enable frps.service
systemctl start frps.service
systemctl status frps.service

停止frps

systemctl stop frps

運行狀態和日誌

[root@VM-11-12-centos frp_0.35.1_linux_amd64]# systemctl status frps
● frps.service - frps
   Loaded: loaded (/usr/lib/systemd/system/frps.service; enabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-02-23 14:07:27 CST; 1min 8s ago
  Process: 18791 ExecStop=/bin/kill $MAINPID (code=exited, status=0/SUCCESS)
 Main PID: 12498 (frps)
   CGroup: /system.slice/frps.service
           └─12498 /usr/local/bin/frps -c /etc/frp/frps.ini

3.frpc客戶端搭建

3.1 客戶端配置

使用的就是上面下載的frpc客戶端和frpc.ini配置文件

如下配置,就是將本地的ssh 22端口,映射到frps公網IP的1002端口

root@zihome:/# cat /tmp/frpc.ini
[common]
server_addr = 公網IP
server_port = 1000


[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
authentication_timeout = 0
remote_port = 1002

設置好內容後,運行如下命令就可以

frpc -c /tmp/frpc.ini

然後就可以遠程登錄了

ssh -p 1002 root@公網IP

官網:

https://github.com/fatedier/frp.git

https://github.com/kuoruan/openwrt-frp.git

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章