fscarmen

fscarmen

【科學新思路】👏反向回源之 Gost + Cloudflare Tunnel

相關資源#

項目地址:https://www.github.com/fscarmen/cfd_return

視頻教程:https://youtu.be/X032LZkVZSs

Cloudflared 應用下載:https://github.com/cloudflare/cloudflared/releases

Cloudflare Tunnel Json 獲取網:http://fscarmen.cloudflare.now.cc

gost v3 應用下載:https://github.com/go-gost/gost/releases

cfd 優選工具下載:https://github.com/fscarmen/cfd_return/tree/main/cfd

背景及方案簡介#

在搭建網絡服務的過程中,我們常常會用到 CDN(內容分發網絡)來加速用戶訪問。傳統的 CDN 服務,如通常是 “正向” 的,即用戶訪問 CDN 節點,CDN 節點再轉發請求到遠程的 VPS(虛擬專用伺服器)。然而,這種方式需要 VPS 具有公網 IP,且可能會受到網絡延遲和帶寬限制的影響。

今天,我們要介紹的是一個基於 Cloudflare Tunnel 的 “反向回源” 工具,它能夠讓你的本地服務通過內網穿透的方式接入 Cloudflare 的 CDN 網絡,實現全球加速訪問。這個工具支持多種操作系統,包括 CentOS、Debian、Ubuntu、Alpine 和 OpenWRT,安裝和使用都非常方便。

image

什麼是 Cloudflare Tunnel?#

Cloudflare Tunnel 是 Cloudflare 提供的一種安全、可靠的內網穿透服務。它允許你將本地服務暴露給互聯網,而無需開放任何公網端口或配置複雜的防火牆規則。通過 Cloudflare Tunnel,你的本地服務可以接入 Cloudflare 的全球網絡,享受低延遲、高帶寬的訪問體驗。

什麼是 Gost?#

Gost (GO Simple Tunnel) v3 是用 GO 語言實現的安全隧道,支持多種網絡協議和代理方式。它的設計目標是提供一個簡單、靈活且高效的網絡代理解決方案。Gost 可以用於構建各種網絡拓撲結構,如正向代理、反向代理、隧道代理等。
項目地址:https://github.com/go-gost/gost
項目文檔:https://gost.run/

反向回源的優勢#

  • 突破公網入口限制:傳統 CDN 需要 VPS 具有公網 IP,而本工具借助 Cloudflare Tunnel,實現了內網穿透,無需公網 IP 即可接入 CDN。
  • 自動優選 cloudflared 接入 IP: 使用熱心網友 cf 中轉 ip 群群主提供的玩具 cfd,從多個候選的 endpoint(包括 region1.v2.argotunnel.com、region2.v2.argotunnel.com、us-region1.v2.argotunnel.com、us-region2.v2.argotunnel.com 等)中,這些 endpoint 可能包含多個 IPv4 和 IPv6 地址,工具選出延遲最小的接入 IP。
  • 應用場景廣泛:除了傳統的 VPS 外,你還可以在各種容器、遊戲平台甚至家庭網絡中部署本工具,實現服務的全球加速訪問。
  • 無需額外優選:由於 Cloudflare 的線路質量通常很好,因此使用本工具時無需進行額外的網絡優選,即可享受穩定的訪問速度。
  • 輕量運行:本工具近乎 0 依賴,不需要處理複雜的證書和配置問題,安裝和使用都非常簡單。

實現原理舉例#

通過 json 或者 token 的方式,創建了 Cloudflare Tunnel (各自的創建方式看後文),比如隧道名為 gost.argo.com,回源到本地的端口是 20000

本地 OpenWRT 運行#

gost -D -L "relay+ws://:10000?path=/3b451552-e776-45c5-9b98-bde3ab99bf75&bind=true"

cloudflared tunnel --logfile /tmp/cloudflared.log --edge-ip-version auto --config /etc/cfd_return_server/tunnel.yml run

cfd -file /etc/cfd_return_server/ip

