當前位置: 妍妍網 > 碼農

1Panel面板搭建Frp實作內網穿透詳細配置

2024-03-05碼農

概覽

frp 是什麽?

frp 是一款高效能的反向代理套用,專註於內網穿透。它支持多種協定,包括 TCP、UDP、HTTP、HTTPS 等,並且具備 P2P 通訊功能。使用 frp,您可以安全、便捷地將內網服務暴露到公網,透過擁有公網 IP 的節點進行中轉。

架構

Github 地址:https://github.com/fatedier/frp

為什麽選擇 frp?

透過在具有公網 IP 的節點上部署 frp 伺服端,您可以輕松地將內網服務穿透到公網,並享受以下專業特性:

  • 多種協定支持:客戶端伺服端通訊支持 TCP、QUIC、KCP 和 Websocket 等多種協定。

  • TCP 連線流式復用:在單個連線上承載多個請求,減少連線建立時間,降低請求延遲。

  • 代理組間的負載均衡。

  • 埠復用:多個服務可以透過同一個伺服端埠暴露。

  • P2P 通訊:流量不必經過伺服器中轉,充分利用頻寬資源。

  • 客戶端外掛程式:提供多個原生支持的客戶端外掛程式,如靜態檔檢視、HTTPS/HTTP 協定轉換、HTTP、SOCKS5 代理等,以便滿足各種需求。

  • 伺服端外掛程式系統:高度可延伸的伺服端外掛程式系統,便於根據自身需求進行功能擴充套件。

  • 使用者友好的 UI 頁面:提供伺服端和客戶端的使用者介面,使配置和監控變得更加方便。

  • 安裝

    市集

    版本號:v0.54.0

    自訂網域名稱存取內網的 Web 服務

    透過簡單配置 HTTP 型別的代理,您可以讓使用者透過自訂網域名稱存取內網的 Web 服務。HTTP 型別的代理非常適合將內網的 Web 服務透過自訂網域名稱提供給外部使用者。相比於 TCP 型別代理,HTTP 代理不僅可以復用埠,還提供了基於 HTTP 協定的許多功能。

    HTTPS 與此類似,但是需要註意,frp 的 https 代理需要本地服務是 HTTPS 服務,frps 端不會做 TLS 終止。也可以結合 https2http 外掛程式來實作將原生的 HTTP 服務以 HTTPS 協定暴露出去。

    步驟

    1. 配置 frps.toml

    frps.toml 檔中添加以下內容,以指定 HTTP 請求的監聽埠為 8484

    【市集】【frps】【進入安裝目錄】,

    檔路徑: /opt/1panel/apps/frps/frps/data/ frps.toml

    bindPort = 7000
    vhostHTTPPort = 8484

    註:如果需要配置 HTTPS 代理,還需要設定 vhostHTTPSPort

    2. 開放埠

    阿裏雲伺服器埠是沒有開放的,所以我們需要先在阿裏雲安全組中開放相關埠

  • 7000 :frp客戶端和伺服端通訊埠

  • 8484 :伺服器端要監聽的埠

  • 7500 :這是frp面板的埠

  • 3. 配置 frpc.toml

    註意:這裏客戶端版本必須要和伺服端版本保持一致,我這裏使用的是Windows系統。所以需要下載:frp_0.54.0_windows_amd64.zip 版本。

    frpc.toml 檔中添加以下內容,確保設定了正確的伺服器 IP 地址、本地 Web 服務監聽埠和自訂網域名稱:

    serverAddr = "x.x.x.x"
    serverPort = 7000
    [[proxies]]
    name = "web"
    type = "http"
    localPort = 8782
    customDomains = ["webman2024.tinywan.com"]

    serverAddr = "x.x.x.x" 地址為伺服器公網IP

    4. 啟動本地服務webman

    php start.php start
    Workerman[start.php] start in DEBUG mode
    ---------------------------------------------------- WORKERMAN ----------------------------------------------------
    Workerman version:4.1.13 PHP version:7.4.27 Event-Loop:\Workerman\Events\Event
    ----------------------------------------------------- WORKERS -----------------------------------------------------
    proto user worker listen processes status
    tcp root SGSXService http://0.0.0.0:8782 24 [OK]
    tcp root monitor none 1 [OK]
    tcp root plugin.webman.redis-queue.consumer none 2 [OK]
    -------------------------------------------------------------------------------------------------------------------
    Press Ctrl+C to stop. Start success.

    註意:確保本地服務 http://127.0.0.1:8782 可以正常存取

    5. 啟動 frps 和 frpc

    伺服端frps

    客戶端frpc

    cd /d/frp_0.54.0_windows_amd64
    $ ./frpc.exe -c frpc.toml
    2024/03/0515:25:00 [I] [root.go:142] start frpc service for config file [frpc.toml]
    2024/03/0515:25:00 [I] [service.go:287try to connect to server...
    2024/03/0515:25:00 [I] [service.go:279] [0c13f9a1260e245b] login to server success, get run id [0c13f9a1260e245b]
    2024/03/0515:25:00 [I] [proxy_manager.go:173] [0c13f9a1260e245b] proxy added: [web]
    2024/03/0515:25:00 [I] [control.go:170] [0c13f9a1260e245b] [web] start proxy success

    6. 網域名稱解析

    webman2024.tinywan.com 的網域名稱 A 記錄解析到伺服器的 IP 地址 x.x.x.x。如果伺服器已經有對應的網域名稱,您還可以將 CNAME 記錄解析到原始網域名稱。另外,透過修改 HTTP 請求的 Host 欄位也可以實作相同的效果。

    7. 透過瀏覽器存取

    使用瀏覽器存取 http://webman2024.tinywan.com:8484 即可存取內網機器上的 8782 埠服務