// KNOWLEDGEBASE / LAYER-1
# Tailscale 容器化部署與防過期安全鎖定指南
在 TrueNAS SCALE 環境中維運自建服務時,外網安全連線一直是核心課題。傳統 Port Forwarding 容易將服務暴露於公網盲掃的風險中。本篇筆記將記錄如何透過 Docker 部署輕量化 Tailscale 節點,並實作 Mesh VPN 的零信任區域網隔離。
Tailscale 預設的授權金鑰(Auth Key)過期時間為 180 天。若未在管理後台將該節點設定為 "Disable Key Expiry",半年後容器會因憑證失效而無預警斷連。若此節點為你唯一的遠端 root 備用線路,將會導致徹底失聯!
01/ 核心 Docker Compose 編排架構
請在 TrueNAS 的 Dockge 或自建目錄中,建立以下環境配置。我們採用主機網路模式(Host Network)以確保路由能精準對接實體網段,且將密鑰憑證持久化存於 ZFS 儲存池中,故 **Compose 檔案內無需(亦不建議)直接宣告金鑰**:
version: "3.7"
services:
tailscale:
image: tailscale/tailscale:latest
container_name: tailscale-node
network_mode: host
volumes:
- /mnt/WaterPool/apps/tailscale:/var/lib/tailscale
- /dev/net/tun:/dev/net/tun
capabilities:
- NET_ADMIN
- NET_RAW
restart: always
02/ 控制台實體授權操作
部署容器前,我們需要進入 Tailscale 後台獲取連線憑證。請依序參考下方的實體儀表板步驟進行配置:
- 首先登入 https://tailscale.com 進入控制台,導航至 Settings ➡️ Keys 頁面,點擊 Generate auth key。
- 運維要點: 如需將此節點與特定安全存取策略綁定,須提前在金鑰設定中開啟 Tags 進行自訂義宣告。
- 產出的金鑰只會出現一次,請務必及時複製並妥善保存至保險箱中。
02-B/ 首次部署初始化與持久化握手
由於金鑰屬於一次性消耗品,且認證狀態會自動寫入 ZFS 掛載點。因此,在首次部署容器後,必須透過以下正統運維命令完成一次性的初始化綁定:
💡 Ops 備忘: 當執行完上述指令後,加密設備憑證已徹底寫入本地的 /var/lib/tailscale。未來不論容器如何銷毀重製、映像檔如何升級,只要掛載路徑不變,容器啟動即會秒速自動連線,永不失聯!
03/ 零信任安全存取策略 (ACL) 配置
為了避免傳統 VPN「一經連線、全網通透」的資安隱患,運維大師必須落實最小權限原則。請進入 Tailscale 管理後台的系統訪問控制(ACL),將預設的全部放行規則,替換為以下高度安全隔離的 JSON配置:
{
// ─── 1. 管理員群組宣告 ───
"groups": {
"group:admin": ["[email protected]"]
},
// ─── 2. 設備標籤防篡改擁有者宣告 ───
"tagOwners": {
"tag:nas": ["group:admin"],
"tag:nas-slave": ["group:admin"],
"tag:nas-master": ["group:admin"],
"tag:workstation": ["group:admin"],
"tag:home-user": ["group:admin"],
"tag:exposed": ["group:admin"]
},
// ─── 3. 核心訪問策略(微隔離機制) ───
"acls": [
{"action": "accept", "src": ["group:admin"], "dst": ["*:*"]},
{
"action": "accept",
"src": ["tag:workstation"],
"dst": [
"tag:nas:80", "tag:nas:xxx", "tag:nas:xxxxx", "tag:exposed:*"
]
},
{
"action": "accept",
"src": ["tag:nas-master"],
"dst": [
"tag:nas:xx", "tag:nas:xxx", "tag:nas:xxxxx", "tag:exposed:*"
]
},
{
"action": "accept",
"src": ["tag:home-user"],
"dst": ["tag:nas-master:xxxxx"] // 🎯 僅放行相簿系統 Immich
}
],
// ─── 4. 二次強固 SSH 步進式多重驗證牆 ───
"ssh": [
{
"action": "check",
"src": ["group:admin"],
"dst": ["tag:nas"],
"users": ["root", "autogroup:nonroot"]
}
]
}
- 🛡️ 測試機黑洞隔離(tag:exposed): 在 ACL 規則中未賦予該標籤任何發起通訊的權限。這意味著測試機即使遭攻破,也無法在虛擬局域網內發動橫向感染,完美維護主核心資料集。
-
🎯 家人權限精準降維(tag:home-user):
透過限制只允許連線到
tag:nas-master:xxxxx,確保家庭成員僅能正常同步 Immich 相片,其餘核心運維後台、SSH 全面隱形。 -
🔑 企業級 SSH Step-up 認證防線:
配置了
"action": "check"。即使管理員本機憑證外洩,當企圖取得 root 殼層(Shell)時,系統將強彈多重身分認證(2FA),阻斷劫持。
04/ 後續維運排程檢查
- 執行 Ping 測試: 在移動端外網連線 Tailscale 虛擬 IP,確認是否能成功握手。
- 開啟 Subnet Routes(選配): 若要讓外部設備直接存取整個 TrueNAS 內網網段,記得在 CLI 宣告通告。
- ZFS 持久化確認: 確認 `/var/lib/tailscale` 目錄有確實寫入你的儲存池,避免容器重啟後憑證重設。