Individuazione Bonjour / mDNS
OpenClaw usa Bonjour (mDNS / DNS-SD) per individuare un Gateway attivo (endpoint WebSocket). La navigazione multicastlocal. è una comodità solo LAN. Per l’individuazione tra reti diverse, lo
stesso beacon può anche essere pubblicato tramite un dominio DNS-SD wide-area configurato. L’individuazione
rimane comunque best-effort e non sostituisce la connettività basata su SSH o Tailnet.
Bonjour wide-area (Unicast DNS-SD) su Tailscale
Se il nodo e il gateway si trovano su reti diverse, l’mDNS multicast non attraverserà il confine. Puoi mantenere la stessa UX di individuazione passando a unicast DNS-SD (“Wide-Area Bonjour”) su Tailscale. Passaggi di alto livello:- Esegui un server DNS sull’host gateway (raggiungibile tramite Tailnet).
- Pubblica i record DNS-SD per
_openclaw-gw._tcpsotto una zona dedicata (esempio:openclaw.internal.). - Configura il split DNS di Tailscale in modo che il dominio scelto venga risolto tramite quel server DNS per i client (incluso iOS).
openclaw.internal. è solo un esempio.
I nodi iOS/Android esplorano sia local. sia il dominio wide-area configurato.
Configurazione Gateway (consigliata)
Configurazione iniziale una tantum del server DNS (host gateway)
- ascoltare sulla porta 53 solo sulle interfacce Tailscale del gateway
- servire il dominio scelto (esempio:
openclaw.internal.) da~/.openclaw/dns/<domain>.db
Impostazioni DNS di Tailscale
Nella console di amministrazione Tailscale:- Aggiungi un nameserver che punti all’IP tailnet del gateway (UDP/TCP 53).
- Aggiungi split DNS in modo che il dominio di individuazione usi quel nameserver.
_openclaw-gw._tcp nel dominio di individuazione senza multicast.
Sicurezza del listener Gateway (consigliata)
La porta WS del Gateway (predefinita18789) è associata a loopback per impostazione predefinita. Per l’accesso LAN/tailnet,
esegui un bind esplicito e mantieni l’autenticazione abilitata.
Per configurazioni solo tailnet:
- Imposta
gateway.bind: "tailnet"in~/.openclaw/openclaw.json. - Riavvia il Gateway (oppure riavvia l’app macOS nella barra dei menu).
Cosa viene pubblicizzato
Solo il Gateway pubblicizza_openclaw-gw._tcp.
Tipi di servizio
_openclaw-gw._tcp— beacon di trasporto del gateway (usato dai nodi macOS/iOS/Android).
Chiavi TXT (indizi non segreti)
Il Gateway pubblicizza piccoli indizi non segreti per rendere comodi i flussi UI:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(solo quando TLS è abilitato)gatewayTlsSha256=<sha256>(solo quando TLS è abilitato e l’impronta digitale è disponibile)canvasPort=<port>(solo quando il canvas host è abilitato; attualmente è uguale agatewayPort)transport=gatewaytailnetDns=<magicdns>(indizio facoltativo quando Tailnet è disponibile)sshPort=<port>(solo modalità mDNS full; wide-area DNS-SD può ometterlo)cliPath=<path>(solo modalità mDNS full; wide-area DNS-SD lo scrive comunque come indizio per l’installazione remota)
- I record TXT Bonjour/mDNS sono non autenticati. I client non devono trattare TXT come instradamento autorevole.
- I client dovrebbero instradare usando l’endpoint del servizio risolto (SRV + A/AAAA). Tratta
lanHost,tailnetDns,gatewayPortegatewayTlsSha256solo come indizi. - Anche il targeting automatico SSH dovrebbe usare l’host del servizio risolto, non indizi solo TXT.
- Il pinning TLS non deve mai permettere a un
gatewayTlsSha256pubblicizzato di sovrascrivere un pin precedentemente memorizzato. - I nodi iOS/Android dovrebbero trattare le connessioni dirette basate sull’individuazione come solo TLS e richiedere una conferma esplicita dell’utente prima di fidarsi di un’impronta digitale vista per la prima volta.
Debug su macOS
Strumenti integrati utili:-
Esplora le istanze:
-
Risolvi un’istanza (sostituisci
<instance>):
Debug nei log del Gateway
Il Gateway scrive un file di log a rotazione (stampato all’avvio comegateway log file: ...). Cerca le righe bonjour:, in particolare:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
Debug sul nodo iOS
Il nodo iOS usaNWBrowser per individuare _openclaw-gw._tcp.
Per acquisire i log:
- Impostazioni → Gateway → Avanzate → Log di debug dell’individuazione
- Impostazioni → Gateway → Avanzate → Log di individuazione → riproduci → Copia
Modalità di errore comuni
- Bonjour non attraversa le reti: usa Tailnet o SSH.
- Multicast bloccato: alcune reti Wi-Fi disabilitano mDNS.
- Sleep / cambiamenti delle interfacce: macOS può temporaneamente perdere i risultati mDNS; riprova.
- L’esplorazione funziona ma la risoluzione fallisce: mantieni semplici i nomi delle macchine (evita emoji o punteggiatura), poi riavvia il Gateway. Il nome dell’istanza del servizio deriva dal nome host, quindi nomi eccessivamente complessi possono confondere alcuni resolver.
Nomi di istanza con escape (\032)
Bonjour/DNS-SD spesso rappresenta i byte nei nomi di istanza del servizio con sequenze decimali \DDD
(ad esempio gli spazi diventano \032).
- Questo è normale a livello di protocollo.
- Le UI dovrebbero decodificarli per la visualizzazione (iOS usa
BonjourEscapes.decode).
Disabilitazione / configurazione
OPENCLAW_DISABLE_BONJOUR=1disabilita la pubblicazione (legacy:OPENCLAW_DISABLE_BONJOUR).gateway.bindin~/.openclaw/openclaw.jsoncontrolla la modalità di bind del Gateway.OPENCLAW_SSH_PORTsovrascrive la porta SSH quandosshPortviene pubblicizzato (legacy:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSpubblica un indizio MagicDNS in TXT (legacy:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHsovrascrive il percorso CLI pubblicizzato (legacy:OPENCLAW_CLI_PATH).
Documentazione correlata
- Policy di individuazione e selezione del trasporto: Discovery
- Pairing + approvazioni dei nodi: Gateway pairing