Файловый шаттл: офлайн-доставка обновлений между Edge и Master
Шаттл — канал доставки обновлений между интернет-Edge и закрытым Master для контуров, которые нельзя стыковать по IP: обновления едут бандлом на флешке, SMB-шаре или через SFTP. Master ни по одному протоколу не обращается к Edge — данные всегда переносит оператор носителем или файловая шара.
Эта страница — полное руководство: как работает канал, подключение, цикл рейса и устранение неполадок. Состав вкладки «Шаттл» — на странице вкладки Master.
Зачем это нужно#
Когда контуры разделены (закрытый сегмент без исходящего доступа, DMZ без прямых правил до Master), сетевой Edge-pull невозможен. Шаттл закрывает тот же набор задач офлайн:
- каталог Windows —
wsusscn2.cabи бюллетени MSRC: без свежего cab Windows-агент не видит новые обновления, без MSRC деградирует карта KB↔CVE. Эти позиции включаются в каждый рейс по умолчанию; - пакеты MSU (KB) — предзагрузка для раздачи хостам;
- OVAL-базы и пресеты;
- зеркала репозиториев ОС — полным деревом (Debian/Astra, RED OS, ALT, Ubuntu…);
- секции repo.lsus.ru — агенты Windows, KB, плейбуки, шаблоны политик, AI-модели;
- произвольные файлы по URL — ISO, пакеты, сертификаты, CRL;
- снимок состояния Edge и отчёт о выполненных задачах — в обратную сторону.
По шаттлу не передаются: журналы Edge и обновление его ПО.
Как это работает#
Двухходовый цикл: Master формирует запрос (request.json), Edge выполняет задачи в интернете и собирает бандл, Master принимает бандл и возвращает квитанцию.
| Сущность | Где живёт | Что это |
|---|---|---|
| Канал | карточка Edge на Master (канал «Шаттл») | Edge без URL: ID, публичный ключ, состояние, дата последнего импорта |
| Источник (Master) | «Шаттл → Источники рейса» | Локальный каталог / SMB / SFTP, откуда Master пишет и читает |
| Назначение (Edge) | вкладка «Шаттл» на Edge | Куда Edge пишет бандлы и где ищет запросы |
| Рейс | история рейсов на обеих сторонах | Запрос (Master→Edge) или приём бандла (Edge→Master) |
| Задача | очередь задач на Master | «сделай в интернете»: скачивание, sync зеркала, секция |
| Бандл | каталог bundle-<edge>-<дата>/ на носителе |
manifest.json, контрольные суммы, storage/, mirrors/, edge_state.json |
Подписи и доверие
Манифест бандла, request.json и отчёты подписываются Ed25519; отпечаток ключа — первые 16 hex-символов SHA-256 от открытого ключа. При первом контакте ключ подтверждается вручную (кнопка «Доверять и продолжить» — сверьте отпечаток с экрана другой стороны); чужой или сменившийся ключ блокирует приём. Квитанции Master→Edge подписью не защищены. Ключи лежат в данных сервера: data/shuttle_signing.key / .pub (Master), аналогично на Edge.
На носителе всё живёт в outbox/: запросы — outbox/request/<ID Edge>/request.json (у каждого Edge свой файл, они не затирают друг друга), отчёты — outbox/reports/, квитанции — outbox/receipts/. ZIP-архив из браузера outbox/ не содержит — запросы и квитанции работают только через источник (каталог/шару).
Требования#
Лицензия
Нужен лицензионный модуль «Шаттл». Без него вкладка «Шаттл» и канал в карточке Edge скрыты, API отвечает «Модуль «Шаттл» не активирован в лицензии». Права: admin.shuttle.view (просмотр) и admin.shuttle.operate (управление) — выдаются ролям, у которых уже есть права на сетевые Edge.
- Edge с выходом в интернет — обычный Edge-сервер; канал со стороны Master создаётся без URL.
- Носитель: локальный каталог (том флешки, смонтированный на хосте Master), SMB-шара или SFTP. Файловая система — exFAT / ext4 / NTFS; на FAT32 файлы больше 4 ГБ не запишутся (проверка назначения предупреждает).
- Каталоги по умолчанию: на Master —
./data/master/shuttle(переменнаяSHUTTLE_DIR), на Edge —./data/edge/export(EDGE_EXPORT_DIR). Для SMB/SFTP порты 445/22 доступны внутри контура Master. - Master сам раз в 15 минут (
LSUS_SHUTTLE_POLL_SECONDS=900) проверяет источники: появившийся бандл создает уведомление, устаревший cab и незабранный бандл — предупреждения.
Шаг 1. Подключить шаттл-Edge#
Кнопка «Подключить шаттл-Edge» на пустой вкладке «Шаттл» (или канал «Шаттл» в «Администрирование → Edge-сервер → Добавить») создает карточку Edge и источник за один проход:
- На Edge откройте вкладку «Шаттл» — блок идентичности показывает ID Edge, отпечаток и публичный ключ (PEM). Скопируйте их.
- На Master в визарде укажите имя Edge, его ID и публичный ключ, а также первый источник (имя + тип).
- Итог — карточка канала «Шаттл» и источник; на вкладке «Шаттл» появится отпечаток ключа Master с кнопкой «Копировать».
- На Edge, в мастере экспорта на шаге «Задачи Master», закрепите ключ Master (TOFU: «Доверять и применить», сверив отпечаток).

