- Удаленное управление оператором: приложение в строке меню macOS управляет Gateway, запущенным в другом месте.
- Сопряжение узлов: iOS/Android (и будущие узлы) находят Gateway и безопасно сопрягаются с ним.
openclaw gateway), а клиентов (приложение mac, iOS) оставить потребителями.
Термины
- Gateway: один долгоживущий процесс Gateway, который владеет состоянием (сеансы, сопряжение, реестр узлов) и запускает каналы. В большинстве установок используется один процесс на хост; изолированные установки с несколькими Gateway возможны.
- Gateway WS (плоскость управления): конечная точка WebSocket на
127.0.0.1:18789по умолчанию; может быть привязана к LAN/tailnet черезgateway.bind. - Прямой транспорт WS: обращенная к LAN/tailnet конечная точка Gateway WS (без SSH).
- Транспорт SSH (резервный вариант): удаленное управление через проброс
127.0.0.1:18789по SSH. - Устаревший TCP-мост (удален): старый транспорт узлов (см. протокол моста); больше не объявляется для обнаружения и больше не входит в текущие сборки.
Почему мы сохраняем и прямое подключение, и SSH
- Прямой WS дает лучший UX в той же сети и внутри tailnet:
- автообнаружение в LAN через Bonjour
- токены сопряжения + ACL, которыми владеет Gateway
- доступ к shell не требуется; поверхность протокола может оставаться узкой и пригодной для аудита
- SSH остается универсальным резервным вариантом:
- работает везде, где у вас есть доступ по SSH (даже между несвязанными сетями)
- переживает проблемы multicast/mDNS
- не требует новых входящих портов, кроме SSH
Входные данные обнаружения (как клиенты узнают, где находится Gateway)
1) Обнаружение Bonjour / DNS-SD
Multicast Bonjour работает по принципу best-effort и не пересекает границы сетей. OpenClaw также может просматривать тот же beacon Gateway через настроенный домен wide-area DNS-SD, поэтому обнаружение может охватывать:local.в той же LAN- настроенный домен unicast DNS-SD для обнаружения между сетями
- Gateway объявляет свою конечную точку WS через Bonjour, когда включен встроенный
Plugin
bonjour. Plugin автоматически запускается на хостах macOS и включается явно в других средах. - Клиенты просматривают и показывают список «выбрать Gateway», затем сохраняют выбранную конечную точку.
Подробности service beacon
- Типы служб:
_openclaw-gw._tcp(beacon транспорта Gateway)
- Ключи TXT (не секретные):
role=gatewaytransport=gatewaydisplayName=<friendly name>(отображаемое имя, настроенное оператором)lanHost=<hostname>.localgatewayPort=18789(Gateway WS + HTTP)gatewayTls=1(только когда TLS включен)gatewayTlsSha256=<sha256>(только когда TLS включен и fingerprint доступен)canvasPort=<port>(порт хоста canvas; сейчас совпадает сgatewayPort, когда хост canvas включен)tailnetDns=<magicdns>(необязательная подсказка; определяется автоматически, когда доступен Tailscale)sshPort=<port>(только полный режим mDNS; wide-area DNS-SD может опускать его, и тогда значения SSH по умолчанию остаются22)cliPath=<path>(только полный режим mDNS; wide-area DNS-SD все равно записывает его как подсказку удаленной установки)
- TXT-записи Bonjour/mDNS не аутентифицированы. Клиенты должны считать значения TXT только подсказками для UX.
- Маршрутизация (host/port) должна предпочитать разрешенную конечную точку службы (SRV + A/AAAA) значениям
lanHost,tailnetDnsилиgatewayPort, предоставленным через TXT. - Закрепление TLS никогда не должно позволять объявленному
gatewayTlsSha256переопределять ранее сохраненный pin. - Узлы iOS/Android должны требовать явного подтверждения «доверять этому fingerprint» перед сохранением pin в первый раз (внеполосная проверка), когда выбранный маршрут основан на secure/TLS.
openclaw plugins enable bonjourвключает multicast-объявление в LAN.OPENCLAW_DISABLE_BONJOUR=1отключает объявление.- Когда Plugin Bonjour включен и
OPENCLAW_DISABLE_BONJOURне задан, Bonjour объявляется на обычных хостах и автоматически отключается внутри обнаруженных контейнеров. Запуск Gateway на macOS с пустой конфигурацией включает Plugin автоматически; Linux, Windows и контейнеризованные развертывания требуют явного включения. Используйте0только на host, macvlan или другой сети с поддержкой mDNS; используйте1, чтобы принудительно отключить. gateway.bindв~/.openclaw/openclaw.jsonуправляет режимом привязки Gateway.OPENCLAW_SSH_PORTпереопределяет объявляемый порт SSH, когда выводитсяsshPort.OPENCLAW_TAILNET_DNSпубликует подсказкуtailnetDns(MagicDNS).OPENCLAW_CLI_PATHпереопределяет объявляемый путь CLI.
2) Tailnet (между сетями)
Для установок в стиле London/Vienna Bonjour не поможет. Рекомендуемая «прямая» цель:- имя Tailscale MagicDNS (предпочтительно) или стабильный IP tailnet.
tailnetDns как необязательную подсказку для клиентов (включая wide-area beacon).
Приложение macOS теперь предпочитает имена MagicDNS сырым IP Tailscale при обнаружении Gateway. Это повышает надежность при изменении IP tailnet (например, после перезапуска узла или переназначения CGNAT), потому что имена MagicDNS автоматически разрешаются в текущий IP.
Для сопряжения мобильных узлов подсказки обнаружения не ослабляют безопасность транспорта на маршрутах tailnet/public:
- iOS/Android по-прежнему требуют безопасный путь первого подключения tailnet/public (
wss://или Tailscale Serve/Funnel). - Обнаруженный сырой IP tailnet — это подсказка маршрутизации, а не разрешение использовать plaintext удаленный
ws://. - Прямое подключение
ws://в частной LAN остается поддерживаемым. - Если вам нужен самый простой путь Tailscale для мобильных узлов, используйте Tailscale Serve, чтобы и обнаружение, и код настройки разрешались в одну и ту же безопасную конечную точку MagicDNS.
3) Ручная цель / SSH
Когда прямого маршрута нет (или прямое подключение отключено), клиенты всегда могут подключиться через SSH, пробросив порт loopback Gateway. См. Удаленный доступ.Выбор транспорта (политика клиента)
Рекомендуемое поведение клиента:- Если настроена и доступна сопряженная прямая конечная точка, использовать ее.
- Иначе, если обнаружение находит Gateway в
local.или настроенном wide-area домене, предложить выбор в одно касание «Использовать этот Gateway» и сохранить его как прямую конечную точку. - Иначе, если настроен DNS/IP tailnet, попробовать прямое подключение.
Для мобильных узлов на маршрутах tailnet/public прямое подключение означает безопасную конечную точку, а не plaintext удаленный
ws://. - Иначе перейти на SSH.
Сопряжение + auth (прямой транспорт)
Gateway — источник истины для допуска узлов/клиентов.- Запросы на сопряжение создаются/одобряются/отклоняются в Gateway (см. сопряжение Gateway).
- Gateway обеспечивает:
- auth (токен / keypair)
- scopes/ACL (Gateway не является сырым прокси ко всем методам)
- ограничения скорости
Обязанности по компонентам
- Gateway: объявляет beacons обнаружения, владеет решениями о сопряжении и размещает конечную точку WS.
- Приложение macOS: помогает выбрать Gateway, показывает запросы сопряжения и использует SSH только как резервный вариант.
- Узлы iOS/Android: просматривают Bonjour для удобства и подключаются к сопряженному Gateway WS.