frp內網穿透搭建流程,UDP通訊測試


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客戶端未啟動)

    訪問:http://公網地址:7001

  • 查看服務端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文件:

    參考服務端配置流程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM