Это не сценарий с Tailscale MagicDNS. Если вам нужны имена в tailnet, ACL mesh и пробы «из коробки» по overlay, опирайтесь на материал OpenClaw, MagicDNS и мультирегион на vpshalo: там другая плоскость доверия и другой набор рычагов. Здесь мы сознательно обходим overlay VPN: на каждом региональном узле OpenClaw слушает только loopback, наружу выходит узкий обратный SSH-туннель на небольшой флот бастионов, токены крутятся по календарю, а отдельный воркер сливает несколько health probes в одно осмысленное уведомление для дежурных.

Мультирегиональная автоматизация ломается, когда кто-то «на пять минут» вешает шлюз на 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
Если коллегам нужен шлюз без VPN, остановитесь на шаге 4 и отдайте наружу HTTPS на бастионе. Не пропускайте TLS только потому, что OpenClaw «внутренний».

Ротация токенов без «рвущего» туннель

Ключи хоста 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, а не веса модели. Онколлу: сначала сервис туннеля, потом уже трогать модельный стек.

Оговорка: релизы OpenClaw отличаются именами флагов и путями health. Сверяйте bind и сигналы reload с вашей версией. Конфигурация sshd должна следовать базовой линии упрочнения организации — статья задаёт намерение, а не полную политику sshd.

Когда шаги оформлены скриптами, получается воспроизводимый периметр: loopback внутри каждого региона vpshalo, узкий туннель, явный auth при любом выходе за loopback, предсказуемая смена токенов и шум алертов, который растёт с реальными инцидентами, а не с количеством проб. Этого достаточно, чтобы уверенно выкатывать функции, пока вы решаете, нужен ли overlay DNS по операционной цене.

Публичные шаги

Согласуйте PoP с задержкой туннеля

Откройте главную, сравните тарифы, затем аренду Mac в тех же регионах, где стоят SSH-бастионы: ниже RTT стабилизирует и туннели, и вытяжку артефактов CI к удалённому Mac.

Арендовать Mac Тарифы Помощь Другие статьи