Мультирегиональная автоматизация ломается, когда кто-то «на пять минут» вешает шлюз на 0.0.0.0, чтобы показать дашборд. Ниже — скучный по умыслу контур: с миром говорит только то, что стоит перед выходом туннеля; у OpenClaw нет маршрутизируемого сокета. Выбор PoP и приёмка задержки SSH — в матрице глобального входа 2026 (GeoDNS и SSH); когда ответы DNS не должны дёргаться под CI — см. split-horizon, GeoDNS и p95 артефактов. Ёмкость и регионы сверяйте с тарифами, чтобы билдеры и бастион жили в измеренной вами же агломерации.
Границы безопасности (до первого ssh -R)
Loopback — опорная точка доверия. Настройте OpenClaw так, чтобы админка и inference-шлюз слушали только 127.0.0.1 (или абстрактный UNIX-сокет, если сборка это поддерживает). SSH-клиент на хосте нагрузки открывает remote forward: на бастионе на loopback появляется порт, который проксирует трафик обратно к OpenClaw. Остальной VLAN не обязан иметь маршрут к машине с моделью.
Правило про не-loopback и auth. Если по какой-то причине слушатель «поднимают» с loopback на реальный интерфейс — старый балансировщик требует bind на интерфейсе, агент платформы прошит на 0.0.0.0 — относитесь к этому как к учению red team: поверхность доступна без обмена ключами туннеля, значит до OpenClaw должен стоять слой обязательной аутентификации: bearer-токен, взаимный TLS или OAuth-прокси. В политике, которую можно озвучить аудитору, формулировка простая: по умолчанию действует связка «loopback плюс туннель»; любой иной вариант — только за шлюзом с auth, исключение фиксируется в том же тикете, что и правила фаервола.
- Единственный публичный pivot — бастион. Security groups или
pf/nftпускают форвард только с edge-балансировщика или break-glass IP, а не со всего интернета, если только вы намеренно не ведёте публичное демо. - Один регион — один владелец туннеля. Каждый PoP vpshalo завершается своим бастионным аккаунтом: украденный ключ в Токио не должен давать pivot в
OPENCLAW_HOMEСингапура. - Не шарить
OPENCLAW_HOMEпо NFS между регионами. Журналы и кэш API остаются на том Mac или Linux, где крутится модель — как в других материалах про OpenClaw.
Минимально воспроизводимые шаги
Повторите набор для каждого региона. Имена и порты — примеры; подставьте теги инвентаря.
- Шаг 1 — OpenClaw только на loopback. Задайте
OPENCLAW_HOME=/var/lib/openclaw/<region>(на macOS — аналог под/usr/local/var) и явные флаги bind: HTTP и метрики — только127.0.0.1:18080. Проверка:curl http://127.0.0.1:18080/healthzс localhost. - Шаг 2 — пользователь туннеля на бастионе. На бастионе vpshalo создайте ограниченного POSIX-пользователя, чья единственная роль — принимать reverse forward.
AllowTcpForwarding yes, но для ключей автоматизации отключите интерактивную оболочку, если sshd позволяет command restriction. - Шаг 3 — обратный туннель с хоста нагрузки. Долгоживущая сессия в духе
ssh -N -o ServerAliveInterval=30 -R 127.0.0.1:7443:127.0.0.1:18080 tunnel@bastion-sin.example. Привязка удалённой стороны к127.0.0.1держит порт вне публичных интерфейсов бастиона; расширять на0.0.0.0имеет смысл лишь вместе с TLS и auth на периметре. - Шаг 4 — фронт к порту бастиона. Терминация TLS в nginx, Caddy или Envoy, upstream —
127.0.0.1:7443. Сертификаты по регионам: компрометация DNS не должна размазывать один wildcard на все континенты. - Шаг 5 — автоподъём после сбоев. Оберните SSH в systemd, launchd или лёгкий супервизор с экспоненциальным backoff и алертом после трёх подряд падений — «дрожащий» туннель часто толкает к временно открытым фаерволам «ради отладки».
# Хост нагрузки (CI-образ или удалённый Mac): только loopback
curl -fsS --max-time 2 http://127.0.0.1:18080/healthz
# Бастион: убедиться, что туннель садится локально до публикации HTTPS
curl -fsS --max-time 2 http://127.0.0.1:7443/healthz
Ротация токенов без «рвущего» туннель
Ключи хоста SSH крутятся редко, а токены к upstream-моделям и вебхукам — часто. Храните секреты в vault; перед reload unit подставляйте короткоживущий env-файл. Плейбук ротации: (1) выпустить новый токен; (2) положить рядом со старым в OPENCLAW_HOME/secrets.d/next; (3) сигнал reload процессу OpenClaw, если поддерживается, иначе рестарт — при bind на loopback периметр фаервола не меняется; (4) отозвать старый токен после пяти минут зелёных метрик. По регионам сдвигайте окна, чтобы Токио и Сингапур не перезагружались одновременно вне объявленного окна из раздела помощи и внутренних ранбуков.
Health probes и слитый пейджинг
Каждый регион шлёт одинаковый JSON: region, lane (loopback, tunnel, edge_https), rtt_ms, error_class. Небольшой merge-воркер (десяток строк на Python или scheduled query в метриках) сворачивает события в скользящее пятиминутное окно. Пейдж один раз, когда в одном регионе упали все полосы; эскалация «мультирегион» — только если минимум два региона потеряли полосу туннеля в том же окне. Одно уведомление несёт дедуплицированное доказательство вместо трёх страниц об одном и том же flap SSH.
- Полоса A — loopback на хосте с моделью. Дёшево, раз в минуту с localhost.
- Полоса B — бастион к форвард-порту. Проверяет обратный туннель без выхода в публичный интернет.
- Полоса C — синтетический HTTPS через edge. Реже (например, раз в пять минут), чтобы не путать rate limit TLS с падением OpenClaw.
Backoff повторных страниц — как в статье про MagicDNS, но вход воркера слияния теперь только SSH и HTTPS: идентичность tailnet не нужна.
FAQ
Почему не сразу Tailscale? У части регулируемых арендаторов overlay на билдерских подсетях запрещён. Обратный SSH переиспользует навыки и аудит, которые уже есть; DNS остаётся простым. Когда mesh снова разрешён, мигрируйте на сценарий с MagicDNS, не переименовывая OPENCLAW_HOME.
GatewayPorts делает схему небезопасной? Только если слушатель на 0.0.0.0 без слоя auth. Держите remote forward на 127.0.0.1, клиентские сертификаты — на nginx.
Как аутентифицируются пробы? Отдельный probe-токен рядом с merge-воркером, не на ноутбуках разработчиков; ротация в одном графике с ключами к API моделей.
Что отваливается первым при аварии? Чаще keepalive SSH, а не веса модели. Онколлу: сначала сервис туннеля, потом уже трогать модельный стек.
Когда шаги оформлены скриптами, получается воспроизводимый периметр: loopback внутри каждого региона vpshalo, узкий туннель, явный auth при любом выходе за loopback, предсказуемая смена токенов и шум алертов, который растёт с реальными инцидентами, а не с количеством проб. Этого достаточно, чтобы уверенно выкатывать функции, пока вы решаете, нужен ли overlay DNS по операционной цене.
Согласуйте PoP с задержкой туннеля
Откройте главную, сравните тарифы, затем аренду Mac в тех же регионах, где стоят SSH-бастионы: ниже RTT стабилизирует и туннели, и вытяжку артефактов CI к удалённому Mac.