openclaw/docs/zh-CN/gateway/discovery.md

124 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
read_when:
- 实现或更改 Bonjour 发现/广播功能
- 调整远程连接模式(直连 vs SSH
- 为远程节点设计节点发现 + 配对方案
summary: 节点发现与传输Bonjour、Tailscale、SSH用于查找 Gateway
title: 发现与传输
x-i18n:
generated_at: "2026-02-01T20:25:57Z"
model: claude-opus-4-5
provider: pi
source_hash: e12172c181515bfa6aab8625ed3fbc335b80ba92e2b516c02c6066aeeb9f884c
source_path: gateway/discovery.md
workflow: 14
---
# 发现与传输
OpenClaw 有两个表面上看起来相似但实际上不同的问题:
1. **操作者远程控制**macOS 菜单栏应用控制运行在其他位置的 Gateway。
2. **节点配对**iOS/Android以及未来的节点找到 Gateway 并安全配对。
设计目标是将所有网络发现/广播保留在 **Node Gateway**`openclaw gateway`让客户端Mac 应用、iOS作为消费者。
## 术语
- **Gateway**:一个长期运行的 Gateway 进程,拥有状态(会话、配对、节点注册表)并运行渠道。大多数配置每台主机使用一个;也可以进行隔离的多 Gateway 设置。
- **Gateway WS控制平面**:默认位于 `127.0.0.1:18789` 的 WebSocket 端点;可通过 `gateway.bind` 绑定到局域网/Tailnet。
- **直连 WS 传输**:面向局域网/Tailnet 的 Gateway WS 端点(无 SSH
- **SSH 传输(回退)**:通过 SSH 转发 `127.0.0.1:18789` 实现远程控制。
- **旧版 TCP 桥接(已弃用/移除)**:旧的节点传输方式(参见 [桥接协议](/gateway/bridge-protocol));不再用于发现广播。
协议详情:
- [Gateway 协议](/gateway/protocol)
- [桥接协议(旧版)](/gateway/bridge-protocol)
## 为什么同时保留"直连"和 SSH
- **直连 WS** 在同一网络和 Tailnet 内提供最佳用户体验:
- 通过 Bonjour 在局域网上自动发现
- 配对令牌 + ACL 由 Gateway 管理
- 不需要 shell 访问;协议接口可以保持精简且可审计
- **SSH** 仍然是通用的回退方案:
- 在任何有 SSH 访问的地方都可以工作(甚至跨不相关的网络)
- 不受组播/mDNS 问题影响
- 除 SSH 外不需要新的入站端口
## 发现输入(客户端如何获知 Gateway 位置)
### 1) Bonjour / mDNS仅限局域网
Bonjour 是尽力而为的机制,无法跨网络。它仅用于"同一局域网"的便捷发现。
目标方向:
- **Gateway** 通过 Bonjour 广播其 WS 端点。
- 客户端浏览并显示"选择 Gateway"列表,然后存储所选端点。
故障排除和信标详情:[Bonjour](/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=18793`(默认 canvas 主机端口;服务于 `/__openclaw__/canvas/`
- `cliPath=<路径>`(可选;可运行的 `openclaw` 入口点或二进制文件的绝对路径)
- `tailnetDns=<magicdns>`(可选提示;当 Tailscale 可用时自动检测)
禁用/覆盖:
- `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 目标
当没有直接路由(或直连被禁用)时,客户端始终可以通过 SSH 转发回环 Gateway 端口进行连接。
参见 [远程访问](/gateway/remote)。
## 传输选择(客户端策略)
推荐的客户端行为:
1. 如果已配置并可达已配对的直连端点,则使用它。
2. 否则,如果 Bonjour 在局域网上发现了 Gateway提供一键"使用此 Gateway"选项并将其保存为直连端点。
3. 否则,如果配置了 Tailnet DNS/IP尝试直连。
4. 否则,回退到 SSH。
## 配对 + 认证(直连传输)
Gateway 是节点/客户端准入的权威来源。
- 配对请求在 Gateway 中创建/批准/拒绝(参见 [Gateway 配对](/gateway/pairing))。
- Gateway 强制执行:
- 认证(令牌 / 密钥对)
- 权限范围/ACLGateway 不是对所有方法的原始代理)
- 速率限制
## 各组件职责
- **Gateway**:广播发现信标,管理配对决策,并托管 WS 端点。
- **macOS 应用**:帮助您选择 Gateway显示配对提示仅将 SSH 作为回退方案。
- **iOS/Android 节点**:将 Bonjour 浏览作为便捷方式,连接到已配对的 Gateway WS。