Entry-нода
Содержание
Роль в архитектуре #
TLS 1.3"| Entry Entry -->|"VLESS + gRPC
TLS 1.3"| Core Core --> Internet style Entry fill:#0891b2,color:#fff,stroke:#0e7490,stroke-width:3px style Client fill:#64748b,color:#fff,stroke:#475569 style Core fill:#1d4ed8,color:#fff,stroke:#1e40af style Internet fill:#374151,color:#fff,stroke:#1f2937
Entry-нода — первая точка контакта пользователя с сетью Sigil Gate. Клиент подключается к Entry-ноде как к обычному HTTPS-сайту; Entry-нода извлекает VPN-трафик и перенаправляет его на Core-ноду.
Характеристики #
| Параметр | Значение |
|---|---|
| Функция | Прием клиентских подключений, перенаправление на Core |
| Расположение | Внутри регулируемого региона |
| Жизненный цикл | Недолгоживущая, расходная |
| Компоненты | Nginx + Xray-core + сайт-прикрытие |
| Открытые порты | 22 (SSH), 80 (HTTP → HTTPS), 443 (HTTPS) |
| Маскировка | Обычный HTTPS-сайт |
Компоненты #
0.0.0.0:443"] Xray["Xray-core
127.0.0.1:10003"] Site["Сайт-прикрытие"] Nginx -->|"/api.v2.rpc.{path}"| Xray Nginx -->|"/"| Site end Client["Клиент"] -->|"TLS 1.3"| Nginx Xray -->|"VLESS + gRPC
TLS 1.3"| Core["Core-нода"] style Nginx fill:#7c3aed,color:#fff,stroke:#6d28d9 style Xray fill:#2563eb,color:#fff,stroke:#1d4ed8 style Site fill:#64748b,color:#fff,stroke:#475569 style Client fill:#64748b,color:#fff,stroke:#475569 style Core fill:#1d4ed8,color:#fff,stroke:#1e40af
Nginx #
- TLS-терминация с сертификатом Let’s Encrypt;
- маршрутизация по URL path: gRPC-трафик от клиентов направляется на Xray, все остальные запросы — на сайт-прикрытие;
- fallback: любой запрос без VLESS-заголовков возвращает сайт-прикрытие (HTTP 200 OK).
Xray-core #
- Слушает только на
127.0.0.1(недоступен извне); - протокол: VLESS + gRPC;
- inbound: принимает трафик от клиентов;
- outbound: перенаправляет трафик на Core-ноду через VLESS + gRPC + TLS 1.3.
Сайт-прикрытие #
- Полноценный веб-сайт (SPA), доступный по основному домену;
- контент уникальный, нейтральный;
- при ручной проверке сайт выглядит «живым» и легитимным.
Расположение и логика #
Entry-ноды размещаются внутри регулируемого региона (например, в российских ЦОД). Это принципиальное архитектурное решение:
- трафик от клиента к Entry-ноде не покидает регион;
- для систем DPI это выглядит как обычные HTTPS-запросы к локальному сайту;
- трафик к локальным ресурсам не попадает в приоритетный список для глубокого анализа.
Периферия сети #
Entry-ноды образуют периферию в топологии core-periphery:
- не связаны между собой;
- не знают о существовании других Entry-нод;
- подключены к ядру (Core-нодам), но не ко всему — каждая Entry-нода знает лишь малую часть от общего числа Core-нод.
Принцип минимальной связности #
Ограничение знания топологии — ключевой принцип безопасности. Если Entry-нода скомпрометирована (обнаружена DPI), раскрывается только малая часть ядра сети. Остальные Core-ноды остаются неизвестными для наблюдателя.
Жизненный цикл #
Entry-ноды расходные — они спроектированы для частой замены:
- Развертывание — быстрая настройка по стандартному процессу;
- Эксплуатация — прием клиентских подключений;
- Компрометация — обнаружение и блокировка DPI (потеря HTTPS-связности с Core при сохранении SSH);
- Вывод — отключение, отзыв сертификата;
- Замена — развертывание новой Entry-ноды с новым доменом и IP.
Планируется множество однотипных Entry-нод с постоянной ротацией.
Административная привязка #
Каждая Entry-нода в каждый момент времени административно закреплена за одной Core-нодой. Core-нода отвечает за:
- конфигурирование Entry-ноды;
- ротацию gRPC-путей;
- мониторинг состояния;
- выпуск сертификатов (промежуточный CA).
Привязка — условная (soft affinity). Core-ноды могут передавать Entry-ноды друг другу.
Маскировка трафика #
Участок Клиент → Entry #
| Что видит наблюдатель | Реальность |
|---|---|
| HTTPS-запросы к обычному сайту | VPN-туннель (VLESS + gRPC) |
| Стандартный TLS 1.3 handshake | Стандартный TLS 1.3 handshake |
| Валидный сертификат Let’s Encrypt | Валидный сертификат Let’s Encrypt |
| Контент сайта при прямом обращении | Сайт-прикрытие (fallback) |
Защита от активного зондирования #
- При обращении к любому URL без VLESS-заголовков — сайт-прикрытие (HTTP 200 OK);
- нет характерных ошибок, редиректов или отказов;
- gRPC-пути случайные и ротируемые — не
/ws/, не/vless/.
Взаимодействие с хранилищем данных #
В текущей архитектуре Entry-ноды конфигурируются через SSH с закрепленной Core-ноды. В перспективе Entry-ноды получат доступ на чтение к KV-кластеру для самостоятельного получения:
- своей конфигурации;
- актуальных gRPC-путей и параметров подключений к Core-нодам;
- данных для аутентификации клиентов.
Безопасность #
- Xray слушает только
127.0.0.1; - пути gRPC — случайные;
- firewall: только порты 22, 80, 443;
- SSH-доступ по ключу (доступ от Root-ноды и закрепленной Core-ноды).
Требования к серверу #
| Параметр | Минимум |
|---|---|
| CPU | 1 vCPU |
| RAM | 512 MB |
| Диск | 10 GB SSD |
| ОС | Ubuntu 22.04 / Debian 12 |
| IPv4 | Выделенный белый адрес |
| Локация | Внутри регулируемого региона |
Реагирование на компрометацию #
Порядок действий:
- Вывести скомпрометированную Entry-ноду из оборота.
- Если общее количество Core-нод > 2 — вывести Core-ноды, известные этой Entry-ноде.
- Отозвать сертификат Entry-ноды.
- Перевыпустить сертификаты для затронутых компонентов.
- Развернуть новую Entry-ноду с новым доменом и IP-адресом.