Перейти к содержанию

Плоскость данных

·2 минуты·
Пользовательский трафик проходит через цепочку: Клиент → Entry-нода → Core-нода → Интернет. Root-нода не участвует в передаче данных.
graph TD Client["Клиент
внутри региона"] Entry["Entry-нода
внутри региона"] Core["Core-нода
вне региона"] Internet["Интернет"] Client -->|"VLESS + gRPC
TLS 1.3"| Entry Entry -->|"VLESS + gRPC
TLS 1.3"| Core Core --> Internet style Client fill:#64748b,color:#fff,stroke:#475569 style Entry fill:#0891b2,color:#fff,stroke:#0e7490 style Core fill:#1d4ed8,color:#fff,stroke:#1e40af style Internet fill:#374151,color:#fff,stroke:#1f2937

Топология «ядро-периферия» #

Ядро сети образовано Core-нодами, которые связаны между собой (mesh). Периферия — Entry-ноды — подключается к ядру, но не связана между собой.

Для передачи данных Entry-нода может быть связана с несколькими Core-нодами, но лишь с небольшой частью от общего числа Core-нод. Это ограничение реализует принцип минимальной связности: при компрометации Entry-ноды раскрывается лишь малая часть ядра сети.

Маскировка трафика #

На каждом участке сети трафик неотличим от легитимной HTTPS-активности:

УчастокЧто видит наблюдательРеальность
Клиент → EntryHTTPS-запросы к обычному сайтуVPN-туннель (VLESS + gRPC)
Entry → CoregRPC-вызовы к API микросервисовVPN-туннель (VLESS + gRPC)

На обоих участках:

  • TLS 1.3 handshake — стандартный, неотличимый от обычного;
  • валидный сертификат Let’s Encrypt;
  • при обращении без VLESS-заголовков сервер отдает сайт-прикрытие (HTTP 200 OK).

Защита от активного зондирования #

На каждом узле сети в плоскости данных сервер Xray расположен за веб-сервером. При обращении на любой URL без правильных VLESS-заголовков веб-сервер возвращает сайт-прикрытие. Наблюдатель не может отличить «секретный путь» от «обычной страницы» — нет характерных ошибок, редиректов или отказов.

Протокольный стек #

graph TB subgraph "Протокольный стек" TLS["TLS 1.3
Let's Encrypt"] gRPC["gRPC (HTTP/2)"] VLESS["VLESS"] end TLS --- gRPC gRPC --- VLESS style TLS fill:#7c3aed,color:#fff,stroke:#6d28d9 style gRPC fill:#2563eb,color:#fff,stroke:#1d4ed8 style VLESS fill:#1d4ed8,color:#fff,stroke:#1e40af
УровеньТехнологияНазначение
ШифрованиеTLS 1.3Шифрование канала, валидный сертификат
ТранспортgRPC (HTTP/2)Мультиплексирование, маскировка под API
ПротоколVLESSЛегковесный прокси-протокол

Рассмотрев альтернативы, gRPC выбран как единственный транспорт:

  • устойчив к обнаружению (в отличие от XHTTP);
  • высокая производительность (в отличие от WebSocket);
  • трафик идентичен легитимным gRPC API микросервисов.

Динамическая ротация путей #

Core-ноды периодически генерируют новые случайные gRPC-пути на участке Entry → Core. Это затрудняет статистический анализ трафика. Клиентские пути при этом не затрагиваются.