Tailscale 容器化部署與防過期安全鎖定指南 | WaterNAS
Infrastructure / Mesh-VPN / TS-Node

# Tailscale 容器化部署與防過期安全鎖定指南

UPDATED: 2026-07-13
|
AUTHOR: Water
|
STATUS: VERIFIED

在 TrueNAS SCALE 環境中維運自建服務時,外網安全連線一直是核心課題。傳統 Port Forwarding 容易將服務暴露於公網盲掃的風險中。本篇筆記將記錄如何透過 Docker 部署輕量化 Tailscale 節點,並實作 Mesh VPN 的零信任區域網隔離。

⚠️ CRITICAL DEPLOYMENT WARNING / 運維防坑提示

Tailscale 預設的授權金鑰(Auth Key)過期時間為 180 天。若未在管理後台將該節點設定為 "Disable Key Expiry",半年後容器會因憑證失效而無預警斷連。若此節點為你唯一的遠端 root 備用線路,將會導致徹底失聯!

01/ 核心 Docker Compose 編排架構

請在 TrueNAS 的 Dockge 或自建目錄中,建立以下環境配置。我們採用主機網路模式(Host Network)以確保路由能精準對接實體網段,且將密鑰憑證持久化存於 ZFS 儲存池中,故 **Compose 檔案內無需(亦不建議)直接宣告金鑰**:

docker-compose.yml
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 進行自訂義宣告。
  • 產出的金鑰只會出現一次,請務必及時複製並妥善保存至保險箱中。
Tailscale Settings Keys
🔍 點擊放大檢視
步驟 1:進入金鑰設定頁
Tailscale Key Tags Selection
🔍 點擊放大檢視
步驟 2:設定自訂標籤權限
Tailscale Copy Auth Key window
🔍 點擊放大檢視
步驟 3:及時複製憑證密鑰

02-B/ 首次部署初始化與持久化握手

由於金鑰屬於一次性消耗品,且認證狀態會自動寫入 ZFS 掛載點。因此,在首次部署容器後,必須透過以下正統運維命令完成一次性的初始化綁定:

TrueNAS Shell / CLI
# 步驟一:拉起乾淨的 Compose 容器機群
docker compose up -d
# 步驟二:穿透進入容器,帶入一次性密鑰與對應標籤(tag)完成首次握手
docker exec -it tailscale-node tailscale up --authkey=tskey-auth-你的密鑰 --advertise-tags=tag:nas

💡 Ops 備忘: 當執行完上述指令後,加密設備憑證已徹底寫入本地的 /var/lib/tailscale。未來不論容器如何銷毀重製、映像檔如何升級,只要掛載路徑不變,容器啟動即會秒速自動連線,永不失聯!

03/ 零信任安全存取策略 (ACL) 配置

為了避免傳統 VPN「一經連線、全網通透」的資安隱患,運維大師必須落實最小權限原則。請進入 Tailscale 管理後台的系統訪問控制(ACL),將預設的全部放行規則,替換為以下高度安全隔離的 JSON配置:

policy.json (Tailscale ACL)
{
  // ─── 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"]
    }
  ]
}
// ARCHITECTURE SECURITY HIGHLIGHTS / 架構資安亮點
  • 🛡️ 測試機黑洞隔離(tag:exposed): 在 ACL 規則中未賦予該標籤任何發起通訊的權限。這意味著測試機即使遭攻破,也無法在虛擬局域網內發動橫向感染,完美維護主核心資料集。
  • 🎯 家人權限精準降維(tag:home-user): 透過限制只允許連線到 tag:nas-master:xxxxx,確保家庭成員僅能正常同步 Immich 相片,其餘核心運維後台、SSH 全面隱形。
  • 🔑 企業級 SSH Step-up 認證防線: 配置了 "action": "check"。即使管理員本機憑證外洩,當企圖取得 root 殼層(Shell)時,系統將強彈多重身分認證(2FA),阻斷劫持。

04/ 後續維運排程檢查

  1. 執行 Ping 測試: 在移動端外網連線 Tailscale 虛擬 IP,確認是否能成功握手。
  2. 開啟 Subnet Routes(選配): 若要讓外部設備直接存取整個 TrueNAS 內網網段,記得在 CLI 宣告通告。
  3. ZFS 持久化確認: 確認 `/var/lib/tailscale` 目錄有確實寫入你的儲存池,避免容器重啟後憑證重設。
NODE REPOSITORY: WaterNAS-KB-TS
© 2026 WaterNAS. Security Architecture.
// 點擊任意處或按 ESC 鍵關閉檢視