Gateway
Descubrimiento y transportes
OpenClaw tiene dos problemas de descubrimiento relacionados pero distintos:
- Control remoto del operador: la aplicación de la barra de menús de macOS controla un Gateway que se ejecuta en otro lugar.
- Emparejamiento de nodos: iOS/Android (y futuros nodos) encuentran un Gateway y se emparejan de forma segura.
Todo el descubrimiento y la publicidad de red residen en el Gateway del Node
(openclaw gateway); los clientes (aplicación para Mac, iOS) son únicamente consumidores.
Términos
- Gateway: un único proceso de larga duración que posee el estado (sesiones, emparejamiento, registro de nodos) y ejecuta canales. La mayoría de las configuraciones usan uno por host; es posible tener configuraciones aisladas con varios Gateway.
- WS del Gateway (plano de control): el endpoint WebSocket en
127.0.0.1:18789de forma predeterminada; vincúlelo a la LAN/tailnet mediantegateway.bind. - Transporte WS directo: un endpoint WS del Gateway accesible desde la LAN/tailnet (sin SSH).
- Transporte SSH (alternativa): control remoto mediante el reenvío de
127.0.0.1:18789a través de SSH. - Puente TCP heredado (eliminado): transporte de nodos anterior (consulte Protocolo del puente); ya no se anuncia para el descubrimiento ni forma parte de las compilaciones actuales.
Detalles del protocolo: Protocolo del Gateway, Protocolo del puente (heredado).
Por qué existen tanto la conexión directa como SSH
- WS directo ofrece la mejor experiencia de usuario en la misma red y dentro de una tailnet: descubrimiento automático en la LAN mediante Bonjour, tokens de emparejamiento y ACL bajo el control del Gateway, sin necesidad de acceso al shell.
- SSH es la alternativa universal: funciona en cualquier lugar donde se tenga acceso SSH, incluso entre redes no relacionadas, resiste problemas de multidifusión/mDNS y no necesita ningún puerto de entrada nuevo aparte de SSH.
Entradas de descubrimiento
1) Bonjour / DNS-SD
Bonjour por multidifusión funciona según disponibilidad y no atraviesa redes. OpenClaw también
permite explorar la misma baliza del Gateway mediante un dominio DNS-SD de área amplia
configurado, por lo que el descubrimiento puede abarcar tanto local. en la misma LAN como un dominio
DNS-SD unidifusión configurado para el descubrimiento entre redes.
El Gateway anuncia su endpoint WS mediante Bonjour cuando el Plugin
bonjour incluido está habilitado; los clientes exploran y muestran una lista para «elegir un Gateway»,
y después almacenan el endpoint seleccionado.
Solución de problemas y detalles de la baliza: Bonjour.
Detalles de la baliza de servicio
-
Tipo de servicio:
_openclaw-gw._tcp(baliza de transporte del Gateway). -
Claves TXT (no secretas):
Clave Notas role=gatewaySiempre presente. transport=gatewaySiempre presente. displayName=<name>Nombre para mostrar configurado por el operador. lanHost=<hostname>.localSolo el anunciador mDNS de la LAN; DNS-SD de área amplia no la escribe. gatewayPort=18789Puerto WS + HTTP del Gateway. gatewayTls=1Solo cuando TLS está habilitado. gatewayTlsSha256=<sha256>Solo cuando TLS está habilitado y hay una huella digital disponible. tailnetDns=<magicdns>Indicación opcional; se detecta automáticamente cuando Tailscale está disponible. sshPort=<port>Presente solo cuando discovery.mdns.mode="full"; se omite (SSH usa22de forma predeterminada) en el modo"minimal"predeterminado, tanto en el anunciador de la LAN como en DNS-SD de área amplia.cliPath=<path>La misma condición discovery.mdns.mode="full"quesshPort; una indicación de instalación remota para la ruta de la CLI.En el contrato de descubrimiento del Plugin se define una clave TXT
canvasPortpara un futuro puerto de host del lienzo, pero ninguna ruta de código actual establece un valor, por lo que actualmente nunca se emite.
Notas de seguridad:
- Los registros TXT de Bonjour/mDNS no están autenticados. Los clientes deben tratar los valores TXT únicamente como indicaciones para la experiencia de usuario.
- El enrutamiento (host/puerto) debe dar preferencia al endpoint de servicio resuelto
(SRV + A/AAAA) sobre
lanHost,tailnetDnsogatewayPortproporcionados mediante TXT. - La fijación de TLS nunca debe permitir que un
gatewayTlsSha256anunciado sustituya una fijación almacenada previamente. - Los nodos iOS/Android deben exigir una confirmación explícita para «confiar en esta huella digital» antes de almacenar una fijación por primera vez (verificación fuera de banda) siempre que la ruta elegida sea segura o esté basada en TLS.
Habilitación, deshabilitación y sobrescritura:
openclaw plugins enable bonjourhabilita la publicidad por multidifusión en la LAN.discovery.mdns.modeenopenclaw.jsoncontrola la difusión mDNS:"minimal"(predeterminado),"full"(añadecliPath/sshPorttanto a la baliza de la LAN como a cualquier zona DNS-SD de área amplia) o"off"(deshabilita mDNS).OPENCLAW_DISABLE_BONJOUR=1deshabilita forzosamente la publicidad;discovery.mdns.mode="off"la deshabilita de forma independiente.OPENCLAW_DISABLE_BONJOUR=0es una activación explícita que anula la deshabilitación automática del Plugin dentro de un contenedor detectado (Docker, containerd, Kubernetes, LXC); no anuladiscovery.mdns.mode="off". El Pluginbonjourincluido se inicia automáticamente en hosts macOS (enabledByDefaultOnPlatforms: ["darwin"]) y se deshabilita automáticamente dentro de contenedores detectados; las implementaciones en Linux, Windows y otros entornos en contenedores necesitanplugins enable bonjourde forma explícita.gateway.binden~/.openclaw/openclaw.jsoncontrola el modo de vinculación del Gateway.OPENCLAW_SSH_PORTsobrescribe el puerto SSH anunciado (solo tiene efecto cuandodiscovery.mdns.mode="full").OPENCLAW_TAILNET_DNSpublica una indicacióntailnetDns(MagicDNS).OPENCLAW_CLI_PATHsobrescribe la ruta de la CLI anunciada.
2) Tailnet (entre redes)
Para los Gateway ubicados en redes físicas diferentes, Bonjour no será útil. El destino directo recomendado es un nombre MagicDNS de Tailscale (preferido) o una IP estable de la tailnet.
Si el Gateway detecta que se ejecuta bajo Tailscale, publica
tailnetDns como indicación opcional para los clientes (incluidas las balizas de área amplia).
La aplicación de macOS prefiere los nombres MagicDNS a las direcciones IP de Tailscale sin procesar para el
descubrimiento del Gateway, que sigue siendo fiable cuando cambian las IP de la tailnet (reinicios de nodos,
reasignación de CGNAT), ya que MagicDNS resuelve automáticamente a la IP actual.
Para el emparejamiento de nodos móviles, las indicaciones de descubrimiento nunca reducen la seguridad del transporte en rutas de tailnet/públicas:
- iOS/Android siguen requiriendo una ruta segura para la primera conexión mediante tailnet/pública
(
wss://o Tailscale Serve/Funnel). - Una IP de tailnet sin procesar descubierta es una indicación de enrutamiento, no un permiso para usar
ws://remoto sin cifrar. - La conexión directa mediante
ws://en una LAN privada sigue siendo compatible. - Para obtener la ruta de Tailscale más sencilla en nodos móviles, use Tailscale Serve para que tanto el descubrimiento como la configuración se resuelvan al mismo endpoint MagicDNS seguro.
3) Destino manual / SSH
Cuando no existe una ruta directa (o la conexión directa está deshabilitada), los clientes siempre pueden conectarse mediante SSH reenviando el puerto del Gateway de bucle invertido. Consulte Acceso remoto.
Selección del transporte (política del cliente)
- Si se configura un endpoint directo emparejado y se puede acceder a él, úselo.
- De lo contrario, si el descubrimiento encuentra un Gateway en
local.o en el dominio de área amplia configurado, ofrezca una opción de un toque «Usar este Gateway» y guárdela como endpoint directo. - De lo contrario, si se configura una DNS/IP de tailnet, intente la conexión directa. Para los nodos móviles en
rutas de tailnet/públicas, «directa» significa un endpoint seguro, no
ws://remoto sin cifrar. - De lo contrario, recurra a SSH.
Emparejamiento y autenticación (transporte directo)
El Gateway es la fuente de verdad para la admisión de nodos/clientes:
- Las solicitudes de emparejamiento se crean/aprueban/rechazan en el Gateway (consulte Emparejamiento del Gateway).
- El Gateway aplica la autenticación (token/par de claves), los ámbitos/ACL (no es un proxy sin restricciones para todos los métodos) y los límites de frecuencia.
Responsabilidades por componente
- Gateway: anuncia balizas de descubrimiento, controla las decisiones de emparejamiento y aloja el endpoint WS.
- Aplicación de macOS: ayuda a elegir un Gateway, muestra solicitudes de emparejamiento y usa SSH solo como alternativa.
- Nodos iOS/Android: exploran Bonjour para mayor comodidad y se conectan al WS del Gateway emparejado.