Автоэкспорт на Edge
На Edge включите «автоэкспорт»: раз в 6 часов Edge сам собирает бандл из того, что просит Master (shuttle_auto_export). Оператору остаётся перенести носитель.
Шаг 2. Добавить источник рейса#
Подвкладка «Источники рейса» — список носителей, через которые ходят запросы и бандлы:
- Локальный — каталог на хосте Master (том флешки, смонтированный диск);
- SMB — сетевая шара (хост, ресурс, учетная запись);
- SFTP — по SSH (хост, порт, логин, ключ или пароль).
Кнопка «Проверить» показывает доступность, свободное место и тип файловой системы; недоступный источник помечается счетчиком неудачных проверок и уведомлением. Один источник можно привязать к конкретному Edge — тогда визард рейса выбирает его автоматически.

Шаг 3. Собрать заказ: «Подготовить рейс»#

Визард «Подготовить рейс» (кнопка справа от полосы подвкладок) — семь вкладок:
| Вкладка | Что настраивается |
|---|---|
| Edge и носитель | какой шаттл-Edge и какой источник; здесь же конфиг Edge (имя, автоэкспорт, автоочистка, расписания загрузок) и «самые новые месяцы MSRC» по умолчанию |
| Каталог Windows | свежий wsusscn2.cab (рекомендуется, если устарел), месяцы MSRC: конкретные или «самые новые доступные» + сколько (Edge сам смотрит индекс Microsoft); KB для предзагрузки MSU |
| Репозитории ОС | sync зеркал Debian/Astra, RED OS, ALT, Ubuntu (существующее зеркало или создать новое) |
| OVAL | базы и пресеты |
| repo.lsus.ru | файловые секции: агенты Windows, KB, плейбуки, шаблоны политик, AI-модели |
| Загрузка | произвольные URL (кнопка «+»), тип файла: прочий / OVAL / ISO / пакет / сертификат / CRL |
| Сверка | итог: что поедет, что закрыто другим путём, что уже заказано у другого Edge |




На «Сверке» сначала считается очередь, затем кнопка становится «Записать request.json». Итог записи — подписанный запрос и инвентарь Master в outbox/request/<ID Edge>/, задачи переходят в состояние «В запросе»; оператору показывается инструкция: вставить носитель в Edge и открыть экспорт.

Дубликаты и «закрыто другим путём»
Если позиция уже есть на Master (приехала по HTTPS или другим рейсом) или уже заказана у другого шаттл-Edge, сверка покажет причину и позволит вернуть позицию в рейс кнопкой «Вернуть». Повторный заказ неуехавшего рейса не создает дублей — дедупликация по идентификатору задачи.
Шаг 4. Выполнить задачи на Edge#
На Edge откройте вкладку «Шаттл» и запустите «Мастер экспорта бандла» — пять шагов:
- Назначение — куда писать (локальный том / SMB / SFTP), проверка места и ФС;

- Что знает Master — квитанции прошлых рейсов: что уже принято, «Уже у Master» не повезут;

3. Задачи Master — TOFU-подтверждение ключа (при первом контакте) и выполнение request.json: Edge скачивает cab/MSRC/MSU, синхронизирует зеркала и секции. Повтор того же носителя не перекачивает — задачи дедуплицируются;

