Прямой ответ
Shadowsocks, VLESS и Trojan — это не VPN в классическом смысле. Они не создают виртуальный сетевой интерфейс и не инкапсулируют IP-пакеты целиком. Вместо этого они работают как прокси-протоколы, которые шифруют и маскируют трафик между клиентом и сервером, а сервер уже выходит в интернет от имени клиента. Ключевое отличие от OpenVPN, WireGuard или IPsec: эти протоколы проектировались с расчётом на активное противодействие DPI (Deep Packet Inspection), а не только на конфиденциальность.
Классический VPN легко детектируется по характерным паттернам handshake, фиксированным портам и структуре пакетов. Shadowsocks, VLESS и Trojan решают эту проблему по-разному: первый минимизирует различимые метаданные, второй переносит безопасность на транспортный слой TLS, третий полностью имитирует HTTPS-сессию.
Подробнее о том, как именно DPI распознаёт VPN-трафик, — в материале Как DPI распознаёт VPN-трафик и какие протоколы обхода существуют.
Почему классический VPN проигрывает DPI
WireGuard, например, инкапсулирует IP-пакеты поверх UDP и использует фиксированный формат заголовка. При отправке пакет шифруется публичным ключом пира и передаётся на известный UDP-порт. Структура handshake (initiation и response) имеет постоянный размер и предсказуемый формат, что позволяет DPI-системам выделять WireGuard-трафик даже без дешифровки содержимого.
OpenVPN аналогично имеет узнаваемый паттерн: TLS-handshake с характерным набором cipher suites, фиксированный opcode в начале каждого пакета. IPsec выделяется по протоколу ESP (IP protocol 50) или IKE на UDP/500 и UDP/4500.
Общая проблема: классические VPN-протоколы проектировались для приватности и производительности, но не для маскировки под легитимный трафик. DPI-системе достаточно обнаружить структурную аномалию — нестандартный TLS, подозрительную энтропию на порту 443, фиксированный размер пакетов — чтобы заблокировать соединение.
Shadowsocks: минимализм и расширяемость
Архитектура
Shadowsocks — это SOCKS5-прокси с шифрованием. Клиент устанавливает соединение с сервером, передаёт целевой адрес и данные в зашифрованном виде. Сервер расшифровывает запрос и выполняет его от своего имени.
В отличие от VPN, Shadowsocks не создаёт туннель для всех IP-пакетов. Он работает на уровне приложений: клиентское приложение (браузер, мессенджер) направляет трафик через локальный SOCKS5-порт, а Shadowsocks-клиент пересылает его на сервер.
Шифрование
Современные реализации используют AEAD-шифры (Authenticated Encryption with Associated Data). Каждый пакет содержит nonce и authentication tag, что обеспечивает и конфиденциальность, и целостность. Ключевая особенность: зашифрованный поток не имеет фиксированного заголовка или handshake-паттерна, который можно было бы однозначно идентифицировать как Shadowsocks.
Ограничения базового протокола
Сам по себе Shadowsocks не маскирует трафик под какой-либо легитимный протокол. Опытный DPI может обнаружить аномалии: высокая энтропия с первых байт соединения, отсутствие TLS ClientHello, нестандартное поведение на порту. Поэтому на практике Shadowsocks почти всегда используется с плагинами обфускации.
Плагины маскировки
- simple-obfs — оборачивает трафик в формат HTTP-запроса или TLS ClientHello. DPI видит начало, похожее на обычный HTTP или TLS, но не может корректно продолжить инспекцию.
- v2ray-plugin — инкапсулирует Shadowsocks-поток в WebSocket поверх TLS. Для наблюдателя это выглядит как обычное WSS-соединение (WebSocket Secure), которое используют многие веб-приложения.
Плагины работают как транспортная обёртка: Shadowsocks отвечает за шифрование и проксирование, плагин — за маскировку на уровне пакетов.
VLESS: лёгкий протокол поверх TLS
Место в экосистеме
VLESS — протокол из экосистемы Xray (форк V2Ray). Он пришёл на смену VMess и упрощён по дизайну: VLESS не выполняет шифрование самостоятельно. Вместо этого он полагается на транспортный слой — как правило, TLS — для обеспечения конфиденциальности и целостности.
Структура сессии
Аутентификация происходит по UUID, который клиент передаёт серверу в начале соединения. После проверки UUID сервер принимает поток данных и перенаправляет его к целевому адресу. Никакого дополнительного шифрования поверх TLS не добавляется — это снижает нагрузку на CPU и упрощает реализацию.
Транспортные слои
VLESS поддерживает несколько вариантов транспорта:
| Транспорт | Что видит DPI | Примечание |
|---|---|---|
| TCP + TLS | Обычный HTTPS | Базовый вариант, уязвим к анализу TLS-отпечатков |
| WebSocket + TLS | WSS-соединение | Маскировка под веб-трафик |
| gRPC + TLS | HTTP/2 gRPC | Напоминает трафик микросервисов |
| REALITY | TLS с чужим отпечатком | Xray-специфичный транспорт, имитирует fingerprint реального сайта |
REALITY
REALITY — транспорт, специфичный для Xray. Идея: сервер при TLS-handshake представляет себя как один из популярных сайтов (например, с определённым набором cipher suites и расширений), но фактически обрабатывает VLESS-трафик. Для DPI такое соединение неотличимо от визита на реальный HTTPS-сайт, потому что TLS-отпечаток (JA3/JA4) совпадает с легитимным.
Это решает проблему, которая остаётся у обычного TLS-транспорта: продвинутые DPI-системы анализируют не только факт наличия TLS, но и параметры handshake — набор расширений, порядок cipher suites, размер ClientHello. Если сервер использует нестандартную конфигурацию TLS, это может стать маркером.
Trojan: полная имитация HTTPS
Принцип работы
Trojan слушает на порту 443 и принимает TLS-соединения. После завершения handshake клиент отправляет пароль и целевой адрес в первых байтах зашифрованного потока. Если пароль верный, сервер проксирует трафик. Если нет — сервер может перенаправить соединение на реальный веб-сайт (fallback), что делает невозможным активное зондирование: сканер, который подключается без правильного пароля, видит обычный сайт.
Почему это устойчиво к DPI
Для внешнего наблюдателя Trojan-соединение выглядит как стандартный HTTPS-запрос:
- TCP handshake на порт 443.
- TLS ClientHello с типичным набором расширений.
- Зашифрованный поток данных.
DPI не может заглянуть внутрь TLS без ключа. Активная проверка (подключение к серверу без пароля) возвращает легитимный веб-контент. Это делает Trojan устойчивым как к пассивному, так и к активному зондированию.
Ограничения
Trojan не добавляет обфускации поверх TLS. Если DPI-система анализирует метаданные TLS-сессии (размер ClientHello, timing, соотношение upload/download), теоретически возможно статистическое выделение подозрительных соединений. На практике это требует значительных ресурсов и пока не применяется массово.
Сравнение протоколов
| Критерий | Shadowsocks | VLESS | Trojan |
|---|---|---|---|
| Уровень работы | SOCKS5-прокси | Прокси-протокол | Прокси-протокол |
| Шифрование | AEAD (встроенное) | Нет (полагается на TLS) | Нет (полагается на TLS) |
| Маскировка по умолчанию | Нет | Зависит от транспорта | TLS + fallback |
| Устойчивость к пассивному DPI | Средняя (без плагинов) | Высокая (с TLS/REALITY) | Высокая |
| Устойчивость к активному зондированию | Низкая | Зависит от конфигурации | Высокая (fallback) |
| Нагрузка на CPU | Средняя | Низкая | Низкая |
| Сложность настройки | Низкая | Средняя–высокая | Средняя |
Что выбрать в зависимости от условий
Минимальная настройка, нет агрессивного DPI. Shadowsocks с AEAD-шифром работает быстро и просто настраивается. Если блокировки нет или она основана на IP/портах, этого достаточно.
DPI анализирует TLS-отпечатки. VLESS с транспортом REALITY — наиболее устойчивый вариант, потому что имитирует fingerprint реального сайта и не даёт DPI зацепиться за аномалии handshake.
Риск активного зондирования. Trojan с fallback на реальный сайт: даже если кто-то подключится к вашему серверу напрямую без пароля, он увидит легитимный контент.
Нужна максимальная пропускная способность. VLESS без дополнительного шифрования поверх TLS даёт минимальный overhead. Shadowsocks с AEAD добавляет небольшие накладные расходы на каждый пакет.
Типичные ошибки при развёртывании
- Shadowsocks без плагина на порту 443. Без обфускации соединение не выглядит как TLS, и DPI сразу видит аномалию: порт 443, но нет ClientHello.
- VLESS с TCP-транспортом без TLS. Трафик передаётся в открытом виде или с минимальным шифрованием, что не обеспечивает ни приватности, ни маскировки.
- Trojan без fallback. Если сервер не отдаёт легитимный контент при неверном пароле, активный сканер сразу определит, что порт 443 используется нестандартно.
- Стандартный TLS-сертификат self-signed. Любой TLS с самоподписанным сертификатом на порту 443 — красный флаг для DPI. Используйте сертификаты от доверенного CA (например, через ACME/Let's Encrypt).
- Один и тот же IP для DNS-имени сервера и для прямого подключения. Если домен резолвится в IP, который уже в блэк-листе, соединение будет заблокировано до handshake.
Проверка результата
После развёртывания убедитесь, что:
- Соединение устанавливается и трафик проходит (базовая функциональность).
- При подключении к серверу без учётных данных возвращается легитимный ответ (для Trojan) или соединение сбрасывается без информативного ответа (для VLESS/Shadowsocks).
- TLS-отпечаток сервера совпадает с ожидаемым (для REALITY — совпадает с fingerprint целевого сайта).
- Утечки DNS отсутствуют: запросы идут через туннель, а не через локального резолвера.
Для проверки DNS-утечек достаточно открыть в браузере сервис, показывающий, через какой резолвер ушёл запрос, и убедиться, что это сервер туннеля, а не провайдер.
