CloudFlare Tunnel 免費內網穿透的簡明教程 - 少數派#
#Omnivore
CloudFlare Tunnel 免費內網穿透的簡明教程
- 將本地網路的服務暴露到公網,可以理解為內網穿透。 例如我們在本地伺服器
192.168.1.1:3000
搭建了一個 Transmission 服務用於 BT 下載,我們只能在內網環境才能訪問這個服務,但通過內網穿透技術,我們可以在任何廣域網環境下訪問該服務。相比 NPS 之類傳統穿透服務,Tunnel 不需要公網雲伺服器,同時自帶域名解析,無需 DDNS 和公網 IP。 - 將非常規端口服務轉發到 80/443 常規端口。 無論是使用公網 IP + DDNS 還是傳統內網穿透服務,都免不了使用非常規端口進行訪問,如果某些服務使用了複雜的重定向可能會導致 URL 中端口號丟失而引起不可控的問題,同時也不夠優雅。
- 自動為你的域名提供 HTTPS 認證。
- 為你的服務提供額外保護認證。
- 最重要的是 —— 免費。
Tunnel 通過在本地網路運行的一個 Cloudflare 守護程序,與 Cloudflare 雲端通信,將雲端請求數據轉發到本地網路的 IP + 端口。
前置條件#
- 持有一個域名
- 將域名 DNS 解析托管到 CF
- 內網有一台本地伺服器,用於運行本地與 cloudflare 通信的 cloudflared 程序
- 一張境內雙幣信用卡(僅用於添加付款方式,服務是免費的)
開始#
1. 打開 Cloudflare Zero Trust 工作台面板#
2. 創建 Cloudflare Zero Trust ,選擇免費計劃。需要提供付款方式,使用境內的雙幣卡即可#
填寫 team name,隨意填寫
選擇免費計劃
添加付款方式
填寫信用卡信息(僅驗證,不會扣款),完成配置
3. 完成後,在 Access Tunnels 中,創建一個 Tunnel。#
創建 Tunnel
4. 選擇 Cloudflared 部署方式。#
Tunnel 需要通過 Cloudflared 來建立雲端與本地網路的通道,這裡推薦選擇 Docker 部署 Cloudflared 守護進程以使用 Tunnel 功能。
獲取 Cloudflared 啟動命令及 Token
點擊複製按鈕複製指令,在本地網路主機上運行命令。我們還可以加上--name cloudflared -d --restart unless-stop
為 Docker 容器增加名稱和後臺運行。你可以使用下方我修改好命令來創建 Docker,注意替換你為自己的 Token(就是網頁中—-token
之後的長串字符)
docker run --name cloudflared -d --restart unless-stop cloudflare/cloudflared:latest tunnel --no-autoupdate run --token <YourToken>
5. 配置域名和轉發 URL#
為你的域名配置一個子域名(Subdomain),Path 留空,URL 處填寫內網服務的 IP 加端口號。注意 Type 處建議使用 HTTP,因為 Cloudflare 會自動為你提供 HTTPS,因此此處的轉發目標可以是 HTTP 服務端口。
配置內網目標 IP + 端口
完成#
接著訪問剛剛配置的三級域名,例如 https://app.yourdomain.com(是的,你沒看錯,是 https,cloudflare 已經自動為域名提供了 https 證書)就可以訪問到內網的非公端口號服務了。一個 Tunnel 中可以添加多條三級域名來跳轉到不同的內網服務,在 Tunnel 頁面的 Public Hostname 中新增即可。
為你的服務添加額外驗證#
如果你覺得這種直接暴露內網服務的方式有較高的安全風險,我們還可以使用 Application 功能為服務添加額外的安全驗證。
1. 點擊 Application - Get started。
創建 Application
2. 選擇 Self-hosted。
選擇類型
3. 填寫配置,注意 Subdomain 和 Domain 需要使用剛剛創建的 Tunnel 服務相同的 Domain 配置。
配置三級域名
4. 選擇驗證方式。填寫 Policy name(任意)。在 Include 區域選擇驗證方式,示例圖片中使用的是 Email 域名的方式,用戶在訪問該網路時需要使用指定的郵箱域名(如 @gmail.com)驗證,這種方式比較適合自定義域名的企業郵箱用戶。另外你還可以指定特定完整郵箱地址、IP 地址範圍等方式。
選擇驗證方式
5. 完成添加
此時,訪問 https://app.yourdomain.com 可以看到網站多了一個驗證頁面,使用剛剛設置的域名郵箱,接收驗證碼來訪問。
評價#
除了上述直接轉發 http 服務之外,Tunnel 還支持 RDP、SSH 等協議的轉發,玩法豐富,有待各位探索。作為一款免費的服務,簡單的配置,低門檻使用條件,適合各位 Self-hosted 玩家嘗試。不過要注意的是 Tunnel 在國內訪問速度不快,並且有斷流的情況,請酌情使用。