Обнаружение Bonjour / mDNS
OpenClaw использует Bonjour (mDNS / DNS‑SD) как удобный механизм только для LAN для обнаружения активного Gateway (шлюз) (WebSocket‑эндпоинта). Это решение с наилучшим усилием и не заменяет подключение по SSH или на базе Tailnet.Широкозонный Bonjour (Unicast DNS‑SD) поверх Tailscale
Если узел и Gateway (шлюз) находятся в разных сетях, мультикаст‑mDNS не пересекает границу. Можно сохранить тот же UX обнаружения, переключившись на unicast DNS‑SD («Wide‑Area Bonjour») поверх Tailscale. Высокоуровневые шаги:- Запустите DNS‑сервер на хосте шлюза Gateway (доступный по Tailnet).
- Опубликуйте DNS‑SD‑записи для
_openclaw-gw._tcpв выделенной зоне (пример:openclaw.internal.). - Настройте split DNS в Tailscale так, чтобы выбранный домен разрешался через этот DNS‑сервер для клиентов (включая iOS).
openclaw.internal. приведён лишь как пример.
Узлы iOS/Android просматривают как local., так и настроенный вами широкозонный домен.
Конфиг Gateway (шлюз) (рекомендуется)
Одноразовая настройка DNS‑сервера (хост шлюза Gateway)
- прослушивание порта 53 только на Tailscale‑интерфейсах шлюза Gateway
- обслуживание выбранного домена (пример:
openclaw.internal.) из~/.openclaw/dns/<domain>.db
Настройки DNS в Tailscale
В консоли администратора Tailscale:- Добавьте сервер имён, указывающий на tailnet‑IP шлюза Gateway (UDP/TCP 53).
- Добавьте split DNS, чтобы ваш домен обнаружения использовал этот сервер имён.
_openclaw-gw._tcp в вашем домене обнаружения без мультикаста.
Безопасность слушателя Gateway (шлюз) (рекомендуется)
WS‑порт Gateway (шлюз) (по умолчанию18789) по умолчанию привязывается к loopback. Для доступа по LAN/tailnet выполните явную привязку и оставьте аутентификацию включённой.
Для конфигураций только с tailnet:
- Установите
gateway.bind: "tailnet"в~/.openclaw/openclaw.json. - Перезапустите Gateway (шлюз) (или перезапустите приложение в строке меню macOS).
Что реклама
Только Gateway (шлюз) объявляет_openclaw-gw._tcp.
Типы сервисов
_openclaw-gw._tcp— транспортный маяк шлюза Gateway (используется узлами macOS/iOS/Android).
TXT‑ключи (не секретные подсказки)
Gateway (шлюз) объявляет небольшие не секретные подсказки для удобства UI‑потоков:role=gatewaydisplayName=<friendly name>lanHost=<hostname>.localgatewayPort=<port>(Gateway WS + HTTP)gatewayTls=1(только при включённом TLS)gatewayTlsSha256=<sha256>(только при включённом TLS и доступном отпечатке)canvasPort=<port>(только когда включён хост canvas; по умолчанию18793)sshPort=<port>(по умолчанию 22, если не переопределён)transport=gatewaycliPath=<path>(необязательно; абсолютный путь к исполняемомуopenclawentrypoint)tailnetDns=<magicdns>(необязательная подсказка, когда доступен Tailnet)
- Bonjour/mDNS TXT-записи являются unauthenticated. Клиенты не должны считать TXT авторитетным источником маршрутизации.
- Клиенты должны выполнять маршрутизацию, используя разрешённую конечную точку сервиса (SRV + A/AAAA). Рассматривайте
lanHost,tailnetDns,gatewayPortиgatewayTlsSha256только как подсказки. - TLS pinning никогда не должен позволять рекламируемому
gatewayTlsSha256переопределять ранее сохранённый пин. - Узлы iOS/Android должны рассматривать прямые подключения, обнаруженные через discovery, как TLS-only и требовать явного подтверждения пользователя перед доверием к отпечатку при первом использовании.
Отладка на macOS
Полезные встроенные инструменты:-
Просмотр экземпляров:
-
Разрешение одного экземпляра (замените
<instance>):
Отладка в логах Gateway (шлюз)
Gateway (шлюз) пишет циклический лог‑файл (путь выводится при запуске какgateway log file: ...). Ищите строки bonjour:, в частности:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...
Отладка на узле iOS
Узел iOS используетNWBrowser для обнаружения _openclaw-gw._tcp.
Чтобы собрать логи:
- Settings → Gateway → Advanced → Discovery Debug Logs
- Settings → Gateway → Advanced → Discovery Logs → воспроизвести → Copy
Типичные сбои
- Bonjour не пересекает сети: используйте Tailnet или SSH.
- Мультикаст заблокирован: некоторые Wi‑Fi‑сети отключают mDNS.
- Сон / смена интерфейсов: macOS может временно терять результаты mDNS; повторите попытку.
- Просмотр работает, но разрешение не удаётся: используйте простые имена машин (избегайте эмодзи или знаков пунктуации), затем перезапустите Gateway (шлюз). Имя экземпляра сервиса производно от имени хоста, поэтому слишком сложные имена могут путать некоторые резолверы.
Экранированные имена экземпляров (\032)
Bonjour/DNS‑SD часто экранирует байты в именах экземпляров сервисов в виде десятичных
последовательностей \DDD (например, пробелы становятся \032).
- Это нормально на уровне протокола.
- UI должны декодировать для отображения (iOS использует
BonjourEscapes.decode).
Отключение / конфигурация
OPENCLAW_DISABLE_BONJOUR=1отключает объявление (legacy:OPENCLAW_DISABLE_BONJOUR).gateway.bindв~/.openclaw/openclaw.jsonуправляет режимом привязки Gateway (шлюз).OPENCLAW_SSH_PORTпереопределяет SSH‑порт, объявляемый в TXT (legacy:OPENCLAW_SSH_PORT).OPENCLAW_TAILNET_DNSпубликует подсказку MagicDNS в TXT (legacy:OPENCLAW_TAILNET_DNS).OPENCLAW_CLI_PATHпереопределяет объявляемый путь CLI (legacy:OPENCLAW_CLI_PATH).
Связанная документация
- Политика обнаружения и выбор транспорта: Discovery
- Сопряжение узлов + подтверждения: Gateway pairing