VLESS, Shadowsocks и Trojan — чем отличаются современные протоколы

VLESS, Shadowsocks и Trojan — три протокола, которые регулярно упоминаются в обсуждениях современных VPN-клиентов. Все три решают похожую задачу — спрятать VPN-трафик от анализа — но делают это по-разному. Разберёмся, как они устроены и в каких сценариях каждый из них уместен.

Shadowsocks — пионер маскировки

Shadowsocks появился в 2012 году как лёгкий прокси с шифрованием. Главная цель — заменить SOCKS5, который передаёт трафик в открытом виде, на нечто более устойчивое.

Как устроен. Клиент и сервер обмениваются трафиком, зашифрованным симметричным шифром (изначально RC4-MD5, потом AES-GCM, ChaCha20-Poly1305). Структура пакета простая: длина данных + зашифрованное содержимое.

Слабое место. Ранние версии Shadowsocks имели характерную «энтропийную» сигнатуру — содержимое выглядело как случайный шум, что само по себе подозрительно (обычный интернет-трафик далеко не весь шифрован одинаково равномерно). Современные системы анализа научились это детектировать.

Shadowsocks 2022 (AEAD-2022) — обновлённая версия, которая закрывает эту проблему добавлением случайных «padding»-байтов и улучшенной криптографии.

Когда уместен. В средах с умеренным анализом трафика, на устройствах с ограниченными ресурсами (старые роутеры, IoT), для простого «бронирования» SOCKS-туннелей.

Trojan — мимикрия под HTTPS-сайт

Trojan появился в 2017-2019 как ответ на детекцию Shadowsocks. Идея радикальная: сделать вид, что это обычный HTTPS-сайт.

Как устроен. Trojan-сервер слушает порт 443, имеет валидный TLS-сертификат (например, от Let's Encrypt) и реальный веб-сайт за тем же портом. При подключении клиент устанавливает обычное TLS-соединение и отправляет внутри него специальный пароль. Если пароль верный — трафик уходит в туннель. Если неверный — Trojan показывает «фолбэк-сайт» (обычно настоящий простенький веб-сайт), что выглядит абсолютно нормально для нападающего.

Сильное место. С точки зрения внешнего наблюдателя Trojan-сервер — это веб-сайт на 443-м порту. TLS-рукопожатие настоящее, сертификат настоящий, доменное имя реальное. Активная проба (попытка подключиться без пароля и посмотреть на ответ) тоже ничего подозрительного не даёт — отвечает легитимный фолбэк-сайт.

Слабое место. Trojan требует своего домена и валидного TLS-сертификата — это организационная сложность. Также Trojan не маскирует тот факт, что клиент после рукопожатия делает запрос определённой структуры — современные сложные DPI-системы при достаточно длительном наблюдении могут заметить статистические аномалии трафика.

Когда уместен. В средах с активным анализом TLS-трафика, когда нужна простая настройка через nginx/Caddy и собственный домен.

VLESS+Reality — третье поколение

VLESS — это транспортный протокол из проекта Xray (форк V2Ray). Сам по себе VLESS не предлагает шифрования — он только идентифицирует пользователя по UUID и передаёт его трафик. Шифрование делает транспортный слой: TLS, WebSocket, HTTP/2, gRPC.

Главная фишка — это Reality, технология, появившаяся в 2023 году. Она решает фундаментальную проблему Trojan: где взять домен и сертификат?

Как устроен. При подключении клиент инициирует TLS-рукопожатие с сервером, представляясь обычным TLS-клиентом, идущим на популярный сайт (например, www.microsoft.com или www.apple.com). Сервер реально завершает TLS-рукопожатие, проксируя его на этот сайт. Если активная проба видит «настоящие» TLS-сертификаты этого популярного сайта — она не может отличить настоящий клиент от VLESS-клиента. После рукопожатия VLESS-сервер «перехватывает» соединение и направляет трафик в туннель.

Сильные стороны.

  • Не нужен свой домен и сертификат — используется чужой популярный
  • Активная проба не работает — сервер реально проксирует TLS на легитимный сайт
  • Сертификаты совпадают с реальными сертификатами популярного домена
  • Поддерживается современная криптография TLS 1.3

Слабые стороны.

  • Требует современной версии Xray-сервера и клиента
  • Подменяемый домен («destination») должен быть тщательно выбран — не любой сайт подходит
  • При длительном наблюдении статистический анализ всё ещё возможен, но его сложно автоматизировать

Когда уместен. Это де-факто стандарт 2024-2026 для устойчивых VPN-сервисов. BypsVPN использует именно VLESS+Reality как основной протокол.

Сравнение в таблице

Параметр Shadowsocks Trojan VLESS+Reality
Год выпуска 2012 2017-2019 2023
Маскировка Случайный шум Реальный TLS-сайт Реальный TLS чужого сайта
Нужен свой домен Нет Да Нет
Нужен сертификат Нет Да (Let's Encrypt) Нет
Активная проба Видит шум Видит фолбэк-сайт Видит реальный сайт
Скорость Высокая Средняя (TLS-overhead) Средняя (TLS-overhead)
Простота настройки Простая Средняя Сложная
Зрелость экосистемы Очень высокая Высокая Растёт

Какой выбрать

Shadowsocks — для простых задач и устаревших устройств. Сегодня его уже редко используют как основной протокол, но он полезен как резервный — например, через мост-туннель в более сложную инфраструктуру.

Trojan — отличный выбор, если у вас есть свой домен и вы хотите развернуть VPN-сервер на своём VPS «в один клик». Конфигурация совместима с nginx-сайтом и не требует Reality.

VLESS+Reality — наиболее устойчивый вариант в современных условиях. Это то, что используют коммерческие VPN-сервисы, нацеленные на стабильность работы. Минус — настройка сложнее и требует современного серверного ПО.

Многослойные конфигурации

В продвинутых развёртываниях встречаются комбинации: VLESS внутри WebSocket внутри TLS, например. Это даёт ещё более глубокую маскировку — снаружи это просто WebSocket-соединение к веб-приложению, а внутри уже идёт VLESS. Минус — каждая «обёртка» добавляет накладные расходы и латентность.

BypsVPN использует VLESS+Reality без дополнительных «слоёв» — это даёт хороший баланс между маскировкой и скоростью. Если интересны подробности нашего стека, читайте материал о TLS 1.3 и шифровании.