Github地址:https://github.com/fatedier/frp
參考文檔地址:https://gofrp.org/docs/
安裝包下載地址(參考。本次以此版本安裝):https://github.com/fatedier/frp/releases/tag/v0.35.1
安裝包下載
- Centos7 64位可選擇此版本frp_0.35.1_linux_amd64.tar.gz
- 本次部署及測試環境:
- 測試協議UDP
- win10:訪問測試
- 阿里雲ECS Centos 7:frp服務端
- 虛擬機Centos 7 : frp客戶端
frp安裝
由於我的服務端和客戶端都是Linux系列,所以我下載一個即可。
如何區分服務端和客戶端:
看文件后綴:frp_
frps為服務端。后綴為s
frpc為客戶端。后綴為c
解壓命令:
tar -zxvf frp_0.35.1_linux_amd64.tar.gz
-
下載后解壓,文件目錄如下:

-
systemd內文件如下:

frp配置
-
服務端簡單配置:
frps.ini
[common] bind_port = 7000 #綁定端口,用於和客戶端連接 privilege_token = zxc1234 #用於連接認證,可以省略 dashboard_port = 7001 #啟動服務端UI頁面,可以看到一些信息,無管理功能 dashboard_pwd = zxc1234 #設置訪問頁面用戶的密碼。默認用戶名為:admin -
客戶端的簡單配置:
frpc.ini
[common] server_addr = 39.156.69.79 #frp服務端的地址,換成你的公網IP server_port = 7000 #frp服務端的端口 privilege_token = zxc1234 #連接認證 [web] privilege_token = true #是否使用認證 type = udp #連接類型 local_ip = 127.0.0.1 #默認值 local_port = 6002 #本機服務端口,比如ssh的22,則填入22。6000可能會被系統使用。 remote_port = 6001 #服務端轉發至本機對外開放的端口
frp啟動測試
啟動順序為:先服務端,后客戶端。
阿里雲ECS需在網絡規則中增開6001端口,協議選擇UDP(默認TCP,會導致本次測試失敗)>。
兩台主機都臨時關閉防火牆:
systemctl stop firewalld
-
服務端:
./frps -c frps.ini #設置后台運行,開機啟動參見文章末尾內容 #檢查端口監聽情況使用命令:netstatus -nltp (此處frp應監聽三個端口:7000、7001、6001) #7000接收frp客戶端連接、7001為UI面板、6001轉發至frp客戶端端口6001 -
客戶端:
./frpc -c frpc.ini #設置后台運行,開機啟動參見文章末尾內容 #檢查端口監聽情況使用命令:netstatus -nltp (此處frp應監聽兩個端口:6001、6002) #6001接收外部流量轉發至內部6002端口,6002端口由UDP服務端監聽 -
查看服務端UI面板(frp客戶端未啟動)

-
查看服務端UI面板(frp客戶端啟動后)


UDP通訊測試
-
win10下的一個
UDP 客戶端python腳本內容:import socket import time client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) num = 0 while 1: if num == 100: break #此處IP地址換成你的公網IP client.sendto("from client message".encode("utf-8"),("39.156.69.79",6001)) data,server = client.recvfrom(1024) print("接收到服務端消息:", data.decode("utf-8")) num += 1 print("發送第", num, "條") time.sleep(1) client.close() -
虛擬機中的一個
UDP 服務端python腳本內容:#python3 #coding:utf8 import socket server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) server.bind(("127.0.0.1", 6002)) print("服務器已經啟動") while True: data, client = server.recvfrom(1024) print("接受到客戶端的消息:", data.decode("utf-8")) server.sendto("from server message".encode("utf-8"), client) -
如果能通則會輸出對應內容,如果不通,建議先使用局域網進行測試(將
39.156.69.79改為192.168.28.131[vmware虛擬網卡])
使用systemctl 管理frp

-
配置frp服務端service文件:
移動frps.service文件至指定目錄:
cp ./frp_0.35.1_linux_amd64/systemd/frps.service /usr/lib/systemd/system/vi查看frps.service文件內容,記錄frps文件位置和frps.ini文件位置(也可創建一個):vi /usr/lib/systemd/system/frps.service[Unit] Description=Frp Server Service After=network.target [Service] Type=simple User=nobody Restart=on-failure RestartSec=5s ExecStart=/usr/bin/frps -c /etc/frp/frps.ini #注意此處內容 [Install] WantedBy=multi-user.target將
frps文件和frps.ini復制到指定位置:cp ./frp_0.35.1_linux_amd64/frps /usr/bin/ mkdir /etc/frp cp ./frp_0.35.1_linux_amd64/frps.ini /etc/frp測試啟動:
systemctl start frps systemctl status frps #設置開機啟動: systemctl enable frps #關閉開機啟動: systemctl disable frps
-
配置frp客戶端service文件:
參考服務端配置流程
