誰會踩到問題:你已能運行 OpenClaw Gateway,但不想讓 18789 掛在公網;同時又要讓筆電、CI 與長駐機台能在同一可信小網內完成 CLI/通道握手。本文結論:將 gateway.bind 收斂到 tailnet 語意,並透過 Tailscale ACL 明確誰可向誰放行 18789;驗證順序:openclaw gateway status → 尾網 ping → 最小對話。架構分工:與《Nginx/Caddy 反代與 TLS》《Cloudflare Tunnel 與 systemd》形成三角——分別對應公網 TLS、出站隧道與僅尾網、不向公網暴露;Compose 細節仍回《Docker Compose 配對》《遠端 Mac 零信任接入》。
*:* 或寬鬆 tag,等於讓每台節點都能探測 18789——只是把攻擊面搬進尾網;尾網仍須最小權限。loopback/lan/tailnet卻未更新 CLI 側 GATEWAY_URL,會出現tailscale ping 成功但握手仍走舊地址。白板檢查:尾網並非「省防火牆」,而是把防火牆寫進 ACL hujson;《安全加固/CVE 回應》對埠集合與金鑰輪換紀律仍適用——只是收斂對象改為 tailnet。
| 暴露模型 | 適用前提 | 主要權衡 |
|---|---|---|
| 公網+反向代理與 TLS | 需要外部 SaaS webhook、跨網移動裝載且無統一 agent。 | WAF/憑證/Let's Encrypt/限流複雜度較高;請參《反代清單》。 |
| Cloudflare Tunnel 等出站隧道 | 要遮蔽源站 IP、又不想開入站埠對應。 | 倚賴第三方 POP 與控制面;《Tunnel Runbook》。 |
僅 tailnet+gateway.bind=tailnet |
團隊已全員 enrollment;Gateway 跑在六地獨享 Mac或可裝 tailscale 的 Linux。 | 須清楚寫明 ACL/tag;無 tailnet 用戶端的主機本就不可達並不等於較不安全。 |
勿把 tailnet 當「隱形 VPN 任意門」:一旦把閘道裝置套用過於寬鬆的通用 tag(例如 group:dev)又允許全網互 ping,出事時你無法回答「那晚究竟是誰連過 18789」——每條 ACL 都應能對應到工單。
最小閉環:Gateway 長駐(常為獨占遠端 Mac)、操作員O 筆電、必要時 SR subnet router。G 上 tailscale up 後,僅向白名單 tags 放行 TCP 18789。O 側 CLI 的 OPENCLAW_GATEWAY_URL 請寫 MagicDNS 名稱或 tailnet IPv4/v6;若已宣告「僅 tailnet」,勿再沿用廢止的區網入口。
CI Runner 也需直連 Gateway 時,可將 Runner enrollment 在同一 tailnet tag(例如 tag:ci),並在 ACL 只允許 tag:ci → tag:gateway:18789 的單埠條款;別把 Runner 丟進「全能 dev」分組。
搭配六國遠端基礎設施時,《零信任 Tailscale/SSH 接入》提供 SSH/Tunnel 決策矩陣;本文僅將OpenClaw 閘道口語意再往前推一步。
tailscale status 紀錄主機名/IP;工單只允許這些字串進 Runbook——避免口頭「大阪那台機」。~/.openclaw/openclaw.json,容器則掛載同卷)將 gateway.bind 設為 tailnet並核對 gateway.mode與發行文件;調整後監聽面應限於尾網前綴可達。欄位層級若有版本細調,請以當期發行說明為準。OPENCLAW_GATEWAY_TOKEN 與檔案內 gateway.auth.token擇一指紋對照;《Compose 配對》有雙源表。openclaw gateway status → openclaw doctor;失敗時截取尾網側與控制面同一時間區間日誌。curl -v --max-time 5 https://…或文件推薦的 WS 路徑,再以最小對話確認上下文未被截斷;《doctor 第一站》協助後續分診。{
"gateway": {
"mode": "local",
"bind": "tailnet",
"port": 18789,
"auth": {
"mode": "token",
"token": "${OPENCLAW_GATEWAY_TOKEN}"
}
}
}
// 【示意】請依貴線上版本 schema 逐欄校正;調整後務必重啟閘道程序或容器。
// ACL 示意:僅允許 operator 存取 gateway 上 Control/Gateway 埠——請將 tag 改為貴組命名規範
{
"groups": { "group:ops": ["[email protected]"] },
"tagOwners": { "tag:gateway": ["autogroup:admin"], "tag:ops": ["autogroup:admin"] },
"acls": [
{
"action": "accept",
"src": ["tag:ops"],
"dst": ["tag:gateway:18789"],
"proto": "tcp"
}
]
}
gateway healthy 但通道無回應——請把MagicDNS 分流策略寫進工單附錄。睡眠、閤蓋、補丁重開與家用上行抖動會破壞可預測的 18789 SLA;同時個人私檔與閘道日誌混載會提高鑑識難度。相對地,獨占、可支配巡檢節拍的六國 Apple Silicon遠端 Mac 更適合擔OpenClaw 長駐中樞。
公網反代、Tunnel 出站、尾網收斂三路可並存為不同環境組態,但各路皆須 RACI:MACCOME以硬體與租期彈性對齊可巡檢的節點;請先對齊公開租賃價格與幫助中心,再回到綁定與冒烟。
若白板上無法在三分鐘內講清楚「誰對誰放行 18789」,就不該草率改設定——否則下一班值班只能靠 MagicDNS 口述。「僅 tailnet」的目標是可被複述的路徑陳述,不是口號。
下一跳:依需求回到《Compose 配對》《反代 TLS》《Tunnel》《安全加固》;當 SLA 必須與地面節點綁定時,再評估六國獨占算力與租賃組合。
常見問題
一定得放棄 Docker 嗎?
不必。容器只是把監聽搬進 netns,《Compose 配對篇》仍可沿用——前提是宿主 tailnet IP/DNS與容器 publish 邏輯一致。
尾網就緒後還能併用 SSH 跳板嗎?
可以;《零信任遠端 Mac 接入》說明 SSH/Tunnel/直連取捨;OpenClaw 層請將TCP 18789 的 ACL獨立成條,勿與 22/tcp 混寫成一團。