From 7023430f00aa334747bac879a926a32f7c55c850 Mon Sep 17 00:00:00 2001 From: Timmy Date: Sun, 21 Jun 2026 08:43:09 +0800 Subject: [PATCH] docs: document Tailscale (Headscale) client on edge router MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增 Tailscale 一節:安裝/連線(強制 --accept-routes=false)、邊界路由器 禁用 accept-routes 的警告與根因、split-DNS 覆寫、WireGuard 救援步驟,以及 從 tailnet 管理 .10 需納入 fw4 zone 的註記。 Co-Authored-By: Claude Opus 4.8 (1M context) --- README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/README.md b/README.md index a8711cc..e5f721e 100644 --- a/README.md +++ b/README.md @@ -452,3 +452,45 @@ uci set firewall.@rule[-1].target='ACCEPT' uci commit firewall fw4 restart ``` + +--- + +## Tailscale(Headscale client) + +路由器以 Tailscale client 身份加入自架的 Headscale tailnet(control server:`https://headscale.lotimmy.com`,user `mainnet`)。節點名 `openwrt`,tailnet IP `100.64.0.9`。 + +> ⚠️ **邊界路由器絕對不可用 `--accept-routes`。** `.10` 是站點 gateway,tailnet 上已有節點宣告 `192.168.42.0/24`;一旦 `--accept-routes`,`.10` 會把這條路由裝進 `tailscale0`,**黑洞掉自己的 LAN、DNAT 轉送與站內 Headscale 控制面 → 全站斷線**,且重開機不會自愈(prefs 會保留)。2026-06 曾因此造成 sev1。 + +### 安裝與連線 + +```sh +opkg update && opkg install tailscale # 約 9.6MB 下載,overlay 佔用 ~30MB +/etc/init.d/tailscale enable +/etc/init.d/tailscale start + +# 連線(必須 --accept-routes=false) +tailscale up --login-server https://headscale.lotimmy.com --accept-routes=false +``` + +正常時 `tailscale status` 會出現 `Some peers are advertising routes but --accept-routes is false`,且 `ip route get 192.168.42.x` 應走 `dev br-lan`(不是 tailscale)。 + +> Headscale control 走 `headscale.lotimmy.com`(→ WAN `125.229.110.50`)會髮夾彎回站內 NPM,憑證 CN 不符而連不上。已在 `.10` 的 `/etc/hosts` 加 split-DNS 覆寫,直接走內網 NPM: +> ``` +> 192.168.42.124 headscale.lotimmy.com +> ``` + +### 出事時的救援(in-band 全斷) + +若 `.10` 路由被劫持、LAN/tailnet/WAN 全進不去,改走 **WireGuard**(`wg0: 10.0.0.1` 與被黑洞的 `192.168.42.0/24` 無關): + +```sh +# 在任一 WG peer(如 iPhone 10.0.0.3) +ssh root@10.0.0.1 +tailscale down # 立即撤掉劫持路由,全站恢復,免重開機 +``` + +備援:OpenWrt failsafe 模式(開機狂按 reset)→ 網路線直插、靜態 `192.168.1.x` → `ssh root@192.168.1.1` → `/etc/init.d/tailscale disable`。 + +### 從 tailnet 管理 `.10`(選用) + +目前 `tailscale0` 未納入任何 fw4 zone,所以 **tailnet → 路由器 SSH 會被 reject**(節點仍可被 `tailscale ping`)。若需從 tailnet 直接管理,將 `tailscale0` 加入 `lan` zone 或新增對應 input 規則。