local. jest udogodnieniem działającym wyłącznie w sieci LAN: dołączony Plugin bonjour odpowiada za rozgłaszanie w sieci LAN, uruchamiając się automatycznie na hostach macOS oraz opcjonalnie w systemach Linux i Windows, a także we wdrożeniach Gateway w kontenerach. Ten sam sygnał może być również publikowany za pośrednictwem skonfigurowanej domeny DNS-SD sieci rozległej w celu wykrywania między sieciami. Wykrywanie działa na zasadzie najlepszych starań i nie zastępuje łączności opartej na SSH ani Tailnet.
Bonjour w sieci rozległej (DNS-SD unicast) przez Tailscale
Jeśli Node i Gateway znajdują się w różnych sieciach, multiemisja mDNS nie może przekroczyć ich granicy. Można zachować ten sam sposób korzystania z wykrywania, przełączając się na DNS-SD unicast („Bonjour w sieci rozległej”) przez Tailscale:- Uruchom serwer DNS na hoście Gateway, dostępny 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 dla klientów, w tym iOS, za pośrednictwem tego serwera DNS.
openclaw.internal. jest tylko przykładem — OpenClaw obsługuje dowolną domenę wykrywania. Node iOS/Android przeglądają zarówno local., jak i skonfigurowaną domenę sieci rozległej.
Konfiguracja Gateway
discovery.wideArea.domain akceptuje również zmienną środowiskową OPENCLAW_WIDE_AREA_DOMAIN jako wartość zapasową, gdy nie jest ustawiona.
Jednorazowa konfiguracja serwera DNS (host Gateway, tylko macOS)
brew install coredns) i konfiguruje go tak, aby:
- nasłuchiwał na porcie 53 wyłącznie na interfejsach Tailscale hosta Gateway
- obsługiwał wybraną domenę (przykład:
openclaw.internal.) z~/.openclaw/dns/<domain>.db
--apply, aby wyświetlić plan (domenę, ścieżkę pliku strefy, wykryty adres IP Tailnet i zalecaną konfigurację) bez instalowania czegokolwiek.
Sprawdź z maszyny połączonej z Tailnet:
Ustawienia DNS Tailscale
W konsoli administracyjnej Tailscale:- Dodaj serwer nazw wskazujący adres IP Tailnet hosta Gateway (UDP/TCP 53).
- Dodaj split DNS, aby domena wykrywania używała tego serwera nazw.
_openclaw-gw._tcp w domenie wykrywania bez multiemisji.
Bezpieczeństwo nasłuchiwania Gateway
Port WS Gateway (domyślnie18789) jest domyślnie powiązany z interfejsem pętli zwrotnej. Aby uzyskać dostęp przez LAN/Tailnet, należy jawnie skonfigurować powiązanie i pozostawić uwierzytelnianie włączone. W konfiguracjach działających wyłącznie przez Tailnet ustaw gateway.bind: "tailnet" w ~/.openclaw/openclaw.json i uruchom ponownie Gateway (lub aplikację macOS na pasku menu).
Co jest rozgłaszane
Tylko Gateway rozgłasza_openclaw-gw._tcp. Rozgłaszanie multiemisji w sieci LAN pochodzi z dołączonego Pluginu bonjour, gdy jest włączony; publikowanie DNS-SD w sieci rozległej pozostaje własnością Gateway.
Typy usług
_openclaw-gw._tcp— sygnał transportowy Gateway używany przez Node macOS/iOS/Android.
Klucze TXT (niejawne wskazówki)
Uwagi dotyczące bezpieczeństwa:
- Rekordy TXT Bonjour/mDNS są nieuwierzytelnione. Klienci nie mogą traktować TXT jako autorytatywnego źródła routingu.
- Klienci powinni wyznaczać trasę przy użyciu rozwiązanego punktu końcowego usługi (SRV + A/AAAA). Traktuj
lanHost,tailnetDns,gatewayPortigatewayTlsSha256wyłącznie jako wskazówki. - Automatyczny wybór celu SSH powinien podobnie używać rozwiązanego hosta usługi, a nie wskazówek pochodzących wyłącznie z TXT.
- Przypinanie TLS nigdy nie może pozwalać, aby rozgłaszany
gatewayTlsSha256zastąpił wcześniej zapisane przypięcie. - Node iOS/Android powinny traktować bezpośrednie połączenia oparte na wykrywaniu jako działające wyłącznie przez TLS oraz wymagać wyraźnego potwierdzenia przed zaufaniem odciskowi po raz pierwszy.
Debugowanie w systemie macOS
Wbudowane narzędzia:Debugowanie w dziennikach Gateway
Gateway zapisuje rotacyjny plik dziennika (wyświetlany podczas uruchamiania jakogateway log file: ...). Poszukaj wierszy bonjour:, zwłaszcza:
bonjour: advertise failed ...bonjour: suppressing ciao netmask assertion ...bonjour: ... name conflict resolved/hostname conflict resolved
(2) lub (3), aby zachować unikatowe nazwy instancji usług. Takie sufiksy są normalnym wynikiem rozwiązywania konfliktów i nie wskazują na zduplikowany nadzór OCM.
Bonjour używa systemowej nazwy hosta dla rozgłaszanego hosta .local, jeśli jest ona prawidłową etykietą DNS. Jeśli systemowa nazwa hosta zawiera spacje, podkreślenia lub inny znak niedozwolony w etykiecie DNS, OpenClaw używa zamiast niej openclaw.local. Ustaw OPENCLAW_MDNS_HOSTNAME=<name> przed uruchomieniem Gateway, gdy wymagana jest jawna etykieta hosta.
Debugowanie w Node iOS
Node iOS używaNWBrowser do wykrywania _openclaw-gw._tcp.
Aby przechwycić dzienniki: Settings -> Gateway -> Advanced -> Discovery Debug Logs, następnie Settings -> Gateway -> Advanced -> Discovery Logs -> odtwórz problem -> Copy. Dziennik zawiera przejścia stanu przeglądarki i zmiany zestawu wyników.
Kiedy włączyć Bonjour
Bonjour uruchamia się automatycznie przy uruchamianiu Gateway z pustą konfiguracją na hostach macOS, ponieważ lokalna aplikacja oraz pobliskie Node iOS/Android często korzystają z wykrywania w tej samej sieci LAN. Włącz go jawnie, gdy automatyczne wykrywanie w tej samej sieci LAN jest przydatne w systemie Linux, Windows lub na innym hoście bez macOS:discovery.mdns.mode, aby określić ilość publikowanych metadanych TXT; ten sam tryb steruje opcjonalnymi wskazówkami TXT w rekordach DNS-SD sieci rozległej. Tryby:
Kiedy wyłączyć Bonjour
Pozostaw Bonjour wyłączony, gdy rozgłaszanie multiemisji w sieci LAN jest zbędne, niedostępne lub szkodliwe — częste przypadki to serwery bez macOS, sieć mostkowa Docker, WSL albo polityka sieciowa odrzucająca multiemisję mDNS. Gateway pozostaje osiągalny przez opublikowany adres URL, SSH, Tailnet lub DNS-SD sieci rozległej; zawodna staje się jedynie funkcja automatycznego wykrywania w sieci LAN. Użyj nadpisania przez zmienną środowiskową w przypadku problemów dotyczących konkretnego wdrożenia (bezpieczne dla obrazów Docker, plików usług, skryptów uruchomieniowych i jednorazowego debugowania — znika wraz ze środowiskiem):Pułapki związane z Dockerem
Dołączony Plugin Bonjour automatycznie wyłącza rozgłaszanie multiemisji w sieci LAN w wykrytych kontenerach, gdyOPENCLAW_DISABLE_BONJOUR nie jest ustawiona. Sieci mostkowe Docker zwykle nie przekazują multiemisji mDNS (224.0.0.251:5353) między kontenerem a siecią LAN, dlatego rozgłaszanie z kontenera rzadko umożliwia działanie wykrywania.
Pułapki:
- Bonjour uruchamia się automatycznie na hostach macOS, a w innych środowiskach wymaga jawnego włączenia. Pozostawienie go wyłączonego nie zatrzymuje Gateway — pomija jedynie rozgłaszanie multiemisji w sieci LAN.
- Wyłączenie Bonjour nie zmienia
gateway.bind; Docker nadal domyślnie używaOPENCLAW_GATEWAY_BIND=lan, dzięki czemu opublikowany port hosta działa. - Wyłączenie Bonjour nie wyłącza DNS-SD sieci rozległej. Użyj wykrywania w sieci rozległej lub Tailnet, gdy Gateway i Node nie znajdują się w tej samej sieci LAN.
- Ponowne użycie tej samej
OPENCLAW_CONFIG_DIRpoza Dockerem nie zachowuje zasady automatycznego wyłączania z kontenera. - Ustaw
OPENCLAW_DISABLE_BONJOUR=0tylko w przypadku sieci hosta, macvlan lub innej sieci, w której multiemisja mDNS na pewno jest przekazywana; ustaw wartość1, aby wymusić wyłączenie.
Rozwiązywanie problemów z wyłączonym Bonjour
Jeśli po skonfigurowaniu Dockera Node przestanie automatycznie wykrywać Gateway:-
Sprawdź, czy Gateway działa w trybie automatycznym, wymuszonego włączenia czy wymuszonego wyłączenia:
-
Sprawdź, czy sam Gateway jest osiągalny przez opublikowany port:
-
Gdy Bonjour jest wyłączony, użyj bezpośredniego celu:
- Interfejs sterowania lub narzędzia lokalne:
http://127.0.0.1:18789 - Klienci sieci LAN:
http://<gateway-host>:18789 - Klienci między sieciami: MagicDNS Tailnet, adres IP Tailnet, tunel SSH lub DNS-SD sieci rozległej
- Interfejs sterowania lub narzędzia lokalne:
-
Jeśli Plugin Bonjour został celowo włączony w Dockerze, a rozgłaszanie wymuszono za pomocą
OPENCLAW_DISABLE_BONJOUR=0, przetestuj multiemisję z hosta:Jeśli przeglądanie nie zwraca wyników lub dzienniki Gateway wskazują powtarzające się błędy sondowania ciao, przywróćOPENCLAW_DISABLE_BONJOUR=1i użyj trasy bezpośredniej lub Tailnet.
Typowe tryby awarii
- Bonjour nie działa między sieciami: użyj Tailnet lub SSH.
- Multiemisja jest zablokowana: niektóre sieci Wi-Fi wyłączają mDNS.
- Moduł rozgłaszający utknął na sondowaniu/ogłaszaniu: hosty z zablokowaną multiemisją, mosty kontenerów, WSL lub częste zmiany interfejsów mogą pozostawić responder w stanie bez ogłoszenia. Gateway pozostaje dostępny przez trasy bezpośrednie, SSH, Tailnet lub rozległego DNS-SD; gdy multiemisja jest niedostępna, wyłącz Bonjour w sieci LAN za pomocą
discovery.mdns.mode: "off"lubOPENCLAW_DISABLE_BONJOUR=1. - Sieć mostkowa Docker: Bonjour wyłącza się automatycznie w wykrytych kontenerach. Ustaw
OPENCLAW_DISABLE_BONJOUR=0tylko dla sieci hosta, macvlan lub innej sieci obsługującej mDNS. - Uśpienie/częste zmiany interfejsów: macOS może tymczasowo przestać zwracać wyniki mDNS; spróbuj ponownie.
- Przeglądanie działa, ale rozpoznawanie kończy się niepowodzeniem: używaj prostych nazw maszyn (unikaj emoji i znaków interpunkcyjnych), a następnie uruchom ponownie Gateway. Nazwa instancji usługi pochodzi od nazwy hosta, więc nadmiernie złożone nazwy mogą dezorientować niektóre resolvery.
Nazwy instancji ze znakami ucieczki (\032)
Bonjour/DNS-SD często zapisuje bajty w nazwach instancji usług jako dziesiętne sekwencje \DDD (spacje stają się \032). Jest to normalne na poziomie protokołu; interfejsy użytkownika powinny je dekodować na potrzeby wyświetlania (iOS używa BonjourEscapes.decode).
Włączanie / wyłączanie / konfiguracja
Hosty macOS domyślnie automatycznie uruchamiają dołączony Plugin wykrywania w sieci LAN. Gdy Plugin Bonjour jest włączony, a
OPENCLAW_DISABLE_BONJOUR nie jest ustawione, Bonjour rozgłasza się na zwykłych hostach i automatycznie wyłącza wewnątrz wykrytych kontenerów (Docker, maszyny Fly.io i popularne środowiska uruchomieniowe kontenerów).
Powiązana dokumentacja
- Zasady wykrywania i wybór transportu: Wykrywanie
- Parowanie Node + zatwierdzenia: Parowanie Gateway