一款很不錯(cuò)的內(nèi)網(wǎng)穿透工具—FRP,值得花三分鐘時(shí)間學(xué)習(xí)
FRP內(nèi)網(wǎng)穿透
作為一名互聯(lián)網(wǎng)人,你是不是經(jīng)常會(huì)遇到需要在外網(wǎng)訪問內(nèi)網(wǎng)服務(wù)的情況,而內(nèi)網(wǎng)服務(wù)通常是無法直接從外網(wǎng)訪問的。FRP是一款優(yōu)秀的內(nèi)網(wǎng)穿透工具,可以幫助我們實(shí)現(xiàn)從外網(wǎng)訪問內(nèi)網(wǎng)服務(wù)的目的。但是也要做好網(wǎng)絡(luò)安全的舉措。
使用場景:
- 遠(yuǎn)程辦公:如果你的工作需要在家中訪問公司內(nèi)部的服務(wù)器,F(xiàn)RP可以幫助你實(shí)現(xiàn)。
- 私有云服務(wù):如果你在家中搭建了私有云,比如NextCloud,F(xiàn)RP可以幫助你在任何地方訪問你的私有云。
- 物聯(lián)網(wǎng)設(shè)備接入:如果你有一些物聯(lián)網(wǎng)設(shè)備需要接入互聯(lián)網(wǎng),F(xiàn)RP可以幫助你輕松實(shí)現(xiàn)。
- 游戲服務(wù)器:如果你想在家中搭建游戲服務(wù)器,讓你的朋友也能加入,F(xiàn)RP可以幫助你實(shí)現(xiàn)這一點(diǎn)。
- Web開發(fā)和測試:如果你是一名Web開發(fā)者,F(xiàn)RP可以幫助你在本地開發(fā)和測試你的應(yīng)用,然后通過公網(wǎng)讓其他人訪問進(jìn)行測試。
一、FRP的原理
FRP采用了一種比較特殊的網(wǎng)絡(luò)傳輸方式,將內(nèi)網(wǎng)服務(wù)端口映射到公網(wǎng)上,從而實(shí)現(xiàn)了內(nèi)網(wǎng)穿透。具體來說,F(xiàn)RP分為兩個(gè)部分:客戶端和服務(wù)端。
客戶端負(fù)責(zé)將內(nèi)網(wǎng)服務(wù)端口映射到公網(wǎng)上,而服務(wù)端則負(fù)責(zé)接收公網(wǎng)請求并將其轉(zhuǎn)發(fā)到客戶端,從而實(shí)現(xiàn)內(nèi)網(wǎng)穿透。FRP支持TCP、UDP、HTTP和HTTPS等多種協(xié)議,可以滿足各種場景下的需求。
二、FRP的安裝和配置
FRP提供了Windows、Linux、MacOS等多個(gè)平臺(tái)的客戶端和服務(wù)端,可以根據(jù)實(shí)際需求進(jìn)行選擇。在本文中,我們以Windows平臺(tái)為例,介紹FRP客戶端的安裝和配置方法;以Ubuntu 20.04為例,介紹FRP服務(wù)端的安裝和配置方法。
1.服務(wù)端安裝和配置
(1) 在Ubuntu 20.04上安裝FRP服務(wù)端程序。
# 添加FRP源
echo 'deb http://ppa.launchpad.net/xtaci/frp/ubuntu focal main' | sudo tee /etc/apt/sources.list.d/frp.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 37BBEE3F7AD95A2F3F64B1D8865D6A5BA7D1F8CC
sudo apt update
# 安裝FRP
sudo apt install -y frp
(2) 修改frps.ini配置文件,配置服務(wù)端口和認(rèn)證信息。
[common]
bind_port = 7000
authentication_method = token
token = your_token
其中,bind_port為服務(wù)端口,authentication_method為認(rèn)證方式,token為認(rèn)證密鑰。
(3) 啟動(dòng)FRP服務(wù)端程序。
sudo systemctl start frps
2.客戶端安裝和配置
(1) 下載FRP客戶端程序,并解壓到任意目錄。
(2) 修改frpc.ini配置文件,配置需要映射的內(nèi)網(wǎng)服務(wù)端口和對應(yīng)的公網(wǎng)端口。
[common]
server_addr = x.x.x.x
server_port = 7000
token=***[在服務(wù)端中定義好]
[web]
type = tcp
local_ip = 127.0.0.1
local_port = 80
remote_port = 6000
其中,server_addr和server_port為FRP服務(wù)端的地址和端口,local_ip和local_port為內(nèi)網(wǎng)服務(wù)的地址和端口,remote_port為公網(wǎng)端口。
(3) 運(yùn)行 FRP 客戶端程序,可以在cmd命令行窗口中輸入以下命令:
frpc.exe -c frpc.ini
其中,frpc.ini 為客戶端配置文件的路徑。
如果客戶端程序能夠正常連接到 FRP 服務(wù)端,那么在命令行窗口中應(yīng)該會(huì)看到類似如下的輸出:
2023/06/01 15:15:08 [I] [proxy_manager.go:152] [3f27fabcdf47f0bb] proxy added: [web]
2023/06/01 15:15:08 [I] [control.go:196] [3f27fabcdf47f0bb] [web] start proxy success
至此,F(xiàn)RP 客戶端就已經(jīng)成功運(yùn)行了,可以通過公網(wǎng) IP 地址和對應(yīng)的端口訪問內(nèi)網(wǎng)服務(wù)了。
三、FRPS服務(wù)端一鍵部署腳本
為了方便部署FR系統(tǒng),可以快速部署FRPS服務(wù)端。
#!/bin/bash
# 安裝必要的軟件包
apt update
apt install -y wget tar
# 下載FRPS程序
wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
tar zxvf frp_0.37.1_linux_amd64.tar.gz
# 配置FRPS
cd frp_0.37.1_linux_amd64
echo '[common]' > frps.ini
echo 'bind_port = 7000' >> frps.ini
echo 'authentication_method = token' >> frps.ini
echo 'token = your_token' >> frps.ini
# 啟動(dòng)FRPS
./frps -c frps.ini
在運(yùn)行腳本之前,需要將your_token替換為實(shí)際的認(rèn)證密鑰。運(yùn)行腳本
四、總結(jié)思考
應(yīng)該也有朋友像我一樣經(jīng)常需要這種內(nèi)網(wǎng)穿透的工具,通過一臺(tái)公網(wǎng)的服務(wù)器實(shí)現(xiàn)隨意訪問多個(gè)不同的局域網(wǎng),如果你也有這種需求,可以試試frp,好部署好使用。