跳转到内容

Bonjour / mDNS 发现 (Bonjour / mDNS discovery)

OpenClaw 使用 Bonjour (mDNS / DNS‑SD) 作为 仅限 LAN 的便利功能 来发现活动的 Gateway(WebSocket 端点)。它是尽力而为的, 取代 SSH 或基于 Tailnet 的连接。

通过 Tailscale 的广域 Bonjour (单播 DNS‑SD)

Section titled “通过 Tailscale 的广域 Bonjour (单播 DNS‑SD)”

如果节点和 Gateway 位于不同的网络上,多播 mDNS 将无法跨越边界。您可以通过切换到 Tailscale 上的 单播 DNS‑SD(“广域 Bonjour”)来保持相同的发现体验。

高级步骤:

  1. 在 Gateway 主机上运行 DNS 服务器(通过 Tailnet 可达)。
  2. _openclaw-gw._tcp 在专用区域下发布 DNS‑SD 记录(例如:openclaw.internal.)。
  3. 配置 Tailscale 拆分 DNS,以便您选择的域通过该 DNS 服务器为客户端(包括 iOS)解析。

OpenClaw 支持任何发现域;openclaw.internal. 只是一个示例。iOS/Android 节点会浏览 local. 和您配置的广域域。

{
gateway: { bind: "tailnet" }, // 仅 tailnet (推荐)
discovery: { wideArea: { enabled: true } } // 启用广域 DNS-SD 发布
}

一次性 DNS 服务器设置 (Gateway 主机)

Section titled “一次性 DNS 服务器设置 (Gateway 主机)”
Terminal window
openclaw dns setup --apply

这将安装 CoreDNS 并将其配置为:

  • 仅在 Gateway 的 Tailscale 接口上监听端口 53
  • ~/.openclaw/dns/<domain>.db 提供您选择的域(例如:openclaw.internal.

从连接 tailnet 的机器验证:

Terminal window
dns-sd -B _openclaw-gw._tcp openclaw.internal.
dig @<TAILNET_IPV4> -p 53 _openclaw-gw._tcp.openclaw.internal PTR +short

在 Tailscale 管理控制台中:

  • 添加指向 Gateway tailnet IP (UDP/TCP 53) 的域名服务器。
  • 添加拆分 DNS,以便您的发现域使用该域名服务器。

一旦客户端接受 tailnet DNS,iOS 节点就可以在您的发现域中浏览 _openclaw-gw._tcp,而无需多播。

Gateway WS 端口(默认 18789)默认绑定到环回接口。对于 LAN/tailnet 访问,请显式绑定并保持启用身份验证。

对于仅 tailnet 设置:

  • ~/.openclaw/openclaw.json 中设置 gateway.bind: "tailnet"
  • 重启 Gateway(或重启 macOS 菜单栏应用程序)。

只有 Gateway 会广播 _openclaw-gw._tcp

  • _openclaw-gw._tcp — Gateway 传输信标(由 macOS/iOS/Android 节点使用)。

Gateway 会广播小的非机密提示,以使 UI 流程更方便:

  • role=gateway
  • displayName=<friendly name>
  • lanHost=<hostname>.local
  • gatewayPort=<port> (Gateway WS + HTTP)
  • gatewayTls=1 (仅当启用 TLS 时)
  • gatewayTlsSha256=<sha256> (仅当启用 TLS 且指纹可用时)
  • canvasPort=<port> (仅当启用 canvas 主机时; 默认 18793)
  • sshPort=<port> (未覆盖时默认为 22)
  • transport=gateway
  • cliPath=<path> (可选; 可运行 openclaw 入口点的绝对路径)
  • tailnetDns=<magicdns> (Tailnet 可用时的可选提示)

浏览广播的服务:

Terminal window
dns-sd -B _openclaw-gw._tcp