我有一台 QNAP TS-453E NAS,運行 WebDAV 以供檔案存取,並在容器中架設了多個網站(每個網站都有自己的內部 IP)。
我的網路環境:
- UniFi UCG Max 作為 DHCP 伺服器和主要路由器
- ISP 連線採用 PPPoE,無固定 IP(外部 IP 經常變動)
- ISP 端所有入站連接埠皆被封鎖 → 我需要使用隧道或類似的方式
- 我擁有一個網域,並可管理 DNS 驗證及子網域
我的目標:
- 從外部網路安全存取 QNAP 服務和容器化網站
- 僅限受信任裝置進行身份驗證
- 所有服務皆需 TLS 加密
- SSL 憑證自動續期
我正在考慮的方案:
- 所有子網域使用 Cloudflare Tunnel + Cloudflare Access
- 在 UniFi 上架設 VPN 伺服器(用戶端裝置加入 LAN)
- 使用 myQNAPcloud 搭配 QTS SSL 憑證 進行 SSL 自動化
問題:
- 哪種方式在此情境下最實用且安全?
- 關於 QTS SSL 憑證:
- 我能否使用自訂網域,而非預設的 QNAP 網域?
- 使用 QTS SSL 憑證時,Let’s Encrypt 能否針對我的自訂網域自動續期?
- 若選擇 Cloudflare Tunnel:
- WebDAV 和多個網站同時在隧道後運行會有問題嗎?
- 能否僅允許受信任裝置存取(例如使用用戶端憑證或 WARP,但不採用全代理模式)?
- SSL 自動續期:
- 若 QTS SSL 憑證無法支援自訂網域,最佳替代方案是什麼?
- 我能否在容器中運行憑證簽發工具(如 certbot 或 acme.sh),並自動更新 QNAP 服務的憑證?
- 如何將該容器續期後的憑證自動整合到 QTS 服務和 WebDAV?
其他細節:
- QTS 版本:5.2.6.3195
- 我可以為每個資源建立子網域
- 安全性為最高優先
第一條規則:絕對不要將你的 NAS 暴露在網際網路上!
如果你想要存取你的 NAS,請透過 VPN 或使用 myqnapcloud 雲端服務,這樣你可以透過 QNAP 登入網頁來存取 NAS。這種方式不需要 SSL 憑證。只有當你要把 NAS 直接暴露在網際網路上時才需要 SSL 憑證,但我已經說過不要這麼做。
跳過 SSL 憑證——就這樣。你在區域網路、VPN 或透過 myqnapcloud.com 存取 NAS 都不需要它們。
myqnapcloud.com 最大的問題是它的伺服器只在台灣,而且連線速度不是很快。
最好的完整存取方式是 VPN。我在 MikroTik 路由器上設置了 Wireguard VPN,有時也會使用 ZeroTier VPN。
是的,這正是我目前想要達成的目標。目前我嘗試使用 Tailscale,感覺比透過 Cloudflare Tunnel 設定一切要簡單得多。
我不能使用 Wireguard VPN,因為我需要某種方式告訴客戶端應該連接到哪裡。動態 IP 讓這件事變得更加複雜。
Tailscale 使用 Wireguard 作為包裝層。若需動態 IP,可使用像 NoIP 這樣的服務。
動態 IP 很容易解決。首先,你的 QNAP 內建有 DDNS 客戶端,可以用來連接外部 IP 或外部網域名稱。現在很多路由器也支援這項功能。
我非常喜歡我的 MikroTik 路由器,因為它本身就內建 DDNS,而且 WireGuard VPN 設定非常簡單,只要你正確複製所有設定,它就能順利運作,而且表現非常好。
是的,我有 Unifi UCG Max,它也有這個選項。不過我不太確定 DDNS 的運作方式。
我的 ISP 會在同一次連線期間隨機更改我的外部 IP 地址,但並不會讓我斷線。我不確定 DDNS 是否能夠這麼快速地解決這些變化。
之前的 ISP 只會在連線時更改 IP,一旦建立 PPPoE 連線後就會獲得一個 IP,直到斷線才會改變。不過現在這家 ISP 比較棘手。你有遇過這種情況嗎?DDNS 在這種情況下能幫得上忙嗎?
您的 WAN(網際網路)IP 很可能是由您的 ISP 透過 DHCP 指派的。DHCP 在分配地址時會有特定的租約時間。在至少 50% 的租約時間內,您的地址不會改變。當租約時間達到 50% 時,您的路由器(客戶端)會請求更新租約。此時,您可能會獲得新的 IP 地址,也可能不會。我曾經從 ISP 那裡獲得同一個 IP 地址好幾個月。如果我重新啟動我的數據機,可能會獲得新的 IP,也可能不會。
無論您的外部 IP 地址變更頻率如何,動態 DNS(Dynamic DNS)就是為了解決這個問題而設計的。它會定期查詢您的 WAN 地址,然後將該資訊更新到動態 DNS 伺服器。通常這些更新一天會發生多次。有些 DDNS(動態 DNS)客戶端允許您設定更新的頻率。
這個協定運作得非常好,所有擁有動態 IP 且希望存取家庭網路的人都會使用它。
這應該是不可能的。Unifi 必須要知道你的外部 IP 已經改變,否則你的封包就無法路由。
在 Unifi 上設定 DDNS 應該是最穩妥的作法。
在伺服器端設置 keepalive(保活),只要你的用戶端在 IP 變更期間沒有關機,它應該會自我修復。Wireguard(Wireguard)相當有韌性。
最糟的情況下,可以在手機上用 teleport(Teleport)來取得你目前的 WAN IP,直到 DDNS 更新為止。
等等,你是被 CGNAT 卡住了嗎?使用 Tailscale 或其他零信任(Zero trust)網狀 VPN 吧。
CGNAT 真是地獄。
是的,不幸的是我們這裡討論的是 ISP 使用的 CGNAT。所以,在 CGNAT 的情況下,據我理解 UCG Max DDNS + 在 UCG Max 上設置 VPN 也沒辦法解決,對嗎?
到目前為止,我已經成功嘗試了 Cloudflare Tunnel + Cloudflare Access 和 Tailscale。
從技術角度來看,Tailscale 的設定較為簡單。不過我不確定,這兩者哪一個在安全性上會更好。
Weedy
11
你在討論 VPN-A、VPN-B 和 VPN-C。
如果能直接在你的 UniFi 上運行 WireGuard 來進行控制,那會很棒。
但除此之外,它們基本上都差不多。
就憑感覺選吧,或是丟銅板決定。