2026 年公网暴露 OpenClaw Gateway 时五层故障各自长什么样
第一层是云厂商安全组与边界 ACL:你在机器内部看到监听正常,但从公网入口进不来,典型是入站规则只开了 22 与 80,没有把 18789 或反代对外端口写进允许列表。第二层是主机防火墙:Ubuntu 的 ufw、CentOS 的 firewalld、以及某些镜像默认 drop 策略,会在安全组放行后仍把包挡在网卡之后。第三层是反代与 WebSocket:Nginx 或 Caddy 若缺少 Upgrade 与 Connection 透传,浏览器侧会表现为握手失败或无限重连,而 Gateway 进程本身仍健康。
第四层是Gateway 绑定与鉴权:当你把监听从回环改到局域网或自定义地址时,官方护栏会要求 token 或等价鉴权;缺了就会「拒绝绑定」或「能绑定但控制面无法完成 RPC 探测」。第五层是通道与策略:Telegram、Discord 或 Webhook 任意一侧的速率限制、配对状态、群组策略与 DM 策略,都会让日志里出现「Gateway 在线但业务侧无感」的现象。
把五层分开后,你就不会在每一个报错上都重装一遍;下一节的表格用来决定你现在到底是在解决网络入口问题,还是在解决控制面配置问题,还是在解决通道产品问题。
安全组:从公网 IP 用最小探针验证端口可达,再回退到内网对比。
主机防火墙:与安全组规则交叉核对,避免「两层都以为对方会放行」。
反代:确认 TLS 终止点与上游协议一致,WebSocket 头是否原样转发。
绑定与鉴权:核对 gateway.mode、gateway.bind 与 gateway.auth 是否同一套假设。
通道:把 channels status --probe 与提供商控制台时间戳对齐。
如果你已经读过站内《OpenClaw 从安装到 Gateway 联机》那篇,可以把本文当作「公网入口与反代专章」:那一篇讲安装与守护进程验收,这一篇讲外网路径与 WebSocket 细节;两篇叠加后再读《全天候稳定运行与云节点方案》,就能把动机、命令行与网络层一次对齐。
监听绑定 loopback、局域网与 tailnet 时鉴权与暴露面如何对照
loopback 绑定最小暴露,适合只在同一台机器上用控制面;一旦你希望在另一台笔记本打开 Dashboard,就会被迫把监听扩到非回环地址,此时鉴权不是可选项而是护栏。局域网绑定需要明确哪些网卡与网段可信;tailnet 或零信任隧道场景要把「谁算内网」写成团队共识,否则排错时会在错误层反复横跳。
| 维度 | 仅回环绑定 | 非回环绑定 + 反代 |
|---|---|---|
| 暴露面 | 最小,外网默认不可达 | 需要安全组、防火墙、TLS 与 token 组合治理 |
| Dashboard 体验 | 需要 SSH 隧道或同机访问 | 可用域名与证书,适合团队共享控制面 |
| 排错顺序 | 优先看 Gateway 与 doctor | 先看端口与反代,再看 Gateway 与 doctor |
| 常见风险 | 误把仅回环当成公网可用地址 | 反代漏 Upgrade 或非 loopback 未配 token |
| 与 VPS 的契合 | 适合临时试验 | 适合把 Gateway 当长期控制面组件 |
公网排错的第一性原理是:先证明包能到,再证明握手能过,最后才证明业务逻辑在线。
当你把 Gateway 放到 VPS 上却仍旧把重编译与浏览器工具负载堆在同一台机器里,争用会放大成「随机不健康」;把控制面与重负载拆到不同裸金属实例,往往比反复调 JVM 式参数更有效。需要并行与租期组合时,可对照同日发布的《Mac mini M4 买还是租 TCO》一文把预算与里程碑绑在一起评审。
Nginx 或 Caddy 反代 OpenClaw Gateway 时 WebSocket Upgrade 透传骨架
下面骨架刻意只保留与 WebSocket 相关的关键指令:核心是 proxy_http_version 1.1、Upgrade 与 Connection 头。TLS 终止在反代时,上游可用明文回环;若你改为端到端 TLS,需要把上游协议与证书校验写成另一套清单,不要把两套假设混在同一页 Runbook 里。
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 443 ssl;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
}
提示:若你在反代层做了 IP 限制或地理封锁,记得把通道提供商的回调入口一并纳入白名单,否则会出现「健康检查永远绿、真实消息永远进不来」的假阳性。
Caddy 的路线是自动证书与更短的站点文件,但 WebSocket 透传原则不变:仍然是 HTTP/1.1 升级语义与正确的 Host 透传。无论你选哪套反代,都建议把「反代后的最终 URL」写进团队文档,避免一半同事访问旧 IP 一半同事访问新域名,导致 OAuth 与回调域名不一致。
六步把「外网未连接」从入口一直收敛到通道层
下面顺序刻意把「本机 curl」放在靠后位置:公网问题优先用外网探针验证,避免被内网视角欺骗。把每一步输出粘到工单里,On-call 交接会轻松很多。
冻结目标 URL:写下 Dashboard 最终访问的域名、端口与是否经反代,避免混测。
从外网探针端口:用独立网络路径验证 443 或 18789 是否可达,与安全组截图对齐。
核对主机防火墙:列出 ufw 或 firewalld 规则,确认没有局部拒绝覆盖全局放行。
验证 WebSocket:用浏览器网络面板或 curl 手工升级请求观察是否 101。
回到 Gateway:执行 openclaw gateway status 与 openclaw doctor,确认绑定与 token 假设未被反代层掩盖。
验证通道:执行 openclaw channels status --probe,把提供商侧限流与配对状态一并记录。
当 01 到 04 都绿而 05 报红,优先怀疑配置漂移或升级后的默认值变化;当 05 绿而 06 红,别急着重启 Gateway,先把通道当作独立子系统排。
三条可写进变更评审的口径与云上常驻分工
端口与协议一致性:若公网入口使用 443 终止 TLS,则所有书签、OAuth 回调与 Webhook URL 必须同步改写成同一域名空间,否则会在「局部可用」与「全局不可用」之间来回抖动。
探测分层:把「端口可达」「HTTP 200」「WebSocket 101」「Gateway RPC ok」「通道 ready」分成五级信号,禁止用其中一级替代另一级的结论。
控制面与算力面隔离:当同机还要跑重负载 IDE 或并行模拟器时,应评估把 Gateway 迁到独立裸金属节点以降低争用,而不是无限增加 swap。
注意:把 Gateway 直接绑在公网且无鉴权是生产事故高发模式;务必按官方护栏配置 token 或等价控制面认证,并把变更记录进审计日志。
把 Gateway 绑在随时可能合盖的笔记本上,会把 TLS、回调域名与令牌刷新绑进不可审计的个人习惯;把重负载与浏览器工具链绑在同一台 VPS 上,则会把「网络看起来没问题」与「进程随机抖动」混成同一个黑盒。相较之下,MESHLAUNCH 的 Mac Mini 云端裸金属租赁提供独占 Apple Silicon、可按日周月弹性下单与多地区切换,更适合把 OpenClaw 控制面当成生产组件长期运行。你可以先打开 租赁价格页 为控制面与构建面各选一档,再在 帮助中心 核对 SSH 与网络要求;动机与大脉络可结合 全天候云节点方案 与 安装与 doctor 排错 两篇一起评审。
会,典型冲突是端口占用与两套配置根目录。建议同一主机只保留一套控制面,或在文档里明确端口隔离与数据目录隔离。下单入口见 租赁价格页。
先对照官方迁移说明把本地与守护进程配置对齐,再重启服务;更完整的命令链见 安装与 doctor 排错。
请检索 帮助中心 的网络与 SSH 说明,把端口与安全组核对写进同一页 Runbook。