Ячеистая топология
Содержание
Что такое ячейка #
Ячейка — это группа Core-нод, которые разделяют один SNI-домен. Когда Entry-под подключается к Core-ноде, в TLS ClientHello указывается SNI этой ячейки — независимо от реального IP-адреса конкретной Core-ноды.
Для DPI-наблюдателя весь трафик ячейки выглядит как gRPC-взаимодействие с одним и тем же сервисом, хотя реально распределён по множеству независимых серверов.
Внутри ячейки Core-ноды не взаимодействуют между собой — общий SNI-домен не означает доверия или связности.
Роутинг в ячеистой топологии #
Entry-под знает не только адрес целевой Core-ноды, но и ячейку, к которой она принадлежит. Маршрутная запись в etcd содержит:
- IP-адрес конкретной Core-ноды (куда подключаться).
- SNI-домен ячейки (что указывать в TLS ClientHello).
- Идентификатор сертификата (для проверки mTLS).
Entry подключается напрямую к IP Core-ноды, но использует SNI ячейки — так трафик маскируется под обращение к единому сервису.
Компрометация ячейки #
При компрометации ячейки:
- Управляющий кластер фиксирует факт компрометации.
- Участники ячейки получают уведомление через Telegram-бот.
- Управляющий кластер выдаёт участникам временный доступ к живым ячейкам.
- Клиенты обновляют подписку → subscription-сервис возвращает конфигурацию резервной ячейки.
- Участники поднимают новые серверы с новым доменом.
- Управляющий кластер вводит новую ячейку в строй, выдаёт новые сертификаты.
- Клиенты мигрируют на новую ячейку через обновление подписки.
- Старая инфраструктура выводится из оборота.
Резервный доступ и паритет трафика #
Живые ячейки предоставляют участникам скомпрометированной ячейки временный резервный выход. Каждый участник самостоятельно определяет квоту трафика, которую он готов отдать другим участникам сети.
Учёт трафика ведётся управляющим кластером. Резервный доступ предоставляется в рамках установленных квот.
Структура ячеек #
| Параметр | Значение |
|---|---|
| Минимум Core-нод в ячейке | 1 |
| SNI-домен | Один на ячейку, управляется администратором |
| Взаимодействие Core-нод внутри ячейки | Отсутствует |
| Взаимодействие ячеек | Только через управляющий кластер и subscription-механизм |
| Количество ячеек в сети | Не ограничено |