4. Состав — группы «Запрошено Master» / «Новое с прошлого рейса» / «Уже у Master» / «Не запрошено»; можно снять лишнее; счётчик «итоговый размер vs свободное место»;
5. Запись — бандл пишется с манифестом и подписью; итог: «Выньте носитель и на Master откройте «Принять рейс». Квитанция приедет следующим рейсом».


Уведомления Edge: «Бандл шаттла готов к переносу», «Задачи Master применены», ошибки экспорта, «Бандл не забран» (если Master не принял бандл дольше трёх дней).
Шаг 5. Принять рейс на Master#
Кнопка «Принять рейс» — одно окно без шагов: источник → рейс → отчёт Edge → состав → параметры импорта.
- Отчёт Edge: какие задачи выполнены/упали; упавшие можно «Повторить» (вернутся в очередь следующего рейса).
- Состав по типам со статусами относительно склада Master: «Новее» / «То же» / «Старее» / «Нет на Master» / «Битый» (по контрольной сумме). Старое по умолчанию снято; даунгрейд каталога Windows — только явным чекбоксом.
- Проверка подписи: незакреплённый ключ Edge → «Доверять ключ» (TOFU); несовпавший — импорт блокирован.
- Можно принять ZIP из браузера («Разобрать ZIP») — только для мелких бандлов (cab, MSRC, OVAL): ZIP не содержит
outbox/, дерево зеркала в ZIP отклоняется. - Импорт идёт фоново: «Скачать и импортировать» → прогресс → итог (закрытые задачи, обновлённый снимок Edge, файлы в staging).
Продуктовые типы идут в те же таблицы, что и сетевой обмен с Edge: каталог Windows, KB, OVAL, агенты, плейбуки, шаблоны, AI-модели; зеркала публикуются локальной копией, а не прокси. Типы iso, package, cert, crl складываются в панель «Полученные файлы» (скачать/удалить — удаляется только непринятое).


Шаг 6. Закрыть рейс и проверить результат#
- Квитанция пишется в
outbox/receipts/источника — следующий рейс покажет на Edge «Уже у Master» только для реально принятых позиций. - Подвкладка «История рейсов»: тип (запрос/приём), состояние (идёт / готово / ошибка / частично / отменён), бандл и сообщение.
- Задачи закрываются: предзагрузка MSU, прогоны каталога Windows, пресеты OVAL получают «Импортировано»; позиции, приехавшие другим путём, — «Закрыто другим путём».
- Карточка шаттл-Edge обновляет «последний импорт» и снимок (списки KB/агентов/MSRC с Edge) — списки файлов для следующего заказа строятся по снимку, без сети.

Очередь задач и её состояния#
Подвкладка «Очередь задач» — все заказы всех шаттл-Edge, сгруппированные по смыслу: «Каталог Windows», «OVAL», «Репозитории ОС», «Агенты Windows», «AI-модели», «Политики и сценарии», «ISO», «Пакеты», «Сертификаты», «CRL», «Прочие файлы», «Конфиг Edge».

