Сетевое взаимодействие и обнаружение
Обнаружение Bonjour
OpenClaw использует Bonjour (mDNS / DNS‑SD) как удобство только для локальной сети для обнаружения активного Шлю за (конечной точки WebSocket). Это работает по принципу best‑effort и не заменяет подключение через SSH или Tailnet.
Bonjour между сетями (Unicast DNS‑SD) через Tailscale
Если узел и шлюз находятся в разных сетях, многоадресный mDNS не пересечёт границу. Вы можете сохранить тот же UX обнаружения, переключившись на unicast DNS‑SD («Bonjour между сетями») через Tailscale. Основные шаги:
- Запустите DNS-сервер на хосте шлюза (доступном через Tailnet).
- Опубликуйте DNS‑SD записи для
_openclaw-gw._tcpв выделенной зоне (например:openclaw.internal.). - Настройте split DNS в Tailscale так, чтобы ваш выбранный домен разрешался через этот DNS-сервер для клиентов (включая iOS).
OpenClaw поддерживает любой домен обнаружения; openclaw.internal. — всего лишь пример. Узлы iOS/Android просматривают как local., так и ваш настроенный домен для работы между сетями.
Конфигурация шлюза (рекомендуется)
{
gateway: { bind: "tailnet" }, // только tailnet (рекомендуется)
discovery: { wideArea: { enabled: true } }, // включает публикацию DNS-SD между сетями
}
Единоразовая настройка DNS-сервера (хост шлюза)
openclaw dns setup --apply
Это устанавливает CoreDNS и настраивает его для:
- прослушивания порта 53 только на интерфейсах Tailscale шлюза
- обслуживания вашего выбранного домена (например:
openclaw.internal.) из~/.openclaw/dns/.db
Проверьте с машины, подключённой к Tailnet:
dns-sd -B _openclaw-gw._tcp openclaw.internal.
dig @<TAILNET_IPV4> -p 53 _openclaw-gw._tcp.openclaw.internal PTR +short
Настройки DNS в Tailscale
В консоли администрирования Tailscale:
- Добавьте сервер имён, указывающий на Tailnet IP шлюза (UDP/TCP 53).
- Добавьте split DNS, чтобы ваш домен обнаружения использовал этот сервер имён.
Как только клиенты примут DNS от Tailnet, узлы iOS смогут просматривать _openclaw-gw._tcp в вашем домене обнаружения без использования многоадресной рассылки.
Безопасность прослушивателя шлюза (рекомендуется)
Порт WS шлюза (по умолчанию 18789) по умолчанию привязывается к loopback. Для доступа из LAN/Tailnet привяжите его явно и оставьте аутентификацию включённой. Для настроек только с Tailnet:
- Установите
gateway.bind: "tailnet"в~/.openclaw/openclaw.json. - Перезапустите Шлюз (или перезапустите приложение в строке меню macOS).
Что анонсируется
Только Шлюз анонсирует _openclaw-gw._tcp.
Типы служб
_openclaw-gw._tcp— маяк транспорта шлюза (используется узлами macOS/iOS/Android).
TXT ключи (несекретные подсказки)
Шлюз анонсирует небольшие несекретные подсказки для удобства UI-процессов:
role=gatewaydisplayName=lanHost=.localgatewayPort=(WS + HTTP шлюза)gatewayTls=1(только когда TLS включён)gatewayTlsSha256=(только когда TLS включён и доступен отпечаток)canvasPort=(только когда хост canvas включён; в настоящее время совпадает сgatewayPort)sshPort=(по умолчанию 22, если не переопределён)transport=gatewaycliPath=(опционально; абсолютный путь к исполняемой точке входаopenclaw)tailnetDns=(опциональная подсказка, когда Tailnet доступен)
Примечания по безопасности:
- TXT записи Bonjour/mDNS не аутентифицированы. Клиенты не должны рассматривать TXT как авторитетную информацию для маршрутизации.
- Клиенты должны маршрутизировать, используя разрешённую конечную точку службы (SRV + A/AAAA). Рассматривайте
lanHost,tailnetDns,gatewayPortиgatewayTlsSha256только как подсказки. - Закрепление TLS никогда не должно позволять рекламируемому
gatewayTlsSha256переопределять ранее сохранённое закрепление. - Узлы iOS/Android должны рассматривать прямое подключение на основе обнаружения как только с TLS и требовать явного подтверждения пользователя перед доверием отпечатку при первом подключении.
Отладка на macOS
Полезные встроенные инструменты:
-
Просмотр экземпляров:
Копировать
dns-sd -B _openclaw-gw._tcp local. -
Разрешение одного экземпляра (замените ``):
Копировать
dns-sd -L "<instance>" _openclaw-gw._tcp local.
Если просмотр работает, но разрешение не удаётся, вы обычно сталкиваетесь с политикой LAN или проблемой резолвера mDNS.
Отладка в логах шлюза
Шлюз записывает циклический лог-файл (выводится при запуске как gateway log file: ...). Ищите строки bonjour:, особенно:
bonjour: advertise failed ...bonjour: ... name conflict resolved/hostname conflict resolvedbonjour: watchdog detected non-announced service ...