這次frp的搭建的起因是這樣的,元旦假期和朋友玩星露谷,使用steam自帶的聯機,掉線很頻繁,玩一會必掉線,之后換用游俠對戰平台,聯機效果也不理想,會存在卡頓等情況,之后還遇到了報錯;想到自己還有一台公網服務器,所以一怒之下搭建frp內網穿透進行聯機。
下載
需要根據自己的實際情況自行下載,網址為https://github.com/fatedier/frp/releases。
我的服務器為Linux,客戶端是Windows,就需要同時下載Linux和Windows的壓縮包(在本篇文章發布時,frp版本更新到0.38.0)。
配置
在進行配置之前先看一下frp的目錄結構,以Windows為例。
frp_0.38.0_windows_amd64/
├── LICENSE
├── frpc.exe
├── frpc.ini
├── frpc_full.ini
├── frps.exe
├── frps.ini
├── frps_full.ini
└── systemd
├── frpc.service
├── frpc@.service
├── frps.service
└── frps@.service
類似上面結構,Linux與Windows程序中不同的僅為可執行文件的不同。
服務器端
修改frps.ini文件,修改如下:
[common]
bind_udp_port = 8001 # 設置服務器監聽UDP端口為8001,可根據需要進行修改
privilege_token = test # 鑒權使用的token值,可根據需要進行修改(客戶端與服務端的privilege_token相同才能進行連接,實際環境一定要設置為一個復雜值,此處為方便填入test)
dashboard_port = 8002 # 啟用Dashboard監聽的端口
dashboard_pwd = test # HTTP BasicAuth 用戶名,登錄Dashboard時的用戶名
dashboard_user = admin # HTTP BasicAuth 密碼,登錄Dashboard時的密碼
enable_prometheus = true # 是否提供 Prometheus 監控接口,需要同時啟用了 Dashboard 才會生效
未對服務器監聽端口進行設置,默認為7000
,可添加bind_port
參數進行設置端口。
配置完成,運行frps,命令為./frps -c frps.ini
。
客戶端
修改frpc.ini,如下:
[common]
server_addr = 服務器IP,根據實際情況修改
bind_udp_port = 8001 # 連接服務端UDP的端口
privilege_token = test # 與服務器中相同
[udp]
type = udp # 設置協議類型為UDP
local_ip = 127.0.0.1 # 設置本機IP
local_port = 24642 # 設置需要進行轉發的端口,可根據需求進行修改
remote_port = 8888 # 設置轉發到服務器的端口,可根據需求進行修改
其中bind_udp_port
的設置可能不生效,實際還是需要連接到7000端口(不進行配置為默認7000端口),local_port
的24642端口為星露谷聯機端口,udp部分的內容為將24642端口UDP協議的數據轉發到服務器的8888端口,聯機時輸入xxx.xxx.xxx.xxx:8888就可以與本機建立連接(xxx.xxx.xxx.xxx為服務器的公網IP或域名)。
配置完成,打開cmd,進入到frp目錄下,使用.\frpc.exe -c frpc.ini
運行與服務器建立連接。
ps:如果服務器是阿里雲、騰訊雲的雲服務器,需要在安全組或者是防火牆中將涉及到的服務器端口開放,同時主機的防火牆策略也要設置允許,這里開放的端口為7000、8001、8002、8888,且8888端口允許的協議為UDP。