OpenClaw może używać Bonjour (mDNS / DNS-SD) do wykrywania aktywnego Gateway (punktu końcowego WebSocket). Przeglądanie multicastDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
local. to udogodnienie wyłącznie w LAN. Dołączony
plugin bonjour odpowiada za ogłaszanie w LAN. Uruchamia się automatycznie na hostach macOS i wymaga włączenia na
Linux, Windows oraz w kontenerowych wdrożeniach Gateway. W przypadku wykrywania między sieciami ten sam
beacon może być także publikowany przez skonfigurowaną domenę wide-area DNS-SD. Wykrywanie
nadal działa na zasadzie best-effort i nie zastępuje łączności opartej na SSH ani Tailnet.
Wide-area Bonjour (Unicast DNS-SD) przez Tailscale
Jeśli węzeł i gateway są w różnych sieciach, multicast mDNS nie przejdzie przez granicę. Możesz zachować ten sam UX wykrywania, przełączając się na unicast DNS-SD („Wide-Area Bonjour”) przez Tailscale. Kroki ogólne:- Uruchom serwer DNS na hoście gateway (osiągalny przez Tailnet).
- Opublikuj rekordy DNS-SD dla
_openclaw-gw._tcpw dedykowanej strefie (przykład:openclaw.internal.). - Skonfiguruj Tailscale split DNS, aby wybrana domena była rozwiązywana przez ten serwer DNS dla klientów (w tym iOS).
openclaw.internal. to tylko przykład.
Węzły iOS/Android przeglądają zarówno local., jak i skonfigurowaną domenę wide-area.
Konfiguracja Gateway (zalecana)
Jednorazowa konfiguracja serwera DNS (host gateway)
- nasłuchiwał na porcie 53 tylko na interfejsach Tailscale gateway
- obsługiwał wybraną domenę (przykład:
openclaw.internal.) z~/.openclaw/dns/<domain>.db
Ustawienia DNS Tailscale
W konsoli administracyjnej Tailscale:- Dodaj serwer nazw wskazujący adres IP tailnet gateway (UDP/TCP 53).
- Dodaj split DNS, aby domena wykrywania używała tego serwera nazw.
_openclaw-gw._tcp w domenie wykrywania bez multicast.
Bezpieczeństwo listenera Gateway (zalecane)
Port WS Gateway (domyślnie18789) domyślnie wiąże się z loopback. W przypadku dostępu
LAN/tailnet ustaw wiązanie jawnie i pozostaw uwierzytelnianie włączone.
Dla konfiguracji tylko tailnet:
- Ustaw
gateway.bind: "tailnet"w~/.openclaw/openclaw.json. - Uruchom ponownie Gateway (lub aplikację paska menu macOS).
Co ogłasza usługi
Tylko Gateway ogłasza_openclaw-gw._tcp. Ogłaszanie multicast w LAN jest
zapewniane przez dołączony plugin bonjour, gdy plugin jest włączony; publikowanie
wide-area DNS-SD pozostaje własnością Gateway.
Typy usług
_openclaw-gw._tcp- beacon transportowy gateway (używany przez węzły macOS/iOS/Android).
Klucze TXT (niesekretne wskazówki)
Gateway ogłasza małe, niesekretne wskazówki, aby ułatwić przepływy UI:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(tylko gdy TLS jest włączony)gatewayTlsSha256=<sha256>(tylko gdy TLS jest włączony i odcisk palca jest dostępny)canvasPort=<port>(tylko gdy host canvas jest włączony; obecnie taki sam jakgatewayPort)transport=gatewaytailnetDns=<magicdns>(tylko pełny tryb mDNS, opcjonalna wskazówka, gdy Tailnet jest dostępny)sshPort=<port>(tylko pełny tryb; pomijane w trybach minimalnym i wyłączonym)cliPath=<path>(tylko pełny tryb; pomijane w trybach minimalnym i wyłączonym)
- Rekordy TXT Bonjour/mDNS są nieuwierzytelnione. Klienci nie mogą traktować TXT jako autorytatywnego źródła trasowania.
- Klienci powinni trasować z użyciem rozwiązanego punktu końcowego usługi (SRV + A/AAAA). Traktuj
lanHost,tailnetDns,gatewayPortigatewayTlsSha256wyłącznie jako wskazówki. - Automatyczne wybieranie celu SSH powinno podobnie używać rozwiązanego hosta usługi, a nie wskazówek wyłącznie z TXT.
- Przypinanie TLS nigdy nie może pozwolić, aby ogłoszony
gatewayTlsSha256nadpisał wcześniej zapisany pin. - Węzły iOS/Android powinny traktować bezpośrednie połączenia oparte na wykrywaniu jako wyłącznie TLS i wymagać jawnego potwierdzenia użytkownika przed zaufaniem pierwszemu odciskowi palca.
Debugowanie na macOS
Przydatne wbudowane narzędzia:-
Przeglądanie instancji:
-
Rozwiązanie jednej instancji (zastąp
<instance>):
Debugowanie w logach Gateway
Gateway zapisuje rotowany plik logu (wypisywany przy starcie jakogateway log file: ...). Szukaj wierszy bonjour:, zwłaszcza:
bonjour: advertise failed ...bonjour: suppressing ciao cancellation ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...bonjour: disabling advertiser after ... failed restarts ...
probing, announcing i świeże zmiany nazw po konfliktach jako
stany w toku. Jeśli usługa nigdy nie osiągnie announced, OpenClaw ostatecznie
odtwarza advertiser i, po powtarzających się niepowodzeniach, wyłącza Bonjour dla tego
procesu Gateway zamiast ogłaszać usługę w nieskończoność.
Bonjour używa systemowej nazwy hosta dla ogłaszanego hosta .local, gdy jest ona
prawidłową etykietą DNS. Jeśli systemowa nazwa hosta zawiera spacje, podkreślenia lub inny
nieprawidłowy znak etykiety DNS, OpenClaw przechodzi na openclaw.local. Ustaw
OPENCLAW_MDNS_HOSTNAME=<name> przed uruchomieniem Gateway, gdy potrzebujesz
jawnej etykiety hosta.
Debugowanie na węźle iOS
Węzeł iOS używaNWBrowser do wykrywania _openclaw-gw._tcp.
Aby przechwycić logi:
- Settings → Gateway → Advanced → Discovery Debug Logs
- Settings → Gateway → Advanced → Discovery Logs → odtwórz problem → Copy
Kiedy włączyć Bonjour
Bonjour uruchamia się automatycznie przy starcie Gateway z pustą konfiguracją na hostach macOS, ponieważ lokalna aplikacja oraz pobliskie węzły iOS/Android często polegają na wykrywaniu w tej samej sieci LAN. Włącz Bonjour jawnie, gdy automatyczne wykrywanie w tej samej sieci LAN jest przydatne na Linux, Windows lub innym hoście innym niż macOS:discovery.mdns.mode, aby zdecydować, ile metadanych TXT
opublikować. Ten sam tryb kontroluje opcjonalne wskazówki TXT w rekordach wide-area DNS-SD.
Domyślny tryb to minimal; używaj full tylko wtedy, gdy klienci potrzebują wskazówek cliPath lub
sshPort. Użyj off, aby wyłączyć multicast LAN bez zmiany
włączenia pluginu; wide-area DNS-SD nadal może publikować minimalny beacon Gateway, gdy
discovery.wideArea.enabled ma wartość true.
Kiedy wyłączyć Bonjour
Pozostaw Bonjour wyłączony, gdy ogłaszanie multicast w LAN jest niepotrzebne, niedostępne lub szkodliwe. Typowe przypadki to serwery inne niż macOS, sieci mostkowane Docker, WSL albo polityka sieciowa, która odrzuca multicast mDNS. W tych środowiskach Gateway nadal jest osiągalny przez opublikowany URL, SSH, Tailnet lub wide-area DNS-SD, ale automatyczne wykrywanie w LAN nie jest niezawodne. Preferuj istniejące nadpisanie środowiskowe, gdy problem dotyczy zakresu wdrożenia:Pułapki Docker
Dołączony plugin Bonjour automatycznie wyłącza ogłaszanie multicast w LAN w wykrytych kontenerach, gdyOPENCLAW_DISABLE_BONJOUR nie jest ustawione. Sieci mostkowane Docker
zwykle nie przekazują multicast mDNS (224.0.0.251:5353) między kontenerem
a LAN, więc ogłaszanie z kontenera rzadko sprawia, że wykrywanie działa.
Ważne pułapki:
- Bonjour uruchamia się automatycznie na hostach macOS i wymaga włączenia gdzie indziej. Pozostawienie go wyłączonego nie zatrzymuje Gateway; jedynie pomija ogłaszanie multicast w LAN.
- Wyłączenie Bonjour nie zmienia
gateway.bind; Docker nadal domyślnie używaOPENCLAW_GATEWAY_BIND=lan, aby opublikowany port hosta mógł działać. - Wyłączenie Bonjour nie wyłącza wide-area DNS-SD. Użyj wykrywania wide-area lub Tailnet, gdy Gateway i węzeł nie są w tej samej sieci LAN.
- Ponowne użycie tego samego
OPENCLAW_CONFIG_DIRpoza Docker nie utrwala polityki automatycznego wyłączenia kontenera. - Ustaw
OPENCLAW_DISABLE_BONJOUR=0tylko dla sieci hosta, macvlan lub innej sieci, w której wiadomo, że multicast mDNS przechodzi; ustaw1, aby wymusić wyłączenie.
Rozwiązywanie problemów z wyłączonym Bonjour
Jeśli węzeł nie wykrywa już automatycznie Gateway po konfiguracji Docker:-
Potwierdź, czy Gateway działa w trybie automatycznym, wymuszonego włączenia czy wymuszonego wyłączenia:
-
Potwierdź, że sam Gateway jest osiągalny przez opublikowany port:
-
Użyj bezpośredniego celu, gdy Bonjour jest wyłączony:
- UI sterowania lub narzędzia lokalne:
http://127.0.0.1:18789 - Klienci LAN:
http://<gateway-host>:18789 - Klienci między sieciami: Tailnet MagicDNS, IP Tailnet, tunel SSH lub wide-area DNS-SD
- UI sterowania lub narzędzia lokalne:
-
Jeśli celowo włączyłeś plugin Bonjour w Docker i wymusiłeś ogłaszanie
za pomocą
OPENCLAW_DISABLE_BONJOUR=0, przetestuj multicast z hosta:Jeśli przeglądanie jest puste albo logi Gateway pokazują powtarzające się anulowania watchdog ciao, przywróćOPENCLAW_DISABLE_BONJOUR=1i użyj bezpośredniej trasy lub trasy Tailnet.
Typowe tryby awarii
- Bonjour nie działa między sieciami: użyj Tailnet lub SSH.
- Multicast zablokowany: niektóre sieci Wi-Fi wyłączają mDNS.
- Advertiser utknął w probing/announcing: hosty z zablokowanym multicast, mostki kontenerów, WSL lub zmiany interfejsów mogą pozostawić advertiser ciao w stanie nieogłoszonym. OpenClaw ponawia próbę kilka razy, a potem wyłącza Bonjour dla bieżącego procesu Gateway zamiast restartować advertiser w nieskończoność.
- Sieć mostkowana Docker: Bonjour automatycznie wyłącza się w wykrytych kontenerach.
Ustaw
OPENCLAW_DISABLE_BONJOUR=0tylko dla hosta, macvlan lub innej sieci zdolnej do mDNS. - Uśpienie / zmiany interfejsów: macOS może tymczasowo tracić wyniki mDNS; spróbuj ponownie.
- Przeglądanie działa, ale rozwiązywanie się nie udaje: utrzymuj proste nazwy maszyn (unikaj emoji i interpunkcji), a następnie uruchom ponownie Gateway. Nazwa instancji usługi pochodzi od nazwy hosta, więc nadmiernie złożone nazwy mogą mylić niektóre resolvery.
Nazwy instancji z sekwencjami escape (\032)
Bonjour/DNS-SD często zapisuje bajty w nazwach instancji usługi jako dziesiętne sekwencje
\DDD (np. spacje stają się \032).
- To normalne na poziomie protokołu.
- UI powinny dekodować je do wyświetlania (iOS używa
BonjourEscapes.decode).
Włączanie / wyłączanie / konfiguracja
- Hosty macOS domyślnie automatycznie uruchamiają wbudowany Plugin wykrywania LAN.
openclaw plugins enable bonjourwłącza wbudowany Plugin wykrywania LAN na hostach, na których nie jest domyślnie włączony.openclaw plugins disable bonjourwyłącza rozgłaszanie multicast LAN przez wyłączenie wbudowanego Plugin.OPENCLAW_DISABLE_BONJOUR=1wyłącza rozgłaszanie multicast LAN bez zmiany konfiguracji Plugin; akceptowane wartości prawdziwe to1,true,yesion(starsza wersja:OPENCLAW_DISABLE_BONJOUR).OPENCLAW_DISABLE_BONJOUR=0wymusza włączenie rozgłaszania multicast LAN, także wewnątrz wykrytych kontenerów; akceptowane wartości fałszywe to0,false,noioff.- Gdy Plugin Bonjour jest włączony, a
OPENCLAW_DISABLE_BONJOURnie jest ustawione, Bonjour rozgłasza się na zwykłych hostach i automatycznie wyłącza się wewnątrz wykrytych kontenerów. gateway.bindw~/.openclaw/openclaw.jsonkontroluje tryb wiązania Gateway.OPENCLAW_SSH_PORTzastępuje port SSH, gdy rozgłaszane jestsshPort(starsza wersja:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSpublikuje wskazówkę MagicDNS w TXT, gdy włączony jest pełny tryb mDNS (starsza wersja:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHzastępuje rozgłaszaną ścieżkę CLI (starsza wersja:OPENCLAW_CLI_PATH).
Powiązana dokumentacja
- Zasady wykrywania i wybór transportu: Wykrywanie
- Parowanie Node + zatwierdzenia: Parowanie Gateway