Wykrywanie Bonjour / mDNS
OpenClaw używa Bonjour (mDNS / DNS‑SD) jako udogodnienia wyłącznie w LAN, aby wykrywać aktywny Gateway (punkt końcowy WebSocket). Jest to mechanizm best‑effort i nie zastępuje łączności przez SSH ani opartej na Tailnet.Bonjour szerokiego obszaru (Unicast DNS‑SD) przez Tailscale
Jeśli węzeł i Gateway znajdują się w różnych sieciach, multicast mDNS nie przekroczy granicy. Możesz zachować ten sam UX wykrywania, przełączając się na unicast DNS‑SD („Wide‑Area Bonjour”) przez Tailscale. Kroki na wysokim poziomie:- 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 split DNS w Tailscale, 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ę szerokiego obszaru.
Konfiguracja Gateway (zalecane)
Jednorazowa konfiguracja serwera DNS (host Gateway)
- nasłuchiwał na porcie 53 wyłącznie na interfejsach Tailscale Gateway
- serwował wybraną domenę (przykład:
openclaw.internal.) z~/.openclaw/dns/<domain>.db
Ustawienia DNS w Tailscale
W konsoli administracyjnej Tailscale:- Dodaj serwer nazw wskazujący na adres IP tailnet Gateway (UDP/TCP 53).
- Dodaj split DNS, aby domena wykrywania korzystała z tego serwera nazw.
_openclaw-gw._tcp w domenie wykrywania bez multicastu.
Bezpieczeństwo nasłuchu Gateway (zalecane)
Port WS Gateway (domyślnie18789) domyślnie wiąże się z loopback. Dla dostępu LAN/tailnet
wiąż go jawnie i pozostaw włączone uwierzytelnianie.
Dla konfiguracji wyłącznie tailnet:
- Ustaw
gateway.bind: "tailnet"w~/.openclaw/openclaw.json. - Zrestartuj Gateway (lub zrestartuj aplikację na pasku menu macOS).
Co jest ogłaszane
Tylko Gateway ogłasza_openclaw-gw._tcp.
Typy usług
_openclaw-gw._tcp— beacon transportowy gateway (używany przez węzły macOS/iOS/Android).
Klucze TXT (nie‑tajne wskazówki)
Gateway ogłasza niewielkie, nie‑tajne wskazówki, aby usprawnić 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 dostępny jest fingerprint)canvasPort=<port>(tylko gdy host canvas jest włączony; domyślnie18793)sshPort=<port>(domyślnie 22, gdy nie nadpisano)transport=gatewaycliPath=<path>(opcjonalne; ścieżka bezwzględna do uruchamialnego punktu wejściaopenclaw)tailnetDns=<magicdns>(opcjonalna wskazówka, gdy Tailnet jest dostępny)
- Rekordy TXT Bonjour/mDNS są nieuwierzytelnione. Klienci nie mogą traktować TXT jako autorytatywnego routingu.
- Klienci powinni kierować ruch przy użyciu rozwiązanego punktu końcowego usługi (SRV + A/AAAA). Traktuj
lanHost,tailnetDns,gatewayPortigatewayTlsSha256wyłącznie jako wskazówki. - Pinning TLS nigdy nie może pozwalać, aby reklamowany
gatewayTlsSha256nadpisywał wcześniej zapisany pin. - Węzły iOS/Android powinny traktować bezpośrednie połączenia oparte na wykrywaniu jako wyłącznie TLS-only i wymagać wyraźnego potwierdzenia użytkownika przed zaufaniem odciskowi palca widzianemu po raz pierwszy.
Debugowanie na macOS
Przydatne wbudowane narzędzia:-
Przeglądanie instancji:
-
Rozwiązywanie jednej instancji (zastąp
<instance>):
Debugowanie w logach Gateway
Gateway zapisuje rotujący plik logów (drukowany przy starcie jakogateway log file: ...). Szukaj linii bonjour:, w szczególności:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
Debugowanie na węźle iOS
Węzeł iOS używaNWBrowser do wykrywania _openclaw-gw._tcp.
Aby zebrać logi:
- Ustawienia → Gateway → Zaawansowane → Logi debugowania wykrywania
- Ustawienia → Gateway → Zaawansowane → Logi wykrywania → odtwórz → Kopiuj
Typowe tryby awarii
- Bonjour nie przekracza granic sieci: użyj Tailnet lub SSH.
- Multicast zablokowany: niektóre sieci Wi‑Fi wyłączają mDNS.
- Uśpienie / zmiany interfejsów: macOS może tymczasowo tracić wyniki mDNS; ponów próbę.
- Przeglądanie działa, ale rozwiązywanie nie: utrzymuj proste nazwy maszyn (unikaj emoji lub interpunkcji), a następnie zrestartuj Gateway. Nazwa instancji usługi pochodzi od nazwy hosta, więc zbyt złożone nazwy mogą dezorientować niektóre resolvery.
Ucieczkowe nazwy instancji (\032)
Bonjour/DNS‑SD często ucieka bajty w nazwach instancji usług jako dziesiętne sekwencje
\DDD (np. spacje stają się \032).
- Jest to normalne na poziomie protokołu.
- Interfejsy UI powinny dekodować do wyświetlania (iOS używa
BonjourEscapes.decode).
Wyłączanie / konfiguracja
OPENCLAW_DISABLE_BONJOUR=1wyłącza ogłaszanie (starsze:OPENCLAW_DISABLE_BONJOUR).gateway.bindw~/.openclaw/openclaw.jsonkontroluje tryb wiązania Gateway.OPENCLAW_SSH_PORTnadpisuje port SSH ogłaszany w TXT (starsze:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSpublikuje wskazówkę MagicDNS w TXT (starsze:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHnadpisuje ogłaszaną ścieżkę CLI (starsze:OPENCLAW_CLI_PATH).
Powiązana dokumentacja
- Polityka wykrywania i wybór transportu: Discovery
- Parowanie węzłów + zatwierdzenia: Gateway pairing