使用 Cloudflare Tunnel 建立可遠端 SSH 存取的 Synology NAS
最後修改於 2026年2月4日 • 2 分鐘 閱讀 • 222 字
💡 背景與目的
公司放置了一台 Synology NAS,僅能透過行動 5G 路由器上網,無法對外開 port。希望能遠端從家中電腦或筆電以 SSH 操作這台 NAS,同時預留未來存取 Docker 上的其他服務(如 Metabase、HAPI-FHIR)。
🧱 系統環境與條件
- Synology NAS 安裝 DSM 7.2.2
- NAS 可透過 SSH 操作與 Docker 部署
- 網路環境:5G 行動網路,無法開放連接埠
- Cloudflare 帳號與已驗證的自訂網域
myn8n.dpdns.org
🚀 Cloudflare Tunnel 安裝與啟動
1. 在 Cloudflare 建立 Tunnel
- Tunnel 名稱:
Betelgeuse - 綁定子網域:
ssh.myn8n.dpdns.org
2. 建立後,Cloudflare 提供的 Docker 指令如下:
docker run -d \
--name cloudflared \
--restart unless-stopped \
cloudflare/cloudflared:latest tunnel \
--no-autoupdate run \
--token <你的_Tunnel_Token>✅ 容器啟動後即自動連線 Cloudflare 並掛載於
ssh.myn8n.dpdns.org
🔐 啟用 Private Network 讓 SSH 可存取
1. 安裝 cloudflared CLI 工具
在任一 Linux/MacOS 上:
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 -o cloudflared
chmod +x cloudflared
./cloudflared login2. 設定 Tunnel 憑證與設定檔
mkdir -p /volume1/docker/cloudflared
mv ~/.cloudflared/cert.pem /volume1/docker/cloudflared/
mv ~/.cloudflared/<UUID>.json /volume1/docker/cloudflared/新增 /volume1/docker/cloudflared/config.yml:
tunnel: <UUID>
credentials-file: /etc/cloudflared/<UUID>.json
ingress:
- hostname: ssh.myn8n.dpdns.org
service: ssh://192.168.1.13:22
- service: http_status:404🌐 在 Zero Trust 宣告內網與權限
1. Private Network 設定
至 Cloudflare Zero Trust > Tunnels > Betelgeuse > Private Network:
新增內網 CIDR:192.168.1.0/24
2. 建立 SSH Access Application
Cloudflare Zero Trust > Access > Applications > Add Application
- Type: Self-hosted
- Subdomain:
ssh - Domain:
myn8n.dpdns.org - Type: SSH
- 設定 Policy 為允許特定帳號登入
🧪 測試連線
在家中電腦執行:
cloudflared access ssh --hostname ssh.myn8n.dpdns.org系統會開啟瀏覽器要求登入 Cloudflare 驗證,成功後建立 SSH Proxy。
也可以手動執行:
ssh -o ProxyCommand="cloudflared access ssh --hostname %h" admin@ssh.myn8n.dpdns.org✅ 結語
本篇展示如何在不開 port 的情況下,透過 Cloudflare Tunnel 安全存取內網 NAS。未來可進一步新增如 Metabase 等 Docker 應用,並用相同 Tunnel 提供外部安全服務入口。
留言