发现与传输

OpenClaw 有两个看似相似但实际不同的问题:

  1. Operator 远程控制:macOS 菜单栏应用控制运行在别处?Gateway?
  2. 节点配对:iOS/Android(及未来的节点)安全地找?Gateway 并配对?

设计目标是让所有网络发?发布保留?Node Gatewayopenclaw gateway)中,让客户端(mac 应用、iOS)作为消费者?

术语

  • Gateway:一个长期运行的 Gateway 进程,拥有状态(会话、配对、节点注册表)并运行渠道。大多数设置每个主机一个;支持隔离的多 Gateway 设置?
  • Gateway WS(控制平面):默认在 127.0.0.1:18789 上的 WebSocket 端点;可以通过 gateway.bind 绑定?LAN/tailnet?
  • 直连 WS 传输:面?LAN/tailnet ?Gateway WS 端点(无 SSH)?
  • SSH 传输(后备):通过转发 127.0.0.1:18789 over SSH 进行远程控制?
  • 旧版 TCP 桥接(已弃用/已移除):旧版节点传输(请参阅桥接协议);不再为发现做广告?

协议详情?

为什么同时保?直连”?SSH

  • 直连 WS 在同一网络?tailnet 内提供最佳用户体验:
    • 通过 Bonjour ?LAN 上自动发?
    • 配对令牌 + ACL ?Gateway 拥有
    • 不需?shell 访问;协议表面可以保持紧凑和可审?
  • SSH 仍然是通用后备?
    • 在任何有 SSH 访问的地方都能工作(即使跨无关网络)
    • 能应对多?mDNS 问题
    • 除了 SSH 外不需要新的入站端?

发现输入(客户端如何获知 Gateway 在哪里)

1) Bonjour / mDNS(仅 LAN?

Bonjour 是尽力而为的服务,不能跨网络。它仅用?同一 LAN”的便捷功能?

目标方向?

  • Gateway 通过 Bonjour 发布?WS 端点?
  • 客户端浏览并显示”选择 Gateway”列表,然后存储选定的端点?

故障排除和信标详情:Bonjour?

服务信标详情

  • 服务类型?
    • _openclaw-gw._tcp(Gateway 传输信标?
  • TXT 键(非秘密)?
    • role=gateway
    • lanHost=<主机?.local
    • sshPort=22(或发布的任何端口)
    • gatewayPort=18789(Gateway WS + HTTP?
    • gatewayTls=1(仅在启?TLS 时)
    • gatewayTlsSha256=<sha256>(仅在启?TLS 且指纹可用时?
    • canvasPort=<端口>(画布主机端口;当前与启用画布主机时?gatewayPort 相同?
    • cliPath=<路径>(可选;可运行的 openclaw 入口点或二进制文件的绝对路径?
    • tailnetDns=<magicdns>(可选提示;Tailscale 可用时自动检测)

安全说明?

  • Bonjour/mDNS TXT 记录?未经身份验证?。客户端只能?TXT 值视为用户体验提示?
  • 路由(主?端口)应优先使用**解析的服务端?*(SRV + A/AAAA),而不?TXT 提供?lanHosttailnetDns ?gatewayPort?
  • TLS 固定?gatewayTlsSha256 覆盖先前存储的不能允许广告的固定?
  • iOS/Android 节点应将基于发现的直连视?*?TLS**,并在存储首次固定之前需要明确的”信任此指?确认(带外验证)?

禁用/覆盖?

  • OPENCLAW_DISABLE_BONJOUR=1 禁用发布?
  • ~/.openclaw/openclaw.json 中的 gateway.bind 控制 Gateway 绑定模式?
  • OPENCLAW_SSH_PORT 覆盖 TXT 中发布的 SSH 端口(默认为 22)?
  • OPENCLAW_TAILNET_DNS 发布 tailnetDns 提示(MagicDNS)?
  • OPENCLAW_CLI_PATH 覆盖发布?CLI 路径?

2) Tailnet(跨网络?

对于伦敦/维也纳风格的设置,Bonjour 无法提供帮助。推荐的”直连”目标是:

  • Tailscale MagicDNS 名称(首选)或稳定的 tailnet IP?

如果 Gateway 能检测到它在 Tailscale 下运行,它会发布 tailnetDns 作为客户端的可选提示(包括广域信标)?

3) 手动 / SSH 目标

当没有直连路由(或直连被禁用)时,客户端始终可以通过转发回环 Gateway 端口通过 SSH 连接?

请参阅远程访问?

传输选择(客户端策略?

推荐的客户端行为?

  1. 如果配置了可访问的配对直连端点,则使用它?
  2. 否则,如?Bonjour ?LAN 上找?Gateway,提供一?使用?Gateway”选项并将其保存为直连端点?
  3. 否则,如果配置了 tailnet DNS/IP,尝试直连?
  4. 否则,回退?SSH?

配对 + 认证(直连传输)

Gateway 是节?客户端准入的真相来源?

  • 配对请求?Gateway 中创?批准/拒绝(请参阅 Gateway 配对)?
  • Gateway 强制执行?
    • 认证(令?密钥对)
    • 作用?ACL(Gateway 不是每个方法的原始代理)
    • 速率限制

各组件职?

  • Gateway:发布发现信标,拥有配对决策,并托管 WS 端点?
  • macOS 应用:帮助您选择 Gateway,显示配对提示,并仅?SSH 作为后备使用?
  • iOS/Android 节点:将 Bonjour 浏览作为便捷方式,并连接到配对的 Gateway WS?