注意:上述三條命令在執行時均會佔用前台終端,導致終端被阻塞無法執行其他操作。因此,如果你打算手動執行,建議利用 screen 或類似的終端復用工具。這樣,你可以為每個進程分配一個獨立的 screen 會話,使得這些進程能夠在後台持續運行,同時你仍然可以自由地訪問並控制它們,而不會影響到其他終端會話的使用。

命令解析
gost:

  • -D:這個標誌啟用調試模式,提供詳細的日誌以便排除故障。

  • -L "relay+ws://:10000?path=/3b451552-e776-45c5-9b98-bde3ab99bf75&bind=true":這指定了本地監聽的地址和端口,使用 WebSocket 協議。path 參數用於指定 WebSocket 路徑,Relay 服務並開啟了 BIND 功能,採用 UDP-over-TCP 方式。

cloudflared:

  • --logfile /tmp/cloudflared.log:這個選項指定了保存輸出日誌的文件路徑。

  • --edge-ip-version auto:這個選項自動選擇連接的 IP 版本(IPv4 或 IPv6)。

  • --config /etc/cfd_return_server/tunnel.yml:這指定了隧道的配置文件路徑。

  • run:這個命令啟動隧道。

cfd:

  • -file:IP 地址文件名

遠程 VPS 運行#

gost -D -L socks5://[::1]:20000

gost -D -L rtcp://:30000/[::1]:20000 -F "relay+ws://gost.argo.com:80?path=/3b451552-e776-45c5-9b98-bde3ab99bf7&host=gost.argo.com"

命令解析
gost:

  • -D:這個標誌啟用調試模式,提供詳細的日誌以便排除故障。

  • -L socks5://[::1]:20000:這指定了本地監聽的地址和端口,使用 SOCKS5 協議。[::1] 是回環地址,20000 是端口號。

  • -L relay+rtcp://:30000/[::1]:20000:這指定了本地監聽的地址和端口,使用 RTCP 協議。30000 是本地端口(如家裡或者公司使用的軟路由),[::1]:20000 是遠程地址和端口 (VPS 端)。

  • -F "ws://gost.argo.com:80?path=/3b451552-e776-45c5-9b98-bde3ab99bf7&host=gost.argo.com":這指定了轉發地址,使用 WebSocket 協議。path 和 host 參數用於指定 WebSocket 路徑和主機。

項目一鍵腳本部署#

交互式安裝#

服務端和客戶端均使用

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/cfd_return/main/cfd_return.sh)

快捷參數安裝#

安裝服務端

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/cfd_return/main/cfd_return.sh) \
  -s \                      # 安裝服務端
  -p server-origin-port \   # 指定本地服務的端口
  -d your-domain.com \      # 指定 Cloudflare Tunnel 的域名
  -w your-ws-path \         # 指定 WebSocket 路徑(用於與 Cloudflare Tunnel 通信)
  -t 4 \                    # 只優選 IPv4 endpoint
  -a 'your-cloudflare-auth' # 指定 Cloudflare Json 或者 Token 認證信息,注意需要有單引號

客戶端安裝

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/cfd_return/main/cfd_return.sh) \
  -c \                    # 安裝服務端
  -r remote-socks5-port \ # 指定映射到服務端的 SOCKS5 端口
  -d your-domain.com \    # 指定 Cloudflare Tunnel 的域名
  -w your-ws-path         # 指定 WebSocket 路徑(用於與 Cloudflare Tunnel 通信)

卸載方法

bash <(wget -qO- https://raw.githubusercontent.com/fscarmen/cfd_return/main/cfd_return.sh) -u

更多參數請參照項目 README.md: https://www.github.com/fscarmen/cfd_return

Cloudflare Tunnel Json 的獲取#

用戶可以通過 Cloudflare Json 生成網輕鬆獲取: https://fscarmen.cloudflare.now.cc

image

Cloudflare Tunnel Token 的獲取#

image
image
image
image
image

部署運行截圖#

服務端: Json 方式#

  • 部署在軟路由
    image

服務端: Token 方式#

  • 部署在軟路由
    image

客戶端(VPS)#

  • 部署在 VPS
    image

應用設置#

  • image

參考內容#

Gost v3 轉發鏈: https://gost.run/tutorials/port-forwarding/#_5

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。