local. — це зручність лише для LAN: вбудований Plugin bonjour відповідає за оголошення в LAN, автоматично запускаючись на хостах macOS і вмикаючись за бажанням у розгортаннях Gateway на Linux, Windows і в контейнерах. Той самий маяк також може публікуватися через налаштований домен широкозонного DNS-SD для виявлення між мережами. Виявлення працює за принципом докладання максимальних зусиль і не замінює підключення через SSH або Tailnet.
Широкозонний Bonjour (одноадресний DNS-SD) через Tailscale
Якщо Node і Gateway перебувають у різних мережах, багатоадресний mDNS не може перетнути межу між ними. Збережіть той самий інтерфейс виявлення, перейшовши на одноадресний DNS-SD («широкозонний Bonjour») через Tailscale:- Запустіть DNS-сервер на хості Gateway, доступний через Tailnet.
- Опублікуйте записи DNS-SD для
_openclaw-gw._tcpу виділеній зоні (приклад:openclaw.internal.). - Налаштуйте розділений DNS Tailscale, щоб вибраний домен для клієнтів, зокрема iOS, розпізнавався через цей DNS-сервер.
openclaw.internal. — лише приклад: OpenClaw підтримує будь-який домен виявлення. Вузли iOS/Android переглядають як local., так і налаштований широкозонний домен.
Конфігурація Gateway
discovery.wideArea.domain також приймає змінну середовища OPENCLAW_WIDE_AREA_DOMAIN як резервний варіант, якщо значення не задано.
Одноразове налаштування DNS-сервера (хост Gateway, лише macOS)
brew install coredns) і налаштовує його так, щоб він:
- прослуховував порт 53 лише на інтерфейсах Tailscale хоста Gateway
- обслуговував вибраний домен (приклад:
openclaw.internal.) із~/.openclaw/dns/<domain>.db
--apply, щоб переглянути план (домен, шлях до файлу зони, виявлену IP-адресу Tailnet, рекомендовану конфігурацію), нічого не встановлюючи.
Перевірте з комп’ютера, підключеного до Tailnet:
Налаштування DNS Tailscale
У консолі адміністрування Tailscale:- Додайте сервер імен, що вказує на IP-адресу Tailnet хоста Gateway (UDP/TCP 53).
- Додайте розділений DNS, щоб домен виявлення використовував цей сервер імен.
_openclaw-gw._tcp у домені виявлення без багатоадресного передавання.
Безпека прослуховувача Gateway
Порт WS Gateway (типово18789) за замовчуванням прив’язується до loopback. Для доступу через LAN/Tailnet явно задайте прив’язування та залиште автентифікацію ввімкненою. Для конфігурацій лише з Tailnet задайте gateway.bind: "tailnet" у ~/.openclaw/openclaw.json і перезапустіть Gateway (або застосунок рядка меню macOS).
Що оголошується
Лише Gateway оголошує_openclaw-gw._tcp. Багатоадресні оголошення в LAN надходять від вбудованого Plugin bonjour, коли його ввімкнено; публікація широкозонного DNS-SD залишається у відповідальності Gateway.
Типи служб
_openclaw-gw._tcp— маяк транспорту Gateway, який використовують вузли macOS/iOS/Android.
Ключі TXT (несекретні підказки)
Примітки щодо безпеки:
- Записи TXT Bonjour/mDNS не автентифіковані. Клієнти не повинні вважати TXT авторитетним джерелом маршрутизації.
- Клієнти мають виконувати маршрутизацію за розпізнаною кінцевою точкою служби (SRV + A/AAAA). Вважайте
lanHost,tailnetDns,gatewayPortіgatewayTlsSha256лише підказками. - Автоматичний вибір цілі SSH також має використовувати розпізнаний хост служби, а не лише підказки TXT.
- Закріплення TLS ніколи не повинно дозволяти оголошеному
gatewayTlsSha256перевизначати раніше збережлене закріплення. - Вузли iOS/Android мають вважати прямі підключення на основі виявлення доступними лише через TLS і вимагати явного підтвердження користувача, перш ніж довіряти відбитку вперше.
Налагодження в macOS
Вбудовані інструменти:Налагодження в журналах Gateway
Gateway записує циклічний файл журналу (під час запуску його виведено якgateway log file: ...). Шукайте рядки bonjour:, особливо:
bonjour: advertise failed ...bonjour: suppressing ciao netmask assertion ...bonjour: ... name conflict resolved/hostname conflict resolved
(2) або (3), щоб імена екземплярів служб залишалися унікальними. Такі суфікси є звичайним механізмом розв’язання конфліктів і не свідчать про дублювання нагляду OCM.
Bonjour використовує системне ім’я хоста для оголошуваного хоста .local, якщо воно є припустимою міткою DNS. Якщо системне ім’я хоста містить пробіли, символи підкреслення або інший неприпустимий для мітки DNS символ, OpenClaw використовує резервне значення openclaw.local. Задайте OPENCLAW_MDNS_HOSTNAME=<name> перед запуском Gateway, якщо потрібна явна мітка хоста.
Налагодження на вузлі iOS
Вузол iOS використовуєNWBrowser для виявлення _openclaw-gw._tcp.
Щоб зібрати журнали: Settings -> Gateway -> Advanced -> Discovery Debug Logs, потім Settings -> Gateway -> Advanced -> Discovery Logs -> відтворіть проблему -> Copy. Журнал містить переходи станів браузера та зміни набору результатів.
Коли вмикати Bonjour
Bonjour автоматично запускається під час запуску Gateway з порожньою конфігурацією на хостах macOS, оскільки локальний застосунок і сусідні вузли iOS/Android зазвичай покладаються на виявлення в межах однієї LAN. Увімкніть його явно, коли автоматичне виявлення в межах однієї LAN корисне в Linux, Windows або на іншому хості не з macOS:discovery.mdns.mode, щоб визначити обсяг метаданих TXT для публікації; той самий режим керує необов’язковими підказками TXT у записах широкозонного DNS-SD. Режими:
Коли вимикати Bonjour
Залишайте Bonjour вимкненим, коли багатоадресні оголошення в LAN непотрібні, недоступні або шкідливі — типовими випадками є сервери не з macOS, мережа мосту Docker, WSL або мережева політика, яка відкидає багатоадресні пакети mDNS. Gateway залишається доступним через опубліковану URL-адресу, SSH, Tailnet або широкозонний DNS-SD; ненадійним стає лише автоматичне виявлення в LAN. Використовуйте перевизначення через змінну середовища для проблем, пов’язаних із конкретним розгортанням (це безпечно для образів Docker, файлів служб, сценаріїв запуску й одноразового налагодження — воно зникає разом із середовищем):Особливості Docker
Вбудований Plugin Bonjour автоматично вимикає багатоадресні оголошення в LAN у виявлених контейнерах, колиOPENCLAW_DISABLE_BONJOUR не задано. Мережі мосту Docker зазвичай не пересилають багатоадресні пакети mDNS (224.0.0.251:5353) між контейнером і LAN, тому оголошення з контейнера рідко забезпечує роботу виявлення.
Особливості:
- Bonjour автоматично запускається на хостах macOS, а в інших середовищах вмикається за бажанням. Якщо залишити його вимкненим, це не зупинить Gateway — буде пропущено лише багатоадресні оголошення в LAN.
- Вимкнення Bonjour не змінює
gateway.bind; Docker і далі типово використовуєOPENCLAW_GATEWAY_BIND=lan, щоб опублікований порт хоста працював. - Вимкнення Bonjour не вимикає широкозонний DNS-SD. Використовуйте широкозонне виявлення або Tailnet, коли Gateway і Node не перебувають в одній LAN.
- Повторне використання того самого
OPENCLAW_CONFIG_DIRпоза Docker не зберігає політику автоматичного вимкнення контейнера. - Задавайте
OPENCLAW_DISABLE_BONJOUR=0лише для мережі хоста, macvlan або іншої мережі, у якій багатоадресні пакети mDNS гарантовано проходять; задайте значення1для примусового вимкнення.
Усунення несправностей вимкненого Bonjour
Якщо після налаштування Docker вузол більше не виявляє Gateway автоматично:-
Перевірте, у якому режимі працює Gateway: автоматичному, примусово ввімкненому чи примусово вимкненому:
-
Переконайтеся, що сам Gateway доступний через опублікований порт:
-
Коли Bonjour вимкнено, використовуйте пряму ціль:
- Control UI або локальні інструменти:
http://127.0.0.1:18789 - Клієнти LAN:
http://<gateway-host>:18789 - Клієнти з інших мереж: Tailnet MagicDNS, IP-адреса Tailnet, тунель SSH або широкозонний DNS-SD
- Control UI або локальні інструменти:
-
Якщо ви навмисно ввімкнули Plugin Bonjour у Docker і примусово ввімкнули оголошення за допомогою
OPENCLAW_DISABLE_BONJOUR=0, перевірте багатоадресне передавання з хоста:Якщо список результатів порожній або журнали Gateway показують повторювані помилки зондування ciao, відновітьOPENCLAW_DISABLE_BONJOUR=1і використовуйте прямий маршрут або маршрут Tailnet.
Поширені режими відмови
- Bonjour не працює між мережами: використовуйте Tailnet або SSH.
- Багатоадресне передавання заблоковано: деякі мережі Wi-Fi вимикають mDNS.
- Оголошувач завис на етапі перевірки/оголошення: вузли із заблокованим багатоадресним передаванням, мостові мережі контейнерів, WSL або частими змінами інтерфейсів можуть залишити відповідач у неоголошеному стані. Gateway залишається доступним через прямі маршрути, SSH, Tailnet або глобальну DNS-SD; вимкніть Bonjour у локальній мережі за допомогою
discovery.mdns.mode: "off"абоOPENCLAW_DISABLE_BONJOUR=1, якщо багатоадресне передавання недоступне. - Мостова мережа Docker: Bonjour автоматично вимикається у виявлених контейнерах. Установлюйте
OPENCLAW_DISABLE_BONJOUR=0лише для мережі хоста, macvlan або іншої мережі з підтримкою mDNS. - Перехід у режим сну/зміни інтерфейсів: macOS може тимчасово втрачати результати mDNS; повторіть спробу.
- Перегляд працює, але визначення адреси не вдається: використовуйте прості імена машин (уникайте емодзі та розділових знаків), а потім перезапустіть Gateway. Ім’я екземпляра служби походить від імені хоста, тому надто складні імена можуть заплутати деякі засоби визначення адрес.
Екрановані імена екземплярів (\032)
Bonjour/DNS-SD часто екранує байти в іменах екземплярів служб як десяткові послідовності \DDD (пробіли перетворюються на \032). Це нормально на рівні протоколу; інтерфейси користувача мають декодувати їх для відображення (iOS використовує BonjourEscapes.decode).
Увімкнення / вимкнення / конфігурація
На вузлах macOS вбудований Plugin виявлення в локальній мережі за замовчуванням запускається автоматично. Коли Plugin Bonjour увімкнено, а
OPENCLAW_DISABLE_BONJOUR не задано, Bonjour публікує оголошення на звичайних вузлах і автоматично вимикається у виявлених контейнерах (машинах Docker, Fly.io та поширених середовищах виконання контейнерів).
Пов’язана документація
- Політика виявлення та вибір транспорту: Виявлення
- Сполучення Node і схвалення: Сполучення Gateway