痛点:① 全隧道误伤内网解析导致网关自环;② 令牌只写在交互 shell、launchd 探针全未授权;③ 流水线与网关日志各说各话,排障慢。
决策矩阵:固定出口三种形态
先选合规与可观测,再动隧道参数。
| 形态 | 适用 | 风险与缓解 |
|---|---|---|
| WireGuard 全隧道 | 强制单一公网源 NAT | 易与内网 DNS 冲突 → 分流或隧道内 DNS |
| 分流 AllowedIPs | 仅模型与工具网段走隧道 | 维护FQDN 列表与自动化校验脚本 |
| 侧车 HTTP 代理 | 需域名级 ACL 审计 | 代理单点故障 → 叠加健康探针与二四八秒退避 |
① 拓扑与最小权限原则
把远程 Mac当作唯一受控跳板:CI 与人工调试共用同一套出站策略;网关进程仅持调用模型与工具所需的最小 API 令牌,与组织主账号分离。审计日志落在隧道侧或集中 SIEM,避免散落在个人目录。
② 安装与 doctor 验证(Node 22/24)
二〇二六年官方路径推荐 Node 二十二或二十四;使用文档中的 curl 管道安装脚本或 npm i -g openclaw 后务必核对 which openclaw 与 launchd 一致。
多团队同机可设不同 OPENCLAW_HOME 做配置与缓存隔离,每实例独立端口与令牌文件。
③ WireGuard 路由与 DNS 分流
AllowedIPs 只收模型与工具网段;DNS 对这类域名走隧道侧解析,其余仍用机房或上游递归。验收:wg show 握手正常且 dig @<隧道 DNS> api.example 返回预期网段。
④ 网关绑定、令牌与域名白名单
openclaw gateway status 核对监听;文档常用对照端口 一八七八九。侧防火墙或出口代理维护模型与工具 FQDN 白名单;Bearer 仅授只读或调用类范围。检查:curl -sS -H "Authorization: Bearer <探针令牌>" http://127.0.0.1:18789/health(路径以发行版为准)。
⑤ 断线重连与健康探针
隧道侧开 PersistentKeepalive;网关侧用 LaunchAgent 每数分钟执行 openclaw gateway status 与探针,失败按二四八秒重试并写 syslog。避免探针与业务高峰同一秒打满。
⑥ 与 CI Webhook 摘要联动示例
流水线在失败步骤将 Job 名、退出码、最后五十行日志 与网关探针 JSON 合并为一行 POST 到同一运维 Webhook;成功日也可投递 gateway_ok 心跳,值班一屏区分网络抖动与业务失败。
可执行清单(写入 Runbook)
- 环境:
node -v、openclaw doctor、launchctl list | grep -i openclaw - 网络:
wg show、scutil --dns抽查分流 - 网关:
openclaw gateway status、探针 HTTP 状态二百
FAQ:常见报错
隧道已通但网关仍解析不到模型域名?
查 DNS 分流与 AllowedIPs;清 DNS 缓存后重试。
探针一直四零一?
令牌未进 plist 或与 CI 不一致;勿把主密钥打进日志。
多实例抢同一端口?
每实例独立 OPENCLAW_HOME 与监听端口;升级后重跑 doctor。