FRP 內(nèi)網(wǎng)穿透
需求背景
最近小王公司接個(gè)對接公眾賬號(hào)應(yīng)用開發(fā)的項(xiàng)目,其中有個(gè)功能需求是"用戶關(guān)注公眾賬號(hào)后發(fā)送特定消息后公眾賬號(hào)需要回復(fù)一個(gè)二維碼海報(bào)“。了解需求后,便查看了微信接口文檔說明,公眾賬號(hào)需要配置一個(gè)回調(diào)地址做通知。經(jīng)驗(yàn)豐富的小王,一看很簡單嘛,便分分鐘對接微信文檔實(shí)現(xiàn)了功能,部署時(shí)需要把程序開發(fā)好的服務(wù)部署到公司的公網(wǎng)測試服務(wù)器上進(jìn)行調(diào)試,一來一回半天時(shí)間沒有了!咋辦呢? 為了節(jié)約小時(shí),有什么方法能讓回調(diào)地址直接到通知到自己的電腦上進(jìn)行調(diào)試呢。百度了下,原來方法挺多,什么natApp啊,花生殼啊,frp ,對比下,netapp,花生殼高級(jí)點(diǎn)的功能都要收費(fèi), frp 需要自己配置,但是需要一臺(tái)公網(wǎng)服務(wù)器穿透,正好公司有一臺(tái)閑置的服務(wù)器,于是便搭建了內(nèi)網(wǎng)穿透進(jìn)行調(diào)試,很快項(xiàng)目順利完成驗(yàn)收上線。
拓?fù)鋱D

FTP 需要公網(wǎng)服務(wù)器上轉(zhuǎn)一個(gè)服務(wù)端應(yīng)用,在需要穿透的內(nèi)網(wǎng)機(jī)器需要安裝一個(gè)客戶端程序,完成配置啟動(dòng)應(yīng)用后,即可進(jìn)行外網(wǎng)訪問,十分方便,搭建過程10分鐘內(nèi)就能搞定。
介紹
GitHub 地址:https://github.com/fatedier/frp
通過在具有公網(wǎng) IP 的節(jié)點(diǎn)上部署 frp 服務(wù)端,可以輕松地將內(nèi)網(wǎng)服務(wù)穿透到公網(wǎng),同時(shí)提供諸多專業(yè)的功能特性,這包括:
•客戶端服務(wù)端通信支持 TCP、KCP 以及 Websocket 等多種協(xié)議。•采用 TCP 連接流式復(fù)用,在單個(gè)連接間承載更多請求,節(jié)省連接建立時(shí)間。•代理組間的負(fù)載均衡。•端口復(fù)用,多個(gè)服務(wù)通過同一個(gè)服務(wù)端端口暴露。•多個(gè)原生支持的客戶端插件(靜態(tài)文件查看,HTTP、SOCK5 代理等),便于獨(dú)立使用 frp 客戶端完成某些工作。•高度擴(kuò)展性的服務(wù)端插件系統(tǒng),方便結(jié)合自身需求進(jìn)行功能擴(kuò)展。•服務(wù)端和客戶端 UI 頁面。
服務(wù)端安裝
•下載安裝
# 進(jìn)入服務(wù)器進(jìn)入進(jìn)行wget 下載
cd /usr/local
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_arm64.tar.gz
# 解壓
tar -zxvf frp_0.24.1_linux_amd64.tar.gz
#進(jìn)入目錄刪除客戶端配置
cd frp_0.24.1_linux_amd64/
rm -f frpc
rm -f frpc.ini
•
配置服務(wù)器配置文件 frps.ini
[common]
#服務(wù)器監(jiān)聽端口
bind_port = 7000
#對網(wǎng)穿透http端口
vhost_http_port =80
#管理頁面防訪問端口
dashboard_port = 7500
# dashboard's username and password are both optional,if not set, default is admin.
dashboard_user = admin
dashboard_pwd = 123456
•
啟動(dòng)
./frps -c ./frps.ini
訪問看dashboard, dashboard 中可以看到連接穿透的客戶端信息。
http://47.104.17.91:7500

客戶端配置
同上服務(wù)器端下載安裝包解壓配置,刪除frps.ini 文件,只配置客戶端配置 frpc.ini
[common]
#服務(wù)端地址
server_addr = 47.104.17.91
#服務(wù)端監(jiān)聽端口,對應(yīng)服務(wù)器bind_port
server_port = 7000
#應(yīng)用名稱
[my_web]
# 協(xié)議
type = http
#本地應(yīng)用端口名稱
local_port = 8888
#訪問穿透域名
custom_domains = test.monkeytit.com
•
啟動(dòng)
./frpc -c ./frpc.ini
•
本地啟動(dòng)一個(gè)測試springboot 服務(wù),端口8888 項(xiàng)目
•
解析域名到咱們的外網(wǎng)服務(wù)器 test.monkeytit.com
•
訪問測試
http://test.monkeytit.com/callback
•
TCP 穿透例子
比如咱們在家想對公司一臺(tái)內(nèi)網(wǎng)服務(wù)器進(jìn)行管理,可以配置一個(gè)遠(yuǎn)程穿透的SSH 服務(wù)。配置如下
[common]
#服務(wù)端地址
server_addr = 47.104.17.91
#服務(wù)端監(jiān)聽端口,對應(yīng)服務(wù)器bind_port
server_port = 7000
[test_ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 222
這樣配置,咱們就可以通過 ssh [email protected][1] -p 222 進(jìn)行連接內(nèi)網(wǎng)服務(wù)器進(jìn)行管理。
•特別注意: 如果使用的是阿里云或者騰訊云做穿透,需要把Server的bind_port、vhost_http_port、dashboard_port 端口,配置安全組入站規(guī)則中,否則可能訪問不通
References
[1] [email protected]: mailto:[email protected]