
自架服務唔好見一個開一個:NAS 管理頁應該收返入私人網絡
CGNAT 擋唔住遠端存取,但唔係每項服務都適合用公開 hostname
遠端開到,唔等於全世界要開到
XDA 作者 Shekhar Vaidya 因為兩間 ISP 都用 CGNAT,早期靠 Tailscale 同 Cloudflare Tunnel 遙距連返屋企,後來又用自架嘅 Pangolin 同 NetBird。問題出喺習慣:每裝一個 container,就順手配個公開網址,連管理介面都照擺上網。到佢重新分類先發現,收起一半服務之後,日常使用完全冇受影響。呢個係作者個人經驗,唔代表每套 homelab 都一樣,不過佢問中咗一個好實際嘅問題:除咗自己,究竟仲有邊個會用呢項服務?

圖片:Cloudflare
管理頁、監控同下載工具,預設應該收埋
NAS、router、Proxmox、Portainer、Docker 管理頁、qBittorrent、SABnzbd、Grafana 同 Uptime Kuma 後台,通常只係機主自己入去設定。呢類介面一旦出事,攻擊者攞到嘅往往係檔案、container、網絡設定甚至整部 server,冇必要為咗少裝一個連線 app,長期擺個公開入口喺度。智能家居控制頁同通知服務都可以用同一把尺:冇外部 webhook、公開分享或者第三方整合,就先放入私人網絡;真係要接外部服務,再獨立處理嗰條入口。
Tailscale 適合畀自己人連入去
Tailscale Serve 分享嘅本機服務只會喺 tailnet 入面開到;NAS 裝唔到 client,亦可以用 subnet router 帶入私人網段。CGNAT 唔會令呢套做法失效,Tailscale 會嘗試 NAT traversal 建立直接連線,唔成功就經 Peer Relay 或 DERP 中轉。不過「入咗 tailnet」都唔等於人人任入:Tailscale 支援 deny-by-default 嘅 grants,但未設定存取規則時可以保留預設 allow-all policy。屋企多人共用,最好按人、裝置、服務同 port 收窄權限。
Cloudflare Tunnel 個公開 hostname 真係公開
Cloudflare Tunnel 由屋企嘅 cloudflared 主動連出去,所以唔使公眾 IPv4,亦唔使喺 router 開 inbound port;呢點對 CGNAT 環境好方便。不過 published application route 會將內部服務映射到公開 hostname。Cloudflare 官方寫得好清楚:未先建立 Access application,任何上網人士都可以去到嗰個服務。 Tunnel 可以隱藏 origin IP、擋住繞過 Cloudflare 嘅直接連線,但佢本身唔會自動補返 app 登入、權限控制或者服務漏洞。
真係要畀外人用,先值得公開
Jellyfin、Immich、Nextcloud、Vaultwarden 呢類服務,如果要畀冇加入 tailnet 嘅家人或朋友使用,公開 hostname 先有實際價值。即使咁做,都要保留服務本身嘅強密碼、MFA、最少權限同更新機制;適合嘅 web app 可以再加 Cloudflare Access,同時驗證 Access token,避免設定錯誤時俾人繞過身份驗證。部分電視 app、同步 client 同 webhook 未必配合 Access 登入頁,所以唔可以一張 policy 套晒全部服務,要按 client 行為逐項決定。
CGNAT 下點揀,其實睇使用者係邊個
只畀自己已授權嘅手機、電腦同家人裝置使用,Tailscale 呢類私人連線通常較順手;裝唔到 client 嘅 NAS 或 IoT 裝置,可以經 subnet router 接入。要畀普通瀏覽器、電視 app、外部 webhook或者唔方便加入 tailnet 嘅人使用,先考慮 Cloudflare Tunnel 加公開 hostname。Cloudflare 同樣做到私人網絡存取,Tailscale 亦另有 Funnel 公開服務,所以產品名唔應該決定入口性質。每項新服務先留喺私人網絡,確認有外部使用者先開出去,會少好多無謂風險。
參考來源
- XDA Developers — I stopped exposing half my self-hosted services to the internet, and nothing broke — original report
- Cloudflare Tunnel — 確認 Tunnel 用 outbound-only 連線,毋須可公開路由嘅 IP 或 inbound port。
- Publish a self-hosted application to the Internet — 確認 published hostname 冇 Access 保護時任何上網人士都可存取,亦交代 token 驗證。
- Tailscale connection types — 確認 NAT traversal、直接連線、Peer Relay 同 DERP 後備機制。
- Tailscale Serve — 確認 Serve 分享嘅服務只會喺 tailnet 入面提供。
- Tailscale subnet routers — 確認 NAS、打印機等裝唔到 client 嘅裝置可經 subnet router 接入 tailnet。
- Tailscale grants syntax — 確認 grants 採用 deny-by-default 同最少權限設計。
本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。







