Descubrimiento Bonjour / mDNS
OpenClaw usa Bonjour (mDNS / DNS‑SD) para descubrir un Gateway activo (endpoint WebSocket). La exploración multicast delocal. es una comodidad solo para LAN. Para el descubrimiento entre redes, el
mismo beacon también puede publicarse mediante un dominio DNS-SD de área amplia configurado. El descubrimiento
sigue siendo de mejor esfuerzo y no sustituye la conectividad basada en SSH o Tailnet.
Bonjour de área amplia (DNS-SD unicast) sobre Tailscale
Si el nodo y el gateway están en redes distintas, el mDNS multicast no cruzará el límite. Puedes mantener la misma experiencia de descubrimiento cambiando a DNS‑SD unicast (“Bonjour de área amplia”) sobre Tailscale. Pasos de alto nivel:- Ejecuta un servidor DNS en el host del gateway (accesible a través de la Tailnet).
- Publica registros DNS‑SD para
_openclaw-gw._tcpbajo una zona dedicada (ejemplo:openclaw.internal.). - Configura el split DNS de Tailscale para que tu dominio elegido se resuelva mediante ese servidor DNS para los clientes (incluido iOS).
openclaw.internal. es solo un ejemplo.
Los nodos iOS/Android exploran tanto local. como el dominio de área amplia configurado.
Configuración del Gateway (recomendada)
Configuración única del servidor DNS (host del gateway)
- escuchar en el puerto 53 solo en las interfaces Tailscale del gateway
- servir tu dominio elegido (ejemplo:
openclaw.internal.) desde~/.openclaw/dns/<domain>.db
Configuración DNS de Tailscale
En la consola de administración de Tailscale:- Añade un nameserver que apunte a la IP tailnet del gateway (UDP/TCP 53).
- Añade split DNS para que tu dominio de descubrimiento use ese nameserver.
_openclaw-gw._tcp en tu dominio de descubrimiento sin multicast.
Seguridad del listener del Gateway (recomendada)
El puerto WS del Gateway (predeterminado18789) se vincula a loopback de forma predeterminada. Para acceso por LAN/tailnet,
vincúlalo explícitamente y mantén la autenticación habilitada.
Para configuraciones solo de tailnet:
- Configura
gateway.bind: "tailnet"en~/.openclaw/openclaw.json. - Reinicia el Gateway (o reinicia la app de barra de menús de macOS).
Qué se anuncia
Solo el Gateway anuncia_openclaw-gw._tcp.
Tipos de servicio
_openclaw-gw._tcp— beacon de transporte del gateway (usado por nodos macOS/iOS/Android).
Claves TXT (pistas no secretas)
El Gateway anuncia pequeñas pistas no secretas para hacer cómodos los flujos de UI:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(solo cuando TLS está habilitado)gatewayTlsSha256=<sha256>(solo cuando TLS está habilitado y la huella digital está disponible)canvasPort=<port>(solo cuando el host de canvas está habilitado; actualmente es el mismo quegatewayPort)transport=gatewaytailnetDns=<magicdns>(pista opcional cuando Tailnet está disponible)sshPort=<port>(solo en modo mDNS completo; DNS-SD de área amplia puede omitirlo)cliPath=<path>(solo en modo mDNS completo; DNS-SD de área amplia sigue escribiéndolo como pista para instalación remota)
- Los registros TXT de Bonjour/mDNS son no autenticados. Los clientes no deben tratar TXT como enrutamiento autoritativo.
- Los clientes deben enrutar usando el endpoint de servicio resuelto (SRV + A/AAAA). Trata
lanHost,tailnetDns,gatewayPortygatewayTlsSha256solo como pistas. - El direccionamiento automático por SSH debe usar igualmente el host del servicio resuelto, no pistas basadas solo en TXT.
- La fijación de TLS nunca debe permitir que un
gatewayTlsSha256anunciado anule una fijación almacenada previamente. - Los nodos iOS/Android deben tratar las conexiones directas basadas en descubrimiento como solo TLS y requerir confirmación explícita del usuario antes de confiar en una huella digital por primera vez.
Depuración en macOS
Herramientas integradas útiles:-
Explorar instancias:
-
Resolver una instancia (sustituye
<instance>):
Depuración en logs del Gateway
El Gateway escribe un archivo de log rotativo (impreso al iniciar comogateway log file: ...). Busca líneas bonjour:, en especial:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
Depuración en nodos iOS
El nodo iOS usaNWBrowser para descubrir _openclaw-gw._tcp.
Para capturar logs:
- Settings → Gateway → Advanced → Discovery Debug Logs
- Settings → Gateway → Advanced → Discovery Logs → reproduce → Copy
Modos de fallo habituales
- Bonjour no cruza redes: usa Tailnet o SSH.
- Multicast bloqueado: algunas redes Wi‑Fi deshabilitan mDNS.
- Reposo / cambios de interfaz: macOS puede eliminar temporalmente resultados mDNS; reintenta.
- La exploración funciona pero la resolución falla: mantén simples los nombres de máquina (evita emojis o puntuación), luego reinicia el Gateway. El nombre de instancia del servicio se deriva del nombre del host, así que los nombres demasiado complejos pueden confundir a algunos resolvedores.
Nombres de instancia escapados (\032)
Bonjour/DNS‑SD suele escapar bytes en nombres de instancia de servicio como secuencias decimales \DDD
(por ejemplo, los espacios se convierten en \032).
- Esto es normal a nivel de protocolo.
- Las interfaces deben decodificar para mostrar (iOS usa
BonjourEscapes.decode).
Deshabilitación / configuración
OPENCLAW_DISABLE_BONJOUR=1deshabilita la publicación (heredado:OPENCLAW_DISABLE_BONJOUR).gateway.binden~/.openclaw/openclaw.jsoncontrola el modo de vínculo del Gateway.OPENCLAW_SSH_PORTanula el puerto SSH cuando se anunciasshPort(heredado:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSpublica una pista MagicDNS en TXT (heredado:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHanula la ruta de CLI anunciada (heredado:OPENCLAW_CLI_PATH).
Documentación relacionada
- Política de descubrimiento y selección de transporte: Discovery
- Emparejamiento y aprobaciones de nodos: Emparejamiento del Gateway