Descoberta Bonjour / mDNS
O OpenClaw usa Bonjour (mDNS / DNS‑SD) como uma conveniência apenas para LAN para descobrir um Gateway ativo (endpoint WebSocket). É de melhor esforço e não substitui SSH nem conectividade baseada em Tailnet.Bonjour de área ampla (DNS‑SD unicast) sobre Tailscale
Se o nó e o gateway estiverem em redes diferentes, o mDNS multicast não atravessa a fronteira. Você pode manter a mesma UX de descoberta mudando para DNS‑SD unicast (“Bonjour de Área Ampla”) sobre o Tailscale. Passos em alto nível:- Execute um servidor DNS no host do gateway (acessível pela Tailnet).
- Publique registros DNS‑SD para
_openclaw-gw._tcpsob uma zona dedicada (exemplo:openclaw.internal.). - Configure DNS dividido do Tailscale para que o domínio escolhido resolva por esse servidor DNS para os clientes (incluindo iOS).
openclaw.internal. é apenas um exemplo.
Nós iOS/Android navegam tanto por local. quanto pelo domínio de área ampla configurado.
Configuração do Gateway (recomendado)
Configuração única do servidor DNS (host do gateway)
- escutar na porta 53 apenas nas interfaces Tailscale do gateway
- servir o domínio escolhido (exemplo:
openclaw.internal.) a partir de~/.openclaw/dns/<domain>.db
Configurações de DNS do Tailscale
No console de administração do Tailscale:- Adicione um servidor de nomes apontando para o IP da tailnet do gateway (UDP/TCP 53).
- Adicione DNS dividido para que o domínio de descoberta use esse servidor de nomes.
_openclaw-gw._tcp no seu domínio de descoberta sem multicast.
Segurança do listener do Gateway (recomendado)
A porta WS do Gateway (padrão18789) vincula-se ao loopback por padrão. Para acesso
LAN/tailnet, faça o bind explicitamente e mantenha a autenticação habilitada.
Para configurações somente de tailnet:
- Defina
gateway.bind: "tailnet"em~/.openclaw/openclaw.json. - Reinicie o Gateway (ou reinicie o app de menubar do macOS).
O que anuncia
Apenas o Gateway anuncia_openclaw-gw._tcp.
Tipos de serviço
_openclaw-gw._tcp— beacon de transporte do gateway (usado por nós macOS/iOS/Android).
Chaves TXT (dicas não secretas)
O Gateway anuncia pequenas dicas não secretas para tornar os fluxos de UI convenientes:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(apenas quando TLS está habilitado)gatewayTlsSha256=<sha256>(apenas quando TLS está habilitado e a impressão digital está disponível)canvasPort=<port>(apenas quando o host do canvas está habilitado; padrão18793)sshPort=<port>(padrão 22 quando não sobrescrito)transport=gatewaycliPath=<path>(opcional; caminho absoluto para um entrypoint executávelopenclaw)tailnetDns=<magicdns>(dica opcional quando a Tailnet está disponível)
- Registros TXT do Bonjour/mDNS são não autenticados. Os clientes não devem tratar o TXT como roteamento autoritativo.
- Os clientes devem rotear usando o endpoint de serviço resolvido (SRV + A/AAAA). Trate
lanHost,tailnetDns,gatewayPortegatewayTlsSha256apenas como sugestões. - O TLS pinning nunca deve permitir que um
gatewayTlsSha256anunciado substitua um pin previamente armazenado. - Nós iOS/Android devem tratar conexões diretas baseadas em descoberta como somente TLS e exigir confirmação explícita do usuário antes de confiar em uma impressão digital vista pela primeira vez.
Depuração no macOS
Ferramentas internas úteis:-
Procurar instâncias:
-
Resolver uma instância (substitua
<instance>):
Depuração nos logs do Gateway
O Gateway grava um arquivo de log rotativo (impresso na inicialização comogateway log file: ...). Procure por linhas bonjour:, especialmente:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
Depuração no nó iOS
O nó iOS usaNWBrowser para descobrir _openclaw-gw._tcp.
Para capturar logs:
- Ajustes → Gateway → Avançado → Logs de depuração de descoberta
- Ajustes → Gateway → Avançado → Logs de descoberta → reproduzir → Copiar
Modos de falha comuns
- Bonjour não cruza redes: use Tailnet ou SSH.
- Multicast bloqueado: algumas redes Wi‑Fi desativam mDNS.
- Suspensão / troca de interfaces: o macOS pode derrubar temporariamente resultados mDNS; tente novamente.
- Navegar funciona mas resolver falha: mantenha nomes de máquina simples (evite emojis ou pontuação) e reinicie o Gateway. O nome da instância do serviço deriva do nome do host, então nomes excessivamente complexos podem confundir alguns resolvedores.
Nomes de instância escapados (\032)
O Bonjour/DNS‑SD frequentemente escapa bytes em nomes de instância de serviço como sequências
decimais \DDD (por exemplo, espaços viram \032).
- Isso é normal no nível do protocolo.
- UIs devem decodificar para exibição (o iOS usa
BonjourEscapes.decode).
Desativação / configuração
OPENCLAW_DISABLE_BONJOUR=1desativa a divulgação (legado:OPENCLAW_DISABLE_BONJOUR).gateway.bindem~/.openclaw/openclaw.jsoncontrola o modo de bind do Gateway.OPENCLAW_SSH_PORTsobrescreve a porta SSH anunciada no TXT (legado:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSpublica uma dica de MagicDNS no TXT (legado:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHsobrescreve o caminho da CLI anunciada (legado:OPENCLAW_CLI_PATH).
Documentos relacionados
- Política de descoberta e seleção de transporte: Discovery
- Pareamento de nós + aprovações: Gateway pairing