不再受限!詳解FRP內(nèi)網(wǎng)穿透,讓遠(yuǎn)程訪問(wèn)變得簡(jiǎn)單!
一、介紹
frp是一款高性能的反向代理應(yīng)用,專注于內(nèi)網(wǎng)穿透。它支持多種協(xié)議,包括 TCP、UDP、HTTP、HTTPS 等,并且具備 P2P 通信功能。使用 frp,您可以安全、便捷地將內(nèi)網(wǎng)服務(wù)暴露到公網(wǎng),通過(guò)擁有公網(wǎng)IP的節(jié)點(diǎn)進(jìn)行中轉(zhuǎn)。
1.工作原理
FRP的基本工作流程如下:
- 客戶端(frpc): 部署在內(nèi)網(wǎng)中,負(fù)責(zé)將內(nèi)網(wǎng)服務(wù)通過(guò)FRP協(xié)議發(fā)送到公共服務(wù)器。
- 服務(wù)器(frps): 部署在外網(wǎng)中,接收來(lái)自客戶端的數(shù)據(jù),并將請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的內(nèi)網(wǎng)服務(wù)。
當(dāng)外網(wǎng)用戶訪問(wèn)公共服務(wù)器上的特定端口時(shí),F(xiàn)RP服務(wù)器會(huì)將請(qǐng)求轉(zhuǎn)發(fā)給相應(yīng)的FRP客戶端,從而實(shí)現(xiàn)對(duì)內(nèi)網(wǎng)服務(wù)的訪問(wèn)。
FRP工作原理圖
2.FRP的優(yōu)點(diǎn)
- 高性能:FRP對(duì)流量進(jìn)行了優(yōu)化,支持高并發(fā)連接。
- 配置靈活:支持多種協(xié)議,且可以對(duì)不同服務(wù)進(jìn)行不同的配置。
- 開源免費(fèi):FRP 是一款開源軟件,用戶可以根據(jù)需要自由修改和使用。
二、FRP的安裝與配置
接下來(lái)我們將介紹如何在你的服務(wù)器和內(nèi)網(wǎng)設(shè)備上安裝和配置FRP。所以,要使用 FRP 實(shí)現(xiàn)內(nèi)網(wǎng)穿透,首先需要擁有一臺(tái) VPS。
1.環(huán)境準(zhǔn)備
在開始之前,你需要準(zhǔn)備以下環(huán)境:
- 一臺(tái)公網(wǎng)服務(wù)器(用于部署FRP服務(wù)器),本案例是采用ubuntu的系統(tǒng)。具體的版本如下所示:
- 一臺(tái)內(nèi)網(wǎng)設(shè)備(用于部署FRP客戶端),內(nèi)網(wǎng)的機(jī)器我采用的是pve系統(tǒng),具體版本如下所示:
2.服務(wù)器端(frps)安裝與配置
FRP 服務(wù)端(frps)的安裝方式多種多樣,您可以選擇使用二進(jìn)制文件或 Docker 進(jìn)行部署。
(1) 二進(jìn)制部署
通過(guò)github獲取最新版文件下載,如下圖所示:
登錄系統(tǒng)后,切換到指定目錄。在本例中,我選擇了opt目錄。
cd /opt
下載frp文件,將wget后面的連接換下最新版本。
wget https://github.com/fatedier/frp/releases/download/v0.60.0/frp_0.60.0_linux_amd64.tar.gz
下載完成后執(zhí)行下面的命令解壓文件:
sudo tar -zxvf frp_0.60.0_linux_amd64.tar.gz
執(zhí)行下面的命令對(duì)frp應(yīng)用重命名:
mv frp_0.60.0_linux_amd64 frp_0.60.0
文件介紹:
- frps:服務(wù)端啟動(dòng)文件。
- frps.toml:服務(wù)端的配置文件。
所以,服務(wù)端只需要留下 frps 和 frps.toml 即可。編輯 frps.toml ,完成的配置文件選項(xiàng)可訪問(wèn)官方模板[1]。
bindAddr = "0.0.0.0"
bindPort = 7000
auth.method = "token" # 用于客戶端和服務(wù)器通信的身份驗(yàn)證令牌
auth.token = "user1@1234" #秘鑰格式建議配置 用戶+@+密碼 的格式,方便區(qū)分用戶
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "user" #管理面板的用戶
webServer.password = "密碼" #管理面板的密碼
# tls
#transport.tls.force = true
#transport.tls.certFile = "/etc/frp/ssl/server.crt"
#transport.tls.keyFile = "/etc/frp/ssl/server.key"
#transport.tls.trustedCaFile = "/etc/frp/ssl/ca.crt"
配置服務(wù)端systemd管理frp,執(zhí)行下面的命令創(chuàng)建frps.service文件。
vim /etc/systemd/system/frps.service
并在該文件寫入如下內(nèi)容:
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 啟動(dòng)frps的命令,需修改為您的frps的安裝路徑
ExecStart = /opt/frp_0.60.0/frps -c /opt/frp_0.60.0/frps.toml
[Install]
WantedBy = multi-user.target
執(zhí)行下面的命令啟用開機(jī)自器和啟動(dòng)服務(wù)。
systemctl enable frps && sudo systemctl start frps
檢查服務(wù)是否正常,使用如下命令查看,如果服務(wù)異不是active請(qǐng)檢查日志。
systemctl status frps
(2) 1Panel部署
如果覺得上面的二進(jìn)制部署方式復(fù)雜,可以嘗試使用 1Panel部署。由于我的VPS已經(jīng)安裝了 1Panel,可以直接通過(guò) 1Panel 輕松安裝 frps。
打開1panel應(yīng)用商店,直接找到frp服務(wù)端,安裝:
部署完成如下圖所示:
認(rèn)證方式,默認(rèn)是token,token的設(shè)置和獲取,在應(yīng)用市場(chǎng)、已安裝,點(diǎn)進(jìn)入安裝目錄按鈕。
frps狀態(tài)
frps配置文件
三、客戶端安裝配置
客戶端只需要留下frpc和frpc.toml文件。編輯frpc.toml,并在該文件添加如下內(nèi)容:
serverAddr = "x.x.x.x" #VPS服務(wù)器的IP地址(公網(wǎng)IP)
serverPort = 7000 #frps服務(wù)端口,對(duì)于的上面的frps配置文件bindPort的值
auth.method = "token"
auth.token = "token" #frps服務(wù)認(rèn)證token,對(duì)于的上面的frps配置文件auth.token的值
[[proxies]]
name = "pve-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
remotePort = 1022
上述[[proxies]]代碼塊的意思是把本地的22端口,通過(guò)公網(wǎng)IP的1022端口進(jìn)行轉(zhuǎn)發(fā)。說(shuō)明白一點(diǎn)就是通過(guò)公網(wǎng)的1022端口即可訪問(wèn)內(nèi)網(wǎng)的本機(jī)的22端口。
注意:這個(gè)1022端口需要在VPS的防火墻上進(jìn)行放通。
配置客戶端systemd管理frpc,執(zhí)行下面的命令創(chuàng)建frpc.service文件。
vim /etc/systemd/system/frpc.service
并在該文件添加如下內(nèi)容:
[Unit]
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 啟動(dòng)frps的命令,需修改為您的frps的安裝路徑
ExecStart = /usr/local/frp/frpc/frpc -c /usr/local/frp/frpc/frpc.toml
[Install]
WantedBy = multi-user.target
執(zhí)行下面的命令啟用開機(jī)自器和啟動(dòng)服務(wù)。
systemctl enable frpc && sudo systemctl start frpc
執(zhí)行下面的命令檢查客戶端狀態(tài)是否正常,如果服務(wù)異不是active請(qǐng)檢查日志。
systemctl status frpc
frpc狀態(tài)
四、訪問(wèn)管理web
默認(rèn)看板只監(jiān)聽本地 127.0.0.1 地址,如果你通過(guò)內(nèi)網(wǎng)地址請(qǐng)修改 webServer.addr = "x.x.x.x" 配置字段。
服務(wù)端看板
五、總結(jié)
通過(guò)本文的介紹,相信你已經(jīng)對(duì)FRP有了較為全面的了解。從基本的安裝配置到高級(jí)功能的使用,F(xiàn)RP都能滿足你不同場(chǎng)景下的內(nèi)網(wǎng)穿透需求。如果你正在尋找一款高效、易用的內(nèi)網(wǎng)穿透工具,F(xiàn)RP無(wú)疑是一個(gè)非常不錯(cuò)的選擇。趕快動(dòng)手試試吧,讓你的遠(yuǎn)程訪問(wèn)不再受限!