Типы задач: загрузка по URL, wsusscn2, MSRC (месяцы или «последние N доступных»), KB MSU, sync зеркала, создать зеркало, секция repo.lsus.ru, файл с Edge, конфиг Edge.
| Состояние | Подпись в UI | Что значит |
|---|---|---|
queued |
В очереди | ждёт записи в запрос |
written |
В запросе | уехало на Edge с request.json |
applied |
На Edge | Edge выполнил, результат ждёт приёма |
imported |
Импортировано | бандл принят на Master |
failed |
Ошибка | Edge не смог выполнить (можно повторить) |
satisfied |
Закрыто другим путём | уже есть на Master: приехало по HTTPS, другим рейсом или появилось после постановки в очередь |
Операции: удалить можно только «В очереди»; «вернуть в рейс» — закрытое другим путём и ошибку; «переназначить» — только на шаттл-Edge и только из очереди. При возврате из «В запросе»/«На Edge» задача получает новый идентификатор — Edge мог уже выполнить старую и иначе пропустит повтор. Пока запрос не записан, повторный заказ cab/MSRC сливается в ту же строку; после отъезда запроса ставится новая задача. Задача «Конфиг Edge» применяет ограниченный набор ключей (имя, автоэкспорт, автоочистка, расписания загрузок) — остальной конфиг Edge через шаттл не меняется.
Уведомления шаттла#
Master: новый бандл в источнике; устарел wsusscn2.cab; старый бандл не забран; ошибка импорта; источник недоступен; «задачи ждут выгрузки запроса»; «отчёт шаттла применён». Edge: бандл готов; экспорт не удался; задачи Master применены; автоэкспорт выполнен; бандл не забран. Из колокольчика Master кнопки «Принять рейс» и «Подготовить рейс» открывают визарды сразу.
Устранение неполадок#
| Симптом | Причина | Действие |
|---|---|---|
| «подпись манифеста не совпала — импорт заблокирован» | ключ Edge сменился/чужой бандл | сверьте ключ на Edge (вкладка «Шаттл»), при легитимной смене закрепите новый через «Доверять ключ» |
| «ключ подписи неизвестен Master — подтвердите отпечаток» | первый рейс (TOFU) | сверьте отпечаток с экраном Edge и нажмите «Доверять ключ» |
| «Подпись запроса не совпала с закреплённым ключом Master. Задачи заблокированы» (Edge) | на Master переустановлены ключи подписи | на Edge повторно закрепите отпечаток Master |
| «На носителе бандл другого Edge» | один носитель используют два канала | у каждого запроса свой файл в outbox/request/<ID>/, бандлы примите по отдельности или разнесите носители |
| «ZIP содержит дерево зеркала…» | зеркало не влезает в ZIP-путь | зеркала — только через носитель/SMB/SFTP |
| «в ZIP нет manifest.json» / «Файл не является ZIP-архивом бандла» | битый/чужой архив | загрузите архив бандла заново |
| «можно удалить или скачать только файл со статусом staged» / «путь вне shuttle-staging» | попытка удалить уже принятым файл | принятое удаляется из своих разделов, не из «Полученных файлов» |
| «Удалить можно только задачу в очереди» / «вернуть… только satisfied или failed» / «переназначить… только на шаттл-Edge» | состояние задачи не допускает операцию | см. таблицу состояний выше |
| «Edge не найден — создайте карточку канала «Шаттл»» | бандл от незарегистрированного Edge | создайте карточку через «Подключить шаттл-Edge» или укажите её в визарде приёма |
| «недостаточно места в назначении: нужно N, свободно M» | тесный носитель | снимите тяжёлые позиции на «Составе» или возьмите больший носитель |
| «ФС FAT32: файлы больше 4 ГБ записать нельзя» | FAT32 | используйте exFAT/NTFS/ext4 |
| «в назначении нет запроса Master (outbox/request/)» | Edge не видит запрос | носитель с записанным «Подготовить рейс» подключён к назначению Edge? Перепишите запрос |
| «Модуль «Шаттл» не активирован в лицензии.» | нет модуля в ключе | активируйте ключ с модулем «Шаттл» («Администрирование → Поддержка») |
| stale-баннер «бандл собран …, последний импорт …» | бандл лежит, квитанции нет | примите рейс на Master и привезите квитанцию обратно |
Ограничения#
- ZIP из браузера не несёт
outbox/— квитанции и отчёты только через источник; дерево зеркала в ZIP отклоняется. - Квитанции Master→Edge не подписываются.
- Зеркала возятся полным деревом — инкрементальной доставки нет.
- Репозитории из бандла публикуются локальной копией, не прокси.
- Логи и обновление ПО Edge через шаттл не передаются.
- Master никогда не обращается к Edge по сети — «Подготовить рейс» только ставит задачи в очередь.
Сертификаты и CRL в закрытом контуре
Автозагрузка списков отзыва (CRL) при Пограничном сервере в режиме шаттла кладёт файлы в «Полученные файлы» — скачайте и импортируйте вручную. Полный цикл — в руководстве Сертификаты и списки отзыва.
Связанные страницы#
Руководства:
- Edge-сервер — интерфейс Edge, вкладка «Шаттл».
- Управление обновлениями Windows — потребители каталога и KB, которые привозит шаттл.
- OVAL / MSRC — базы и пресеты, доступные заказом в рейс.
Справочники:
- Вкладка «Шаттл» Master — состав подвкладок и права.
- Уведомления — правила и категории шаттла.
- Доступ и RBAC — права
admin.shuttle.view/operate. - repo.lsus.ru — файловые секции, которые можно заказывать рейсом.