# Operations Guide ## 日常操作 ### 啟動服務 ```bash ./run.sh ``` 啟動 Tailscale Docker 容器(背景執行)。 ### 停止服務 ```bash ./stop.sh ``` 停止並移除容器。 ### 連線至 Headscale ```bash ./docker_exec_tailscale_up.sh ``` 使用預設的 Auth Key 連線至 `https://headscale.lotimmy.com`,並: - 廣播子網路 `192.168.88.0/24` - 啟用出口節點(Exit Node) - 接受其他節點的路由 ### 檢查狀態 ```bash ./docker_exec_tailscale_status.sh # 查看連線狀態 ./docker_exec_tailscale_ip.sh # 查詢 Tailscale IP ``` ### 執行任意 Tailscale 指令 ```bash ./tailscale status ./tailscale ping ./tailscale netcheck ``` `./tailscale` 是 `docker exec -i tailscale tailscale` 的包裝腳本。 部署後建議建立 symlink 讓系統全域可用: ```bash ln -sf /opt/tailscale/tailscale /usr/local/bin/tailscale ``` 之後即可在任何路徑直接執行 `tailscale status` 等指令。 ## Proxmox LXC 部署注意事項 LXC 容器環境下 `/dev/net/tun` 不存在且無法用 `mknod` 建立,tailscaled 會啟動失敗。 **解法:** 使用 userspace networking 模式: ```yaml # docker-compose.yml command: > sh -c "tailscaled --tun=userspace-networking" ``` 並移除 volumes 中的 `/dev/net/tun:/dev/net/tun` 掛載。 **注意:** - `TS_USERSPACE=true` 環境變數在新版 Tailscale(v1.96+)無效,必須直接傳 `--tun=userspace-networking` 參數 - userspace networking 模式**不支援** `--advertise-routes` 和 `--advertise-exit-node`,該節點無法作為子網路由器或出口節點 ## 節點部署對照表 | 主機 | 類型 | Tailscale IP | 主機名稱 | 備註 | |------|------|-------------|---------|------| | 192.168.42.126 | Proxmox LXC | 100.64.0.8 | ip-192-168-42-126 | userspace networking,無路由/出口功能 | ## 防火牆與路由設定 在主機上執行: ```bash sudo ./iptables_reset_and_configure.sh ``` 此腳本會: 1. 清除所有現有 iptables 規則 2. 允許 SSH (22)、HTTP (80)、HTTPS (443)、ICMP 3. 設定 Tailscale CGNAT 範圍 (100.64.0.0/10) 的 NAT MASQUERADE 4. 啟用 `tailscale0` ↔ `eth0` 之間的封包轉送 5. 將規則儲存至 `/etc/iptables/rules.v4` ## 環境變數 | 變數 | 說明 | 位置 | |------|------|------| | `TS_AUTHKEY` | Headscale 預認證金鑰 | `.env` | ## 持久化資料 - Tailscale 狀態檔案:主機的 `/opt/tailscale` 掛載至容器的 `/var/lib/tailscale` - iptables 規則:`/etc/iptables/rules.v4` ## 故障排除 ```bash # 確認容器正在執行 docker ps | grep tailscale # 查看容器日誌 docker logs tailscale # 確認 TUN 裝置存在 ls -la /dev/net/tun # 確認 IP 轉送已啟用 cat /proc/sys/net/ipv4/ip_forward # 登出並重新連線 ./tailscale logout ./docker_exec_tailscale_up.sh ```