
外網突然連唔到 NAS?三步查清 ISP 有冇將你轉咗去 CGNAT
對照 WAN IP、共享位址同 traceroute 路徑,逐步排除路由器問題
XDA 作者 Shekhar Vaidya 最近遇到一個幾典型嘅 home server 怪症:屋企上網冇事,Jellyfin 喺內網亦照開到,但經手機 hotspot 由外面連入去就一直 timeout。佢查過 server、反向代理、路由器防火牆同 port forwarding,設定全部冇郁過,最後先發現 ISP 已經將條線放咗喺 CGNAT 後面。
呢件事值得講,因為 CGNAT 出事時,表面睇落最似自己設定壞咗。不過原文只係作者個人經歷,冇交代 ISP、地區同上網方案,亦冇證據顯示某類供應商普遍會靜靜轉客戶。香港用家遇到相似情況,都要逐步排除,唔好單靠一個 timeout 就落判斷。
第一步:對照路由器 WAN IP 同街外見到嘅 IP
登入路由器管理頁,搵 Internet、WAN 或 IPv4 Status,再用一個查 IP 網站睇街外見到嘅 public IPv4。兩邊要同一時間查,而且要確定比較緊 IPv4;雙 WAN、VPN、IPv6 或瀏覽器代理都可能搞亂結果。如果兩個位址完全一樣,你多數仍然直接攞到公網 IPv4,問題應該先向防火牆、DDNS、反向代理同 server 服務查。
如果兩邊唔同,代表中間仲有一層位址轉換,但未足以證明係 CGNAT。用緊 ISP modem 加自己路由器時,WAN 位址可能係 192.168.x.x、10.x.x.x 或 172.16.0.0 至 172.31.255.255,呢種情況好多時係 double NAT。可以將 ISP modem 改做 bridge mode,或者喺兩部機都設 port forwarding;改之前記低原有設定,亦要確認電視或電話服務會唔會受影響。

圖片:Cloudflare
第二步:見到 100.64.0.0/10,CGNAT 機會就好高
RFC 6598 將 100.64.0.0/10 留畀供應商做共享位址,實際範圍係 100.64.0.0 至 100.127.255.255。如果路由器 WAN IP 落喺呢段,而查 IP 網站顯示另一個公網位址,已經係相當有力嘅 CGNAT 線索。再跑 traceroute 或 Windows 嘅 tracert,早段路徑亦見到共享位址,成組證據就比較完整。
不過供應商亦可能喺上游使用傳統私人位址,所以冇見到 100.64.x.x 都唔代表一定冇 CGNAT。反過來講,單靠 port checker 顯示 closed 同樣證明唔到咩:服務冇 listen、主機防火牆擋住、測錯 TCP/UDP,結果都會一樣。最穩陣係將 WAN IP、外部 IPv4、traceroute 結果一齊交畀 ISP,直接問條線有冇共享 IPv4,同埋可唔可以申請 public IPv4。
點解 port forwarding 突然完全冇反應
一般屋企路由器攞住公網 IPv4 時,port forwarding 可以將指定連接送去 NAS 或 VPN server。CGNAT 就多咗 ISP 控制嘅 NAT 層,多個客戶共用一個公網 IPv4;你只改到自己路由器,改唔到供應商嗰層,所以街外送入嚟嘅封包搵唔到你部機。DDNS 只會更新名稱指向邊個 IP,佢唔會幫你穿過 CGNAT。
呢個亦解釋到點解上網、串流同雲端備份仍然正常:呢類連線由屋企向外開,CGNAT 可以自動建立映射。受影響嘅主要係外面主動連入屋企,包括 NAS、閉路電視、傳統 WireGuard/OpenVPN server、遊戲 server、遠端桌面同自建網站。ISP 換咗動態公網 IP 則係另一回事;只要路由器當刻仍攞住公網位址,更新 DDNS 後 port forwarding 應該可以繼續用。
最直接嘅處理:先問 public IP,未必要 static IP
如果要畀任何裝置直接連入,先問 ISP 可唔可以免費退出 CGNAT,或者提供 動態 public IPv4。好多用途配合 DDNS 已經夠,未必要每月畀錢買 static IP;後者主要方便 IP 白名單、固定 DNS 紀錄同公司 VPN。申請前要問清楚係真正獨享公網位址、收費幾多、有冇 port 限制,同埋轉方案後會唔會改合約期。
原生 IPv6 都可以避開 IPv4 CGNAT,但連線兩邊都要支援 IPv6,DNS 要有正確 AAAA 紀錄,家中 prefix 變動時亦要更新。IPv6 裝置可以有全球可路由位址,唔代表應該拆走防火牆;只開實際用到嘅 inbound rule,NAS 管理頁、SSH 同閉路電視介面唔好直接擺上網,否則只係由 NAT 問題變成保安問題。
私人存取揀 Tailscale,公開網頁先考慮 Cloudflare Tunnel
只係自己手機、手提電腦同屋企設備互通,Tailscale 通常最省事。每部裝置先向外建立連線,成功時裝置會直接互連,遇到較難處理嘅 NAT 就經加密 relay 傳送,所以冇 public IP 亦用到。代價係裝置要裝 client、登入驗證同連線 metadata 都要交畀第三方控制服務處理;經 relay 時,速度同延遲亦可能差過直接連線,傳大型影片前最好先睇 tailscale status 顯示 direct 定 relay。
Cloudflare Tunnel 就較適合公開 Web app:屋企嘅 cloudflared 主動連去 Cloudflare,路由器毋須開 inbound port,再配 Cloudflare Access 做登入限制。不過流量同 TLS 都會經 Cloudflare;服務一故障、帳戶設錯,或者日後改收費,都可能影響使用。Jellyfin 呢類大量影片傳送亦要小心,Cloudflare 現行條款限制免費 CDN 傳送站外影片同大量檔案,唔應該當免費影片中轉站用。
如果 NAS、閉路電視或公司 VPN 原本靠 port forwarding,最好而家就記低正常時嘅 WAN IP 類型,再用手機數據做一次街外連線。日後突然斷線,先對照兩個 IPv4 位址,再查路徑同 ISP 方案,通常快過由頭重設成套 home server。
參考來源
- XDA Developers — My ISP quietly put me behind CGNAT, and it broke half my home lab before I noticed — original report
- RFC 6598:IANA-Reserved IPv4 Prefix for Shared Address Space — IETF 標準原文,確認 100.64.0.0/10 嘅用途、範圍同不可喺公網路由嘅性質。
- Tailscale Connection Types — 官方文件,解釋 direct、peer relay、DERP relay 同各自嘅速度差異。
- Tailscale Encryption — 官方資料,交代 WireGuard 端對端加密、NAT traversal 同 relay 點處理流量。
- Cloudflare Tunnel — 官方技術文件,解釋 cloudflared 點用 outbound-only 連線提供外部存取。
- Cloudflare Service-Specific Terms — 官方條款,確認一般 CDN 方案傳送影片同大量檔案嘅限制。
- RFC 7368:IPv6 Home Networking Architecture Principles — IETF 家居 IPv6 架構文件,補充 IPv6、NAT 同防火牆保安嘅分別。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







