Cloudflare Tunnel 與 Homelab 本地網路優化配置指南
Cloudflare Tunnel 與 Homelab 本地網路優化配置指南
這是一份針對 3pm.lol 網域及本地 Jelly-Lab 環境的網路規劃手冊,旨在解決開 WARP 後服務中斷、影音串流繞遠路,以及外部連線路由等 Homelab 常見問題。
🧭 導覽目錄
- Mac 啟動 WARP 導致網站中斷與解決方法(Split Tunnels)
- 影音串流(Jellyfin)本地免繞路優化
- SSH 本地直連與外部 WARP 私有網路連線
- 萬用字元網域(*.3pm.lol)與外部雲端主機分流規則
1. Mac 啟動 WARP 導致網站中斷與解決方法(Split Tunnels)
🚨 症狀與原因
- 症狀:Mac 本機開啟 WARP VPN 後,外網的使用者突然打不開你架設在 K8s 上的網站服務(如 WordPress、n8n 等)。
- 原因:非對稱路由衝突(Asymmetric Routing)。當 Mac 開啟 WARP 後,WARP 接管了所有網路流量。當外部流量透過
cloudflared進來,K8s 容器要回覆時,封包被 WARP 強行攔截並送往外網 VPN 通道,導致連線中斷。
⚙️ 解決步驟(在 Cloudflare Zero Trust 設定排除)
必須將 K8s 內部網段及本地局域網排除在 WARP 的接管之外:
- 登入 Cloudflare Zero Trust 後台。
- 點選左側選單最下方的
Settings(設定) ──>WARP Client(WARP 客戶端)。 - 在
Device settings(設備設定) 區塊中,找到Default設定檔,點選右側的...──>Configure(配置)。 - 下拉找到
Split Tunnels(分離通道) 區塊,確認模式為Exclude IPs and domains,點選Manage。 - 點選
Add Route新增以下本地網段以進行排除:10.42.0.0/16(Kubernetes 預設 Pod 容器網段)10.43.0.0/16(Kubernetes 預設 Service 網段)192.168.31.0/24(你家裡的實體 Wi-Fi 區域網路網段)
- 儲存設定。此時 Mac 上的 WARP 會自動同步排除規則,網站即可正常對外服務。
2. 影音串流(Jellyfin)本地免繞路優化
🚨 症狀
使用 jelly.3pm.lol 在家裡看影片時,大流量會先繞到 Cloudflare 節點再回來,導致速度變慢、佔用外網頻寬,且容易被 Cloudflare 限制流量。
🛠️ 推薦的兩種解決方案
方案 A. 直接使用本地 IP + Port(最簡單、速度最快)
- 在家裡時:直接連線
http://192.168.31.123:8096。封包完全不走外網,Wi-Fi 直連,速度極限(1Gbps+)。 - 在外面時:使用
https://jelly.3pm.lol走 Cloudflare 傳送門。 - 註:這是最省硬體資源的做法,缺點是內外網需要切換書籤。
方案 B. 雙向 DNS + 本地反向代理 Caddy(最優雅、網址相同且無憑證警告)
如果你希望不論內外網都使用 https://jelly.3pm.lol:
- 設定雙向 DNS:在本地的 Pi-hole / AdGuard Home / 路由器中,設定將
jelly.3pm.lol的 IP 直接解析為 Mac 本地 IP192.168.31.123。 - 本地 Caddy 配置:在 Mac 上運行一個 Caddy,因為 Let’s Encrypt 無法為私有 IP 發行憑證,我們利用 DNS-01 驗證法 透過 Cloudflare API 寫入臨時 DNS 來向 Let’s Encrypt 證明網域所有權。Caddyfile 設定範例:
jelly.3pm.lol { tls { dns cloudflare <YOUR_CLOUDFLARE_API_TOKEN> } reverse_proxy 127.0.0.1:8096 }
3. SSH 本地直連與外部 WARP 私有網路連線
🔒 為什麼 SSH 不需要 Caddy 等 SSL 憑證?
網頁(HTTPS)需要 SSL 憑證是因為瀏覽器有嚴格的安全信任機制。而 SSH 本身就自帶強大的金鑰加密協定,它不需要向證書機構申請憑證,只要網址或 IP 對了,連線就保證是加密安全的,因此不需要 Caddy 轉接。
🔀 連線情境與路由
當你在 Cloudflare Tunnel 中設定了私有網路(CIDR,例如 192.168.31.0/24):
- 在家時(連 Wi-Fi):
- 手機關閉 WARP。
- 直接 SSH 連線
192.168.31.123。流量直接走 Wi-Fi,最快。
- 在外時(連行動網路):
- 手機開啟 WARP(加入 Teams 設備清單後)。
- 在 SSH App 中輸入
192.168.31.123。Cloudflare 會辨識出此私有 IP,將流量引導回 Mac 本地,實現如同在內網一般的安全連線。
4. 萬用字元網域(*.3pm.lol)與外部雲端主機分流規則
❓ 萬用字元會不會覆蓋其他雲端主機?
不會。如果你將 *.3pm.lol 都指向本地 K8s 上的 Tunnel,但你另外有 vpn.3pm.lol 和 mail.3pm.lol 在不同的雲端主機上。
⚖️ DNS 優先級鐵律
DNS 解析遵循:「精準匹配(Exact Match) > 萬用字元(Wildcard)」。
- 當使用者連線
vpn.3pm.lol:Cloudflare 發現你有明確指定的 A 紀錄,因此流量直接引導至雲端主機。 - 當使用者連線
n8n.3pm.lol:Cloudflare 發現沒有專門的紀錄,於是 fallback(降級套用) 萬用字元*.3pm.lol,將流量引導至你的本地 K8s。 - 安全做法:確保
vpn與mail的 DNS 紀錄在 Cloudflare DNS 頁面中有確實寫出來即可。
This post is licensed under CC BY 4.0 by the author.