OpenClaw 使用 Bonjour(mDNS/DNS-SD)发现活跃 Gateway(WebSocket 端点)。LAN 多播是仅局域网的便利功能,不替代 SSH 或 Tailnet 连接。
服务类型
_openclaw-gw._tcp:Gateway 传输信标(macOS/iOS/Android 节点使用)
TXT 记录(非密钥提示)
| 键 | 说明 |
|---|---|
role=gateway | 角色标识 |
displayName | 友好名称 |
gatewayPort | Gateway WS + HTTP 端口 |
gatewayTls=1 | TLS 启用时 |
gatewayTlsSha256 | TLS 指纹(仅提示,不可作为权威 pin) |
transport=gateway | 传输类型 |
安全注意:mDNS TXT 记录未经认证,客户端不得将其视为权威路由依据。
广域 Bonjour(跨网络)
跨网络时 mDNS 多播无法穿越,可使用 Tailscale 上的单播 DNS-SD:
{
gateway: { bind: "tailnet" },
discovery: { wideArea: { enabled: true } },
}一次性 DNS 服务器配置:
openclaw dns setup --apply启用/禁用
- macOS 主机默认自动启动 Bonjour 插件
- Linux/Windows/容器:
openclaw plugins enable bonjour - 禁用:
openclaw plugins disable bonjour - 临时禁用(不改配置):
OPENCLAW_DISABLE_BONJOUR=1
Docker 注意事项
容器内自动禁用 LAN 多播广告(Docker bridge 网络通常不转发 mDNS 多播)。需要时设置 OPENCLAW_DISABLE_BONJOUR=0(仅 host networking 或 macvlan 等支持 mDNS 的网络)。
调试
# macOS 浏览实例
dns-sd -B _openclaw-gw._tcp local.
# 解析实例
dns-sd -L "<instance>" _openclaw-gw._tcp local.Gateway 日志中查找 bonjour: 前缀行,特别是 advertise failed、watchdog detected 等。
常见故障
- 不跨网络:使用 Tailnet 或 SSH
- 多播被阻:部分 Wi-Fi 禁用 mDNS
- Docker bridge:Bonjour 自动禁用,使用直连或 Tailnet
- 浏览成功但解析失败:机器名避免使用特殊字符