Files
tailscale/OPERATIONS.md
Timmy a2946efeda docs: 新增 LXC 部署注意事項、節點對照表、symlink 設定
記錄 Proxmox LXC 環境需使用 --tun=userspace-networking 的解法、
TS_USERSPACE 環境變數在新版失效的坑,以及 /usr/local/bin 的 symlink 設定。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 09:59:56 +08:00

126 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 <peer>
./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` 環境變數在新版 Tailscalev1.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
```