2026 OpenClaw Gateway × Tailscale
私網通道、迴環綁定與遠端 CLI 排錯手冊

你已在 VPS 或家裡伺服器上跑起 OpenClaw Gateway,卻不想把 18789 埠位暴露到公網;又希望筆記型電腦、另一台 Linux 或手機節點能像連內部服務一樣接 CLI/WebSocket。本文以 Tailscale 私網通道+預設迴環綁定說明拓撲邊界、權杖與環境變數、遠端 CLI 檢查清單,並專章拆解「通道通、RPC/工作階段卻不對勁」的分流排錯。讀畢可對齊與站內 Cloudflare Tunnel+systemd 篇的分工,以及在重負載情境如何自然銜接 獨佔遠端 Mac 算力。

01

為何「把 bind 改成 0.0.0.0」不是 2026 年我們建議的作法

OpenClaw Gateway 預設把控制面綁在 127.0.0.1,本質是把可攻面壓在作業系統已承諾的邊界內:只有本機程序能直接觸及 WebSocket/HTTP 控制面。許多初部署的人為了「遠端也能 openclaw」直接把監聽位址改為 0.0.0.0,再用手寫防火牆補洞──在示範環境可行,在正式或長期執行場景卻會把未授權掃描、權杖外洩、CORS 誤設一併放大。

  1. 01

    掃描面以指數成長:一旦埠位對公網可連,自動化掃描會在幾小時內上門;即使用了強權杖,日誌也會充滿雜訊,SOC 警示難以收斂。

  2. 02

    和「最小可攻面」安全文的假設衝突:站內《閘道安全加固》強調迴環、權杖輪換與執行審批;把 bind 打開到全網,等同自廢第一層門檻。

  3. 03

    分流的訊號被汙染:公網路徑上還有 CDN、業者 NAT、公司 Proxy;你會以為是 OpenClaw 出問題,實則是 half-close、MTU 等層層雜訊。

  4. 04

    法遵稽核難寫清楚:「誰從哪個公網 IP 連進 Agent 控制面」要對應到自然人很痛;在私網 tailnet 內,機身身分+ACL 比較好寫進內部規程。

  5. 05

    多 Gateway 拓撲更難收斂:同一台主機上再跑第二個實驗實體時,埠位碰撞與權杖混用機率陡升。

  6. 06

    和遠端 Mac 應用情境不一致:真正需要長期算力的是 Xcode、模擬器與大容量快取;閘道較宜維持輕量,把重活排程到獨佔節點。

比較穩的模型是:維持 Gateway 在 loopback,以受管網路層(Tailscale 等)解決可達性。這和只把資料庫綁 127.0.0.1 再經由 SSH 通道存取,是同一類習慣。若你較熟 Cloudflare Tunnel,可先對讀 Linux VPS+systemd+Cloudflare Tunnel 以理解「邊緣入口」和本文「純 tailnet」的差別。

02

三種可達性方案對照:Loopback+Tailscale、直接對公網 bind、Cloudflare Tunnel

面向Loopback+Tailscale直接 bind 公網Cloudflare Tunnel
信任模型以 tailnet 身分+ACL,預設走私網仰賴防火牆+權杖,可攻面大以邊緣身分與 Tunnel 憑證為主,偏公網入口
維運負擔中:要顧好 ACL 與主機名稱起步低,長期風險高中至高:DNS、憑證、回源策略
與 OpenClaw 預設設定的契合度高:通常不必改 bind低:常誘導大開 bind中:Tunnel 指回 loopback 埠位
常見使用情境個人與小型團隊的內部編排不建議作為正式上線主路徑需從公網做受控入口者

「通道只解路由問題,不取代驗證;權杖與執行審批一樣要全開。」

Tailscale 的價值在於把多裝置收進單一信任域,讓你能用穩定主機名去連 100.x 區段;它不會自動取代閘道端的權杖。若你 ACL 放太寬(例如 *:*),等於在 tailnet 內部複製了一個「小公網」。

