
冇 public IPv4 點算?用 Cloudflare Tunnel 遙距連屋企 server
由判斷 CGNAT 到加 Access 登入保護,一次過跟住設定
屋企 server 喺內網開到,轉用流動數據就完全冇反應,未必係 Docker、DNS 或 reverse proxy 出事。XDA 作者 Ty Sherback 搬屋後就撞到呢個情況,查到最後先發現新連線冇獨立 public IPv4,傳統 port forwarding 根本行唔通。佢最後用 Cloudflare Tunnel 救返個自架 dashboard。呢招設定唔算複雜,但公開管理介面之前仲有幾個安全位要補。
先確認係咪 CGNAT
入 router 管理頁搵 WAN/Internet IPv4,再用搜尋引擎查「what is my IP」睇外界見到嘅 IPv4。兩邊地址唔同,代表中間仲有一層 NAT;可能係 CGNAT,亦可能只係屋企有兩部 router 造成 double NAT。WAN 地址如果落喺 100.64.0.0 至 100.127.255.255,就符合 RFC 6598 預留畀共享地址嘅範圍。10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16 同樣唔係 public IP,但單睇地址仍未足以斷定係 ISP CGNAT。
最實際係同 ISP 確認個計劃有冇 public IPv4、可唔可以申請固定或動態 public IP,同埋收唔收費。家居寬頻、5G 家居寬頻同流動數據都有可能遇到共享地址,不過冇可靠資料證明邊間香港 ISP 或邊個計劃必定用 CGNAT,所以唔好淨係睇網上舊帖就落結論。如果 router 有 public IPv6,服務本身亦支援 IPv6,技術上仲有另一條路,但防火牆同驗證一樣要自己處理。
Cloudflare Tunnel 點解行得通
傳統 port forwarding 等外面主動打入屋企 router;CGNAT 之下,最外層 NAT 唔受你控制,自然冇得開 port。Cloudflare Tunnel 就由屋企部 server 上嘅 cloudflared 主動向 Cloudflare 建立加密連線,訪客先連 Cloudflare,再由條 tunnel 去返內網服務。官方文件列明 server 只要有網上連線,毋須 public IP;防火牆較嚴嘅環境就要容許向外連接 Cloudflare 嘅 7844 port。詳情可睇 Cloudflare Tunnel 設定文件。
跟住設定 tunnel 同自訂網域
你要有 Cloudflare 帳戶、一個已交由 Cloudflare 管 DNS 嘅網域,同埋一部長開、行到 cloudflared 嘅 server 或 VM。入 Cloudflare dashboard 嘅 Networking > Tunnels,建立 tunnel,揀返作業系統或 Docker,然後喺屋企 server 執行畫面提供嘅安裝指令。呢段指令帶有 tunnel token,當密碼咁保管,唔好貼上討論區、截圖或放入公開 Git repo。
狀態變成 Healthy 後,入 tunnel 嘅 Routes 加一條 Published application。Hostname 可以填 home.example.com,Service URL 就填內網服務,例如 http://localhost:8123;如果 cloudflared 同目標服務唔喺同一部機,就填 http://192.168.1.20:8123。Dashboard 會建立指向 tunnel 嘅 DNS 記錄,一條 tunnel 亦可以配多個 hostname。官方完整步驟同協議限制列喺 Routing 文件;SSH、RDP 等非 HTTP 服務通常仲要客戶端配合 cloudflared。
開到網頁未代表安全
去到呢步,知道網址嘅人已經可能摸到你個登入頁。冇開 router port,只係收窄咗直接攻擊屋企 IP 嘅入口,唔會自動保護個 app。 NAS 管理頁、Home Assistant、下載器同 Docker 管理介面都唔應該裸露喺網上。先更新服務、關閉預設帳戶、用強密碼,再喺 Cloudflare Zero Trust 建立 self-hosted application,將啱啱嗰個 hostname 放入 Access 保護範圍。
Access policy 最簡單可以只 Allow 指定電郵,再用 One-time PIN 登入;本身有 Google、Microsoft 或 GitHub 身分系統亦可以接入。想再穩陣,可以跟 Cloudflare Access MFA 文件設定,要求用戶登入時完成 MFA。記得由流動數據或無痕視窗測試:未登入應該先見到 Cloudflare Access,而唔係原本個 app。服務本身嘅驗證亦唔好關,兩層一齊留住較穩妥。
Cloudflare、Tailscale、VPN 點揀
如果只想自己幾部裝置連 NAS 或 Home Assistant,Tailscale 通常乾淨啲:每部裝置加入私人 tailnet,服務毋須擺上公開網址,而且多數情況唔使手動開 firewall port;遇到難搞嘅 NAT 時會經 DERP relay,速度可能慢過直接連線。Tailscale 官方說明 有交代呢個取捨。自己架 WireGuard VPN 控制權較高,但 CGNAT 下仍要一個外界連到嘅入口,可能要租 VPS 做中轉。
Cloudflare Tunnel 就適合要用瀏覽器開、唔想每部裝置裝 VPN client,或者要畀家人同同事登入嘅 web app。代價係流量會經 Cloudflare;你亦要考慮 TLS 點處理、存取記錄同私隱問題,仲有 Cloudflare 故障或者停用帳戶嘅風險。佢有免費方案,唔代表任何流量用途都任用;Cloudflare 明確限制免費、Pro 同 Business 計劃大量派送影片或大型檔案,詳情要以最新 影片傳送政策 同服務條款為準。Plex、Jellyfin、備份檔案呢類重流量用途,唔應見到「免費 tunnel」就直接搬上去。
如果 ISP 可以用合理價錢提供 public IP,而你又識得管 firewall、憑證同更新,直接連線會少一個中介。只供自己用就先考慮 Tailscale;要方便分享 web app,Cloudflare Tunnel 加 Access 會易搞好多。無論揀邊條路,管理介面都要有驗證同 MFA,唔好將「冇開 port」當成安全保證。
參考來源
- XDA Developers — My ISP stuck me behind CGNAT, and a free Cloudflare tunnel made my home server reachable again — original report
- Cloudflare Tunnel:Set up — 核對建立 tunnel、安裝 cloudflared、Published application 同連線要求
- Cloudflare Tunnel:Routing — 核對自訂 hostname、DNS 記錄、內網服務映射同協議限制
- Cloudflare Access:MFA requirements — 核對 Access policy 點要求使用者完成 MFA
- Cloudflare:Delivering Videos with Cloudflare — 核對免費及其他非 Enterprise 計劃傳送影片、大型檔案嘅限制
- Tailscale:What firewall ports should I open? — 比較 Tailscale 喺 NAT 後面嘅連線方式、DERP relay 同速度取捨
- RFC 6598:IANA-Reserved IPv4 Prefix for Shared Address Space — 確認 CGNAT 常用共享地址範圍 100.64.0.0/10
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







