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