在 2026 年常見拓撲裡,也會遇到子網路路由(subnet router)exit node:前者讓沒有裝 Tailscale 的內部網段仍能被 tailnet 碰到;後者讓指定裝置的出口流量交另一部機轉送。若 Gateway 和資料庫同在一個雲專有網路裡,而你的筆電只上 tailnet,就該釐清「哪些來源能進 DB 埠」──否則會出現「Gateway 本機 curl 得到 DB、遠端 CLI 卻間歇 500」的錯覺,本質是 ACL 或路由不對稱。

另一個高頻細節是 MagicDNS 與搜尋網域:有些企業網路會把 *.ts.net 解析劫持到內部 DNS;排錯時可在筆電上同時以 dig 對公眾與尾網內建解析比對,避免把「DNS 混用」誤當成 OpenClaw 工作階段異常。把結論寫進維運手冊後,新成員 on-boarding 能省掉反覆踩坑。

03

Tailscale 端:MagicDNS、ACL 與「只讓維運機台連到 Gateway」的驗收

在 Gateway 主機上安裝並登入 Tailscale 之後,先在同一 tailnet 的筆記型電腦上驗證 pingtailscale ping 的 RTT;再到 Admin 主控台核對:節點是否打上正確 tag、是否啟用 MagicDNS,以及 ACL 是否明確允許從維運子網到 Gateway 角色上的 TCP 18789(或自訂埠位)。

hujson
// ACL 片段示範:只允許帶 tag:ops 的機器連到 Gateway 節點的 18789
{
  "groups": { "group:ops": ["alice@github", "bob@github"] },
  "tagOwners": { "tag:gateway": ["group:ops"] },
  "acls": [
    {
      "action": "accept",
      "src":    ["tag:ops"],
      "dst":    ["tag:gateway:18789"]
    }
  ]
}
warning

注意:上例只說明形狀。實際 ACL 還要覆蓋 exit node、子網路路由與手機節點的最小權限;變更後務必在測試裝置上重連 tailnet 再驗一次。

建議驗收清單寫入變更單: Gateway 程序仍聽在 127.0.0.1:18789 從維運機在「不靠 SSH 本機轉送」的情況下,應能經由 tailnet IP 打到同一份健康檢查端點(實際路徑依你的部署版本而定); 雲上安全性群組或家裡 router 的公網入站關掉對 18789 的放行。若希望對照「渠道路徑不進訊息」的題型,可讀 channels 探針與 dmPolicy 門控 專文。

04

OpenClaw 端:六步讓遠端 CLI 接到「仍掛在迴環上的閘道」

以下假設主機上 openclaw doctor 已全綠;若尚未完成首跑,請先讀 全平台安裝與首跑排錯 再回本文。

  1. 01

    確認監聽位址:在伺服器上執行 lsof -nP -iTCP:18789 -sTCP:LISTEN,應看到綁在 127.0.0.1。若變成 *:18789,先還原設定再談通道。

  2. 02

    釘死權杖來源:優先以環境變數 OPENCLAW_GATEWAY_TOKEN 注入,避免把長效密鑰寫進可能同步的設定庫。

  3. 03

    在筆電設定 remote:於客戶端 ~/.openclaw/openclaw.json 增加指向 tailnet 主機名與埠的 remote 區段(欄位名以目前 CLI 說明為準),且 WebSocket URL 用 ws://wss:// 與內部政策一致。

  4. 04

    一併匯出埠位變數:非預設埠時,讓 OPENCLAW_GATEWAY_PORT 在服務端與客戶端工作階段一致,避免「doctor 過了、遠端 CLI 卻打錯埠」。

  5. 05

    釐清 TLS 終止點:若在 tailnet 內又套了本機反向代理,要確認 WebSocket 升級標頭沒被中間層剝除。

  6. 06

    把一次成功工作階段的日誌指紋留底:同一份工單內同時放 gateway statusdoctor 與失敗重現,日後升級版本才好對照。

json
// 客戶端 ~/.openclaw/openclaw.json 示意(欄位以官方 CLI 為準)
{
  "gateway": {
    "remote": {
      "url": "ws://openclaw-gateway.tailnet-1234.ts.net:18789",
      "token": "use-env-or-osx-keychain-instead-of-plaintext"
    }
  }
}
info

提示:不要讓閘道與大型編譯或重檔案工作綁死在同一台小記憶體 VPS;當 Agent 要長期跑 xcodebuild 或大型依賴快取時,較穩的是把執行面放到獨佔遠端 Mac,閘道只做工作階段與工具編排。選型可先參考 租賃價格說明 對照磁碟與地區方案。

05

症狀對照表與三條應寫進維運手冊的「硬」口徑

現象優先懷疑建議動作
tailscale ping 通、CLI 卻逾時埠位未進 ACL,或本機防火牆未放行走迴環轉送鏈先在伺服器本機驗證 loopback,再一層層向外
HTTP 401/驗證失敗權杖不一致、環境變數未匯入 systemd 單元對齊 unit 的 Environment= 與目前 shell 設定
WebSocket 立刻斷/gateway closed(1000)小版升級後 scope 或工作階段不相容對照站內 gateway closed 排錯文收斂權杖與 scope
渠道路在、訊息不進未配對/dmPolicy 擋下執行 channels 探針子指令並對照政策表

若在升級閘道小版後,突然變成「同一 ACL、同一權杖,卻只有遠端 CLI 能重現」的狀況,優先比對發行說明裡的破壞性變更與預設埠表,再回退到上一個已知正常版本做二分法;在還沒釐清監聽矩陣前,不要反覆亂改 ACL,否則工單只會充滿假陽性。

  • 預設埠位與變更成本:OpenClaw Gateway 生態多預設以 18789 作多工控制面(以發行說明為準);若改埠,systemd、Docker Compose 與客戶端 remote 三邊要同步,否則排錯容易卡在「半套程序讀到舊埠」。
  • 私網 RTT 與互動體驗:在尾網跨洲拓撲下,80–150ms RTT 仍可能支撐 CLI 操作,但高頻工具呼叫會把延遲放很大;可改以批次腳本減少往返。
  • 身分與主機生命週期:給 Gateway 節點打 tag:gateway 等標籤後,ACL 行數會隨團隊線性成長;維運手冊要寫死「人員離職即刪機+撤銷尾網裝置」的固定步驟。

只仰賴直接公網 bind 或過寬的 tailnet ACL,在 2026 年都容易把 Agent 控制面推進難以稽核的狀態;而把所有重計算都壓在與閘道同一台小 VPS,則會同時撞記憶體與磁碟上限。前者欠身分與網路層的縱深,後者則沒有雲主機那種可水平擴張的執行面。

比較穩的組合是:閘道維持輕量常駐+tailnet 收斷可觸面+重活卸到獨佔 macOS 節點。在需要穩定 Xcode 工具鏈、長期線上工作階段,以及可寫合約的磁碟水位時,NodeMini 的 Mac Mini 雲端租賃常是更合理的選項

FAQ

常見問題

封包從 tailnet 進入目標主機的通訊堆疊後,由本機程序把流量轉到 127.0.0.1:18789;你不需要把閘道改成監聽所有介面。關鍵在 ACL、本機防火牆與權杖。若要一併評估 Mac 算力,可先參考租賃價格說明

該文處理「從公網安全連進內部服務」的邊緣路由;本文處理「只在 tailnet 內、維持 loopback」的私網模型。可擇一或分層組合,但不要在沒有釐清驗證鏈的狀況下疊床架屋。

可從網站 OpenClaw 分類列表依主題篩選;連線與帳號相關問題也可對照說明中心內與 SSH/遠端算力相關的章節。