博客 / 詳情

返回

別再折騰端口轉發了:使用 Cloudflare Tunnel 優雅地分享你的 localhost

在前後端聯調、移動端真機測試、或是調試 Webhook 回調時,我們總會遇到同一個難題:如何讓外網用户安全地訪問我本地的端口(如 localhost:3000)?

傳統做法要麼是部署到測試服務器(太慢),要麼是折騰路由器端口映射(不安全且受限於公網 IP)。雖然 ngrok 曾是這一領域的霸主,但隨着 Cloudflare Tunnel 的普及,開發者們有了一個更安全、完全免費且無限制的新選擇。

為什麼我們需要“隧道”?

在遠程辦公和 AI 驅動開發的 2025 年,本地服務的快速共享已成為剛需:

  • 協作演示: 臨時寫個 Demo 或原型,想發給異地的同事預覽,而不是錄屏或發截圖。
  • Webhook 調試: 開發支付接口(Stripe/微信支付)或 GitHub App 時,必須有一個公網 HTTPS URL 來接收回調。
  • 移動端適配: 手機掃碼直接訪問電腦上的開發頁面,測試觸控體驗。
  • 安全合規: 在零信任(Zero Trust)架構下,我們希望關閉所有入站端口,僅允許受控的出站連接。

主流方案對決:ngrok vs. Cloudflare Tunnel

雖然兩者都能實現內網穿透,但產品邏輯和成本結構截然不同:

維度 ngrok (免費版) Cloudflare Tunnel (Quick Share)
易用性 極高,一鍵啓動 極高,單命令行工具
穩定性 2 小時會話限制,超時斷開 無時長限制
賬號需求 必須註冊並綁定 Token 無需註冊(使用 quick tunnel 模式)
域名固定 隨機生成的子域名 支持綁定自定義域名(需 CF 託管)
網絡性能 一般,帶寬受限 極佳,基於 CF 全球 300+ 邊緣節點
安全性 基礎加密 強制 HTTPS,集成 Zero Trust 認證

結論: ngrok 適合一分鐘的臨時演示,而 Cloudflare Tunnel 則是長期開發和生產環境的首選方案。


技術原理:為什麼它不需要公網 IP?

Cloudflare Tunnel 的核心是 “出站僅連接”(Outbound-only Connection) 模型。

  1. 建立連接: 當你運行 cloudflared 時,它會主動向 Cloudflare 邊緣節點發起四個持久化的出站連接(基於 QUIC 協議)。
  2. 無需打洞: 因為連接是“由內向外”發起的,你的防火牆會認為這是正常的流量,從而無需在路由器上開啓任何入站端口。
  3. 智能路由: 用户請求你的公網 URL 時,流量會通過 Cloudflare 的 Argo Smart Routing 找到最快的路徑,經由上述持久連接轉發到你的本地端口。
  4. 安全屏障: 你的真實 IP 被隱藏在 Cloudflare 網絡之後,同時自動享受了 DDoS 防護和 TLS 加密。

快速上手:三秒開啓公網訪問

如果你只是想快速分享一個本地端口(比如 3000),甚至不需要註冊 Cloudflare 賬號:

1. 安裝工具

Mac OS & Linux 系統

brew install cloudflared

Windows 系統

winget install Cloudflare.cloudflared

2. 啓動隧道

cloudflared tunnel --url http://localhost:3000

3. 獲取鏈接

終端會輸出一個類似 https://random-words-generated.trycloudflare.com 的地址,直接發給同事即可。


進階技巧與潛在“坑點”

1. 域名固定與權限控制

如果你有 Cloudflare 託管的域名,可以通過配置文件將隧道映射到子域名(如 dev.yourdomain.com),並結合 Cloudflare Access 增加一層 GitHub/Google 登錄驗證,防止 Demo 被無關人員掃描。

2. 關於 QUIC 協議被運營商攔截

Cloudflare Tunnel 默認優先使用 QUIC (UDP) 協議。在某些內網環境或特定運營商下,UDP 可能會被 QOS 限制導致連接極慢。

解決方法: 強制使用 TCP 模式啓動。

cloudflared tunnel --protocol http2 --url http://localhost:3000

3. 性能表現

雖然經過了中轉,但得益於 Cloudflare 龐大的邊緣網絡,延遲通常在可接受範圍內。但在國內部分地區,連接到 CF 海外節點的穩定性偶爾會有波動,這屬於“公網環境”的常規挑戰。


總結

Cloudflare Tunnel 徹底改變了本地開發服務的共享方式。它不僅解決了“能不能看”的問題,更通過“零信任”模型解決了“安不安全”的問題。

你在內網穿透過程中還遇到過哪些奇怪的坑?歡迎在評論區一起討論。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.