記錄 Proxmox LXC 環境需使用 --tun=userspace-networking 的解法、 TS_USERSPACE 環境變數在新版失效的坑,以及 /usr/local/bin 的 symlink 設定。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.8 KiB
2.8 KiB
Operations Guide
日常操作
啟動服務
./run.sh
啟動 Tailscale Docker 容器(背景執行)。
停止服務
./stop.sh
停止並移除容器。
連線至 Headscale
./docker_exec_tailscale_up.sh
使用預設的 Auth Key 連線至 https://headscale.lotimmy.com,並:
- 廣播子網路
192.168.88.0/24 - 啟用出口節點(Exit Node)
- 接受其他節點的路由
檢查狀態
./docker_exec_tailscale_status.sh # 查看連線狀態
./docker_exec_tailscale_ip.sh # 查詢 Tailscale IP
執行任意 Tailscale 指令
./tailscale status
./tailscale ping <peer>
./tailscale netcheck
./tailscale 是 docker exec -i tailscale tailscale 的包裝腳本。
部署後建議建立 symlink 讓系統全域可用:
ln -sf /opt/tailscale/tailscale /usr/local/bin/tailscale
之後即可在任何路徑直接執行 tailscale status 等指令。
Proxmox LXC 部署注意事項
LXC 容器環境下 /dev/net/tun 不存在且無法用 mknod 建立,tailscaled 會啟動失敗。
解法: 使用 userspace networking 模式:
# 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,無路由/出口功能 |
防火牆與路由設定
在主機上執行:
sudo ./iptables_reset_and_configure.sh
此腳本會:
- 清除所有現有 iptables 規則
- 允許 SSH (22)、HTTP (80)、HTTPS (443)、ICMP
- 設定 Tailscale CGNAT 範圍 (100.64.0.0/10) 的 NAT MASQUERADE
- 啟用
tailscale0↔eth0之間的封包轉送 - 將規則儲存至
/etc/iptables/rules.v4
環境變數
| 變數 | 說明 | 位置 |
|---|---|---|
TS_AUTHKEY |
Headscale 預認證金鑰 | .env |
持久化資料
- Tailscale 狀態檔案:主機的
/opt/tailscale掛載至容器的/var/lib/tailscale - iptables 規則:
/etc/iptables/rules.v4
故障排除
# 確認容器正在執行
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