Fexyn
Fexyn
All posts

VLESS vs Shadowsocks

Fexyn Team··7 min read

20 апреля 2012 года китайский разработчик под ником «clowwindy» запушил Python-скрипт на GitHub. Через два дня поделился им на V2EX, китайском форуме разработчиков. Проект назывался Shadowsocks. Это был зашифрованный SOCKS5-прокси, простой по дизайну, и он дал миллионам людей в Китае путь мимо Великого китайского файрвола.

Три года Shadowsocks был самым надёжным инструментом обхода китайской интернет-цензуры. Потом, 22 августа 2015, к clowwindy пришла полиция и заставила удалить репозиторий. Его последний commit message: «Надеюсь, однажды я буду жить в стране, где у меня свобода писать любой код, не боясь.»

Проект выжил через форки. Сообщество понесло его дальше. Но Великий файрвол тоже эволюционировал, и к 2024 методы детекта, которые Китай развернул против Shadowsocks, стали крайне эффективными. Не потому, что Shadowsocks плохо спроектирован. Потому что фундаментальный подход делать трафик похожим на случайный шум оказался с потолком.

VLESS Reality, выпущенный в Xray-core v1.8.0 в начале 2023, берёт другой подход. Вместо шифрования трафика в случайность, маскирует VPN-соединения как обычные HTTPS-сессии к настоящим сайтам. Это различие важнее, чем кажется.

Как работает Shadowsocks

Shadowsocks — зашифрованный прокси. Клиент подключается к удалённому серверу, и весь трафик между ними шифруется pre-shared ключом с AEAD-шифрами (обычно chacha20-ietf-poly1305 или aes-256-gcm). С точки зрения сетевого наблюдателя, соединение — поток байт, выглядящих случайно. Без заголовков протокола, паттерна handshake, идентифицируемой структуры.

Это была цель дизайна. Если трафик не похож ни на что узнаваемое, DPI-система не может матчить против известной подписи протокола. В 2012 это работало. Файрвол Китая в основном матчил против фингерпринтов протоколов, и трафик, не совпадавший ни с чем, проходил.

Архитектура легковесна. Сервер Shadowsocks — один бинарь с минимальной конфигурацией. Экосистема клиентов огромна: ShadowsocksR, Clash, Surge, Quantumult, десятки приложений Android и iOS. Для стран с умеренной цензурой — Индонезия, Турция, Египет — Shadowsocks всё ещё работает надёжно, потому что их DPI-инфраструктура недостаточно изощрена для флага.

Но Китай — не эти страны.

Проблема энтропии

Вот в чём дело со случайным шумом: у него есть статистическая подпись.

У легитимного HTTPS-трафика есть структура. TLS 1.3 handshake начинается с ClientHello, содержащего шифры, расширения и SNI. Сервер отвечает сертификатами — ASN.1-кодированные X.509 структуры. У них низкая энтропия в предсказуемых местах. Размеры записей следуют паттернам, привязанным к обычным веб-фреймворкам. Даже зашифрованные данные приложения после имеют характерные распределения.

Shadowsocks AEAD-трафик имеет почти идеальную энтропию с первого байта. Соотношение единиц к нулям приближается к 1:1 в каждом сегменте. Нет низкоэнтропийных заголовков, структурированного handshake, обмена сертификатами. Каждый байт выглядит равномерно случайным.

Эта равномерность — проблема. На реальной сети ничто не выглядит так. HTTPS не выглядит. DNS не выглядит. HTTP/2 не выглядит. Поток байт с равномерно высокой энтропией и без структуры протокола — парадоксально одна из самых отличительных вещей, которые можно отправить по сети.

Китай это понял.

Как Китай детектит Shadowsocks

Исследование, опубликованное в GFW Report и представленное на IMC 2020, задокументировало пайплайн детекта Китая детально. Работает в две фазы.

Фаза один: пассивный анализ. GFW делает измерение энтропии на первом пакете данных каждого нового соединения. Если нагрузка имеет равномерно высокую энтропию и не совпадает со структурой известного протокола (TLS, HTTP, SSH, DNS), соединение флагается для активного зондирования. Происходит в реальном времени, на backbone-роутерах, на line speed.

Фаза два: активное зондирование. Раз соединение флагнуто, GFW отправляет пробы из пула 12000+ IP-адресов. Эти пробы шлют семь разных типов тестового трафика к подозреваемому серверу Shadowsocks: replay handshakes, частичные соединения, malformed запросы и protocol-specific challenges. Настоящий Shadowsocks-сервер отвечает на пробы иначе, чем легитимный сервис. Веб-сервер возвращает HTTP-ошибки. SSH-сервер шлёт version banner. Shadowsocks-сервер либо расшифровывает и проксирует мусор, либо дропает соединение способом, статистически отличимым от нормальных ошибок протокола.

Комбинация разрушительна. На февраль 2026 у Shadowsocks примерно 95% rate детекта на китайских сетях. На CN2 (премиум-backbone China Telecom) success rate Shadowsocks-соединений около 76%, но падает в политически чувствительные периоды.

Это не теоретические числа. Они из crowdsourced тестирования через множественные китайские провайдеры и exit-точки.

Подход VLESS Reality

VLESS Reality стартует с другой предпосылки. Вместо того чтобы делать трафик похожим на ничто, делать его похожим на что-то конкретное. Что-то скучное. Что-то, на что миллиарды соединений похожи каждый день.

Когда клиент VLESS Reality подключается к серверу, делает настоящий TLS 1.3 handshake. Сервер дотягивается до легитимного сайта (цель «dest», часто что-то вроде www.microsoft.com или www.apple.com) и форвардит реальный TLS-сертификат сайта клиенту. Для любого сетевого наблюдателя соединение выглядит идентично нормальной HTTPS-сессии с Microsoft или Apple. SNI совпадает. Сертификат настоящий. TLS-фингерпринт совпадает с реальным браузером.

VPN-данные едут внутри этой TLS-сессии, используя мультиплексирование Xray-core. Снаружи неотличимо от того, как кто-то браузит сайт Microsoft.

Активное зондирование проваливается против этой настройки. Если GFW отправит пробу на VLESS Reality сервер, сервер ответит точно как ответил бы сайт-назначение, потому что проксирует ответы реального сайта. Нет поведенческой разницы для детекта.

Результат: VLESS Reality соединения имеют скорость детекта ниже 5% на китайских сетях. Success rate на CN2 маршрутах около 98%. Этот разрыв между 76% и 98% — разница между протоколом, работающим иногда, и протоколом, работающим надёжно.

Голова к голове

Характеристики производительности рассказывают более нюансную историю, чем одни скорости детекта.

Устойчивость к детекту

Shadowsocks ловится энтропийным анализом на первом пакете. VLESS Reality проходит энтропийный анализ, потому что трафик имеет тот же статистический профиль, что HTTPS. На сетях с базовым DPI (большая часть Юго-Восточной Азии, часть Ближнего Востока) оба протокола работают нормально. На сетях с продвинутым DPI (Китай, Иран, всё больше Россия) Shadowsocks ненадёжен. VLESS Reality работает.

Задержка

Shadowsocks быстрее. Соединение Шанхай-Лос-Анджелес через Shadowsocks обычно показывает 130–160 мс задержки. Тот же маршрут через VLESS Reality — 160–210 мс. Лишняя задержка от оверхеда TLS-handshake и шага форвардинга сертификата. Для большинства использования 30–50 мс дополнительной задержки незаметны. Для соревновательного гейминга через VPN (да, это делают из Китая) важно.

Маршрутизация через CDN

Тут архитектурная разница реально показывает. Shadowsocks не может маршрутизировать через CDN-инфраструктуру. Это сырое TCP-соединение между клиентом и сервером. Если прямой путь между провайдером и сервером заблокирован или троттлится — застрял.

VLESS поддерживает WebSocket и XHTTP-транспорты, что значит может ехать через Cloudflare, AWS CloudFront или других CDN-провайдеров. Трафик входит в CDN на ближайшей edge-ноде и выходит на CDN-ноде ближайшей к VPN-серверу. Цензор видит соединение к Cloudflare, хостящему миллионы легитимных сайтов. Блокировка Cloudflare значит ломку половины интернета. Большинство правительств не сделает. (Иран коротко пробовал в 2022. Откатили за дни.)

Использование ресурсов

Shadowsocks легче. Сервер Shadowsocks может обрабатывать тысячи одновременных соединений на $5/мес VPS. VLESS Reality требует больше CPU для TLS-операций и больше памяти для состояния соединения. Для операторов, запускающих прокси-серверы для друзей и семьи, Shadowsocks дешевле в хостинге. Для коммерческого VPN-сервиса, нуждающегося в надёжности на враждебных сетях, лишние ресурсы — мелкая стоимость.

Экосистема клиентов

Shadowsocks существует с 2012. Экосистема клиентов огромна. Почти каждый прокси-менеджер на каждой платформе поддерживает. Clash, Surge, Quantumult X, v2rayNG, десятки других.

Поддержка VLESS Reality новее, но распространяется. Xray-core — референс-реализация. v2rayN, v2rayNG, Nekobox, Hiddify, Streisand все поддерживают. Разрыв сокращается, но Shadowsocks всё ещё имеет более широкую совместимость клиентов сегодня.

Когда что использовать

Честный ответ: зависит от того, где ты.

Shadowsocks — правильный выбор, когда противник имеет базовый или умеренный DPI. Страны вроде Вьетнама, Турции, Индонезии или Египта. Настройка проще, задержка ниже, серверный оверхед меньше. Если Shadowsocks надёжно работает на твоей сети — нет причин использовать что-то тяжелее.

VLESS Reality — правильный выбор, когда имеешь дело с продвинутым state-level DPI. Китай, Иран, Россия после 2024, и любая сеть, где Shadowsocks-соединения детектируются и убиваются. Лишняя задержка и сложность стоят, когда альтернатива — протокол, проваливающийся 95% времени.

Часть сетей попадает между. В этих случаях наличие доступа к обоим протоколам с автоматическим fallback — практический ответ. Сначала пробуй быстрый. Если падает — переключайся на спроектированный для сложных сред.

Что это значит для Fexyn

Fexyn VPN включает VLESS Reality с Vision flow как один из трёх протоколов рядом с WireGuard и OpenVPN. Наш движок ротации пробует протоколы по очереди и фолбэкает, когда один заблокирован. На неограниченных сетях получаешь скорость WireGuard. На цензурированных клиент переключается на VLESS Reality без ручного вмешательства.

Не включаем Shadowsocks. Не потому что плохой протокол. Он изменил поле. Работа clowwindy дала миллионам доступ к открытому интернету, и сообщество, понёсшее проект после 2015, заслуживает реального уважения. Но для коммерческого VPN-продукта, нуждающегося в надёжной работе на самых сложных средах, подход VLESS Reality выглядеть как нормальный трафик, а не как ничто, — более сильное основание.

Shadowsocks решил проблему 2012. VLESS Reality с Vision решает проблему 2026. Цензоры стали лучше в детекте. Протоколам пришлось догонять.

Если хочешь технических деталей того, как форвардинг TLS у VLESS Reality работает, мы написали полный разбор в VLESS Reality объяснён. Для сравнения с WireGuard (совершенно другой tradeoff) — VLESS vs WireGuard.

VLESS vs Shadowsocks | Fexyn VPN