1. 程式人生 > 其它 >樹莓派利用frp服務實現內網穿透——一文搞定

樹莓派利用frp服務實現內網穿透——一文搞定

技術標籤:樹莓派raspberry pi伺服器linuxssh

frp服務是一個非常好用的內網穿透服務,如果自己有購買雲伺服器的話,可以使用該服務將樹莓派上的域名穿透至廣域網上面。
本文將介紹樹莓派上frp服務的使用方法,並整理介紹幾個常用但網上說得不清楚的frp功能,例如frp服務開機自啟、後臺執行等,以便於實際應用與個人參考

下載安裝

從github上獲取frp服務壓縮包,我這裡安裝的是0.20.0版本,目前GitHub上提供的最新版本為0.35.1版本
https://github.com/fatedier/frp/releases

wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_amd64.tar.gz
tar
-zxvf frp_0.20.0_linux_amd64.tar.gz

這樣你就可以在樹莓派下載目錄中找到frp_0.20.0_linux_amd64資料夾。我習慣將其放在/home/ubuntu(也就是預設資料夾下,可以根據自己的情況選擇資料夾)

配置檔案說明

我們會在資料夾中看到這幾個檔案
frp根目錄下的檔案
只需要修改frpc.ini和frps.ini即可,其中
frpc.ini是客戶端配置檔案(樹莓派配置這個)
frps.ini是伺服器配置檔案(伺服器配置這個)

客戶端配置

修改frpc.ini檔案

;此處使用分號“;”作為註釋,使用時記得刪除
[common]
server_addr = 這裡寫你的伺服器IP地址
server_port =
7000 ;伺服器上設定的埠,下文會說明,伺服器和客戶端設定相同即可 privilege_token = 自定義,與伺服器一致即可 login_fail_exit = false ;登入失敗是否退出 [ssh] type = tcp local_ip = 127.0.0.1 local_port = 24 ; 本地SSH埠 remote_port = 7979 ; 遠端SSH埠 ;=======以下是二級域名的設定,非必須========== [door] ;方括號寫二級域名名稱 type = http local_ip = 127.0.0.1 local_port = 8081 ; 本地訪問埠 subdomain =
door ; 二級域名名稱,和方括號保持一致絕對沒錯 http_user=guest ;這裡可以給訪問者設定賬戶密碼,此處設定使用者名稱 http_pwd=12345678 ; 此處設定密碼

每個引數及其意義我已經在註釋中說明了
server_addr有一個技巧,此處可以填寫域名代替IP地址(如果覺得IP地址記不住可以用這個方法)

伺服器配置

修改frps.ini檔案

[common]
bind_port = 7000 ;伺服器佔用的埠,和客戶端server_port 保持一致
vhost_http_port = 8080 ;伺服器訪問埠,輸入域名後必須加上這個埠號才能訪問!
privilege_token = 自定義,與客戶端一致即可
dashboard_port = 伺服器控制檯埠
dashboard_user = 控制檯使用者名稱
dashboard_pwd = 控制檯密碼
;以下是二級域名才會使用的配置
subdomain_host=  這裡寫你的伺服器域名
;例如伺服器為abc.com ,二級域名為dd,則需要訪問dd.abc.com:埠號  才能訪問

注意:無論是否為二級域名,伺服器域名解析時,都解析到伺服器自身的IP地址
到這裡所有的配置完畢啦~

執行服務

執行服務的命令為(根據自己的安裝路徑調整)
伺服器:

cd /home/ubuntu/frp_0.20.0_linux_amd64/
./frps -c ./frps.ini

客戶端

cd /home/ubuntu/frp_0.20.0_linux_amd64/
./frpc -c ./frpc.ini

這裡建議編寫一個sh檔案(例如frp.sh),這樣每次執行只需輸入

sh frp.sh

即可執行

服務後臺執行以及開機自啟動

在完成上述步驟後,frp服務就已經可以執行啦。不過你會發現一個非常棘手的問題,那就是每次執行都需要在伺服器和樹莓派上輸入命令才能執行,這樣絲毫沒有實際應用價值,必須能夠讓服務自啟動並後臺執行才能應用於實際當中。
1、本文使用supervisor服務配置frp服務自啟動與後臺執行。frp服務的安裝可以參見我的另一篇文章
Linux Ubuntu系統 supervisor服務安裝方法(親測可用)

2、在/etc/supervisor/conf.d目錄下建立frp.conf檔案,在supervisord.conf的include中加入

files = /etc/supervisor/conf.d/*.conf

3、寫frp.conf檔案如下:

[program:frp]
command = /home/ubuntu/frp_0.20.0_linux_amd64/frps -c /home/ubuntu/frp_0.20.0_linux_amd64/frps.ini
autostart = true

這裡我使用sh檔案進行控制,會方便很多

4、更新supervisor的配置

[email protected]:~$ supervisorctl 
supervisor> reload 
Really restart the remote supervisord process y/N? y
Restarted supervisord
supervisor> status 
frp                              RUNNING   pid 31053, uptime 0:00:04

這樣我們就可以看到,frp服務已經在執行啦!撒花~
伺服器和客戶端兩邊都配置好,就可以實現內網穿透了

摸索了這麼久終於找到了完整的方法。限於本人水平問題,如果有什麼錯誤之處還望評論指出~