Найти в Дзене

Красный дракон и теневые носки уже в прошлом? Почему так популярен Xray VLESS?

Недавно была статья посвященная нашему проекту по VPN. И при его разработки естественно возник вопрос, а какой протокол будем использовать? Тогда еще год назад мне на просторе Ютуба попалось видео про какой-то Vless Reality Xray. Краем глаза я, конечно, пробежался по видео, но благополучно забил на него спустя многие года, пока острое желание в VPN не понадобилось. И вот у меня было два стула, а точнее пока один, так как мои чертоги разума еще не вспомнили за тот мимолетный ролик с Ютуба. И этот стул называется Wireguard или как я его обозвал в название статьи - Красный дракон. Примерно полгода назад я даже бы и не задался этим вопросом, потому что я сидел плотно на драконе и меня вполне все устраивало. Доступ к ресурсам заблокированным я имел всегда, и даже когда начали замедлять Ютуб, дракон справлялся со своей задачей на ура. Но возникли некоторые проблемы спустя уже время. Но немного интерлюдия. Почему все использовали Wireguard? Да, он смог обогнать такие протоколы по производител
Оглавление

Недавно была статья посвященная нашему проекту по VPN. И при его разработки естественно возник вопрос, а какой протокол будем использовать? Тогда еще год назад мне на просторе Ютуба попалось видео про какой-то Vless Reality Xray. Краем глаза я, конечно, пробежался по видео, но благополучно забил на него спустя многие года, пока острое желание в VPN не понадобилось.

И вот у меня было два стула, а точнее пока один, так как мои чертоги разума еще не вспомнили за тот мимолетный ролик с Ютуба. И этот стул называется Wireguard или как я его обозвал в название статьи - Красный дракон.

Wireguard не так уж и плох был?

Примерно полгода назад я даже бы и не задался этим вопросом, потому что я сидел плотно на драконе и меня вполне все устраивало. Доступ к ресурсам заблокированным я имел всегда, и даже когда начали замедлять Ютуб, дракон справлялся со своей задачей на ура. Но возникли некоторые проблемы спустя уже время.

Но немного интерлюдия. Почему все использовали Wireguard? Да, он смог обогнать такие протоколы по производительности как IPsec, OpenVPN и другие. Хорошая база по крипте (криптография, а не вот эти ваши биткоины): Noise protocol framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF и т.д. Имеет высокую производительность и неплохая спека аж 20 страниц.

И прежде чем использовать красного дракона я почитал, как он работает, да и вроде все меня удовлетворяло. Работает наш дракончик по следующему принципу:

  • Создается собственный интерфейс wire (wg0vlan и т.п.), ему назначается приватный ключ и IP адрес, далее уже идет настройка публичного ключа и IP адреса вашего сервера или где вы его разместили.
  • Пакеты инкапсулируются в UDP.
  • Используется концепт маршрутизации Cryptokey Routing (можно почитать на официальной странице wireguard).

И настройка его занимает буквально 5 секунд на машинах под виндой и 10 секунд на линуксах. Но принцип один и тот же. Использовал я его и на тех и тех машинах. И работал он классно. На лиунксе очень даже неплохо себя показал, особенно когда нужно было подтягивать пакеты, которые блокировались по IP адресу хостера - к примеру HashiCorp. Дракон справлялся на ура. И вот я радовался его безупречной работе, до одного момента, пока я плотно не подсел на некоторые зарубежные сервисы. Спустя какое-то время я заметил, что меня заблокировали по IP. И один конфиг я использовал на нескольких устройствах. Тогда мне и в голову не пришло, что у дракона не было никакой маскировки и анти-цензуры. Я пробовал новый конфиг, с новым IP и примерно все тоже самое спустя какое-то время - блокировка. Первый звоночек уже пошел, задумываюсь какие еще есть варианты. Был, конечно, один прикольный вариант использовать связку tor+privoxy+socks. Но это слишком дурная затея, да и не везде рабочая. И плюс вам нужно иметь пул хороших соков и проксей, которые не блокируются каждые 5 секунд. Поэтому использовать дальше дракона я уже не мог, если он не смог в анти-цензуру и маскировку. Пошли дальше.

Никакие протоколы не помогут и красный занавес?

Я вспомнил историю про Китай. Китайцы - люди непростые и изобретательные. Даже имя свой "великий файрвол", из-за которого нет доступа на такие площадки: Twitter, YouTube, Google, WhatsApp, Skype, Telegram. Они все равно там сидят. И вот тут стоит было покопаться, а что сделали китайцы, чтобы обходить цензуру?

Сначала попадались статьи про Shadowsocks и его обход цензуры и якобы в нем есть маскировка IP. Кто-то умудрился на OpenVPN обойти цензуру, но это совсем Джимми Нейтроны, которые помимо OpenVPN накатили еще всяких плюшек. Пока китайский файрвол развивался, развивались конечно и технологии обхода его. И вот это сыграло на руку сейчас всем, кто проживает в России. Ибо наш Российский файрвол потихоньку начинает набирать обороты. И почему же нам это на руку? А я отвечу их блокировочки начались еще в далеких 90х. Первые блокировки 1997–2002 годы: блокировка доменных имён и IP‑адресов. Первый период блокировки можно назвать «пещерным» — сайты массово блокировали на уровне IP-адресов и доменных имён. Ничего не напоминает? И черный список у китайцев пополнялся с гиперболической скоростью. Блокировку дополняла технология DNS-фильтрации — она перенаправляла запросы к запрещённым сайтам на ложные IP-адреса или блокирующие страницы.

Это упрощенная схема (скоммуниздил с сайта)
Это упрощенная схема (скоммуниздил с сайта)

Параллельно с блокировкой внешних веб-сайтов Китай начал развивать внутреннюю сеть, которая изначально не подвергалась цензуре. Но уже в 1997 году Информационное бюро Госсовета создало бюро информационной безопасности Китая. Новое ведомство должно было контролировать распространение информации во всём интернете. Ничего снова не напоминает? Будто все по одному сценарию идут, только одни начали раньше, а другие начинают набирать обороты.

Период с 2003 по 2009 год можно назвать золотым временем китайской цензуры. В это время разработали «второй» файрвол, который блокировал Google, Skype, YouTube и другие популярные иностранные сервисы. До того они работали лишь с незначительными ограничениями.

Для их блокировки власти Китая стали использовать технологию глубокой проверки пакетов (DPI). Она позволяет изучать полезную нагрузку проходящих через сервер пакетов данных, а также получать информацию об источнике и получателе по косвенным признакам. Благодаря этому становится легче фильтровать трафик и контролировать доступ к иностранным сервисам.

Схема работы глубокого анализа пакетов
Схема работы глубокого анализа пакетов

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

Но главное на этом этапе другое. Теперь любая компания, которая планировала создать веб-сервис для внутреннего рынка, должна была получить официальное разрешение.

В принципе из перечисленных запретов, уже становится понятно, что с цензурой в Китае все очень жестко. Так вот, как же все таки многие обходят эту цензуру?

VLESS XRAY кто ты воин?

Порывшись еще немного в интернете я натыкаюсь на статьи по VLESS+Reality Xray. И тут до меня доходит, мой чертог открылся и я вспомнил про то видео, о котором упоминал ранее. Прошерстив немалое кол-во статей и видео про Xray VLESS я понял, что это оно есть, то что мне нужно.

Истоки берут начала от некоего автора Victoria Raymond и её проект - V2Ray. Наткнулся на статью, где говорится, что автор проекта перестал выходить на связь в социальных сетях и на площадке своего проекта - гитхабе. Звучит очень интересно и уже хочется бросится в расследование, но статья не об этом. В итоге проект, некоторые энтузиасты форкнули к себе, дабы он не пропал и назвали его - V2Fly. И вот Xray - это форк V2Fly, когда некоторые разработчики из-за ряда разногласий с остальным сообществом ушли из проекта V2Fly и продолжили развивать код параллельно под названием XRay, придумав ему слоган “Penetrates everything”, что очень недалеко от правды.

V2Ray/XRay - это не протокол, а, можно сказать, фреймворк - разные протоколы с разными транспортами и расширениями под одной крышей в одном приложении.

Идея простая: что клиент, что сервер - это один бинарник. В конфигурации задаются inbounds (обработчики входящих подключений) и outbound (обработчики исходящих подключений).

На клиенте inbound обычно будет работать как HTTP- или SOCKS-прокси сервер, принимая подключения от браузеров и других программ, а outbound будет настроен как клиент какого-нибудь прокси-протокола для подключения к удаленному серверу.

На сервере все наоборот, inbound - это сервер какого-нибудь протокола (их может быть несколько одновременно с разными вариантами), а outbound - это, например “freedom” (выход в чистый интернет), “blackhole” (блокировка исходящих подключений, если вам, например, нужно ограничить доступ в зависимости от каких-то правил), или следущий прокси в цепочке, и т.д.

Непосредственно классических протоколов в V2Ray и XRay всего два с половиной: VMess, VLESS и VLite (это та самая половина).

VMess - самый первый и самый старый. Поддерживат определение свой/чужой по ID пользователя и опционально шифрование данных.

VLESS - это более новый протокол. В отличие от VMess он не предусматривает механизма шифрования (подразумевается, что шифрование должно производиться нижележащим транспортным протоколом, например TLS), а только проверку “свой/чужой” и паддинг данных (изменение размеров пакетов для затруднения детектирования паттернов траффика). В протоколе исправлен ряд уязвимостей старого VMess, и он активно развивается - например, автор планирует добавить поддержку компрессии алгоритмом Zstd - не сколько для производительности, сколько для затруднения анализа “снаружи”. При этом, при установлении соединения (хендшейке) клиент и сервер обмениваются версией протокола и списком поддерживаемых фич, то есть при дальнейшем развитии должна сохраняться обратная совместимость. В общем и целом, на сегодняшний день это самый свежий и прогрессивный протокол.

И наконец, XTLS, фирменная фишка XRay.

Сегодня почти что все веб-сайты работают не через голый HTTP, а через HTTPS (TLS). Используя прокси с TLS мы, по сути дела, еще раз шифруем уже зашифрованные данные. Во-первых это неэффективно, а во-вторых, что гораздо хуже - китайские цензоры научились определять TLS-inside-TLS (возможно с помощью нейросетей). Авторы XRay посмотрели на это, и решили: зачем шифровать то, что уже зашифровано? И придумали XTLS.

Суть проста: прокси-сервер подслушивает передаваемый трафик, и если видит, что если между клиентом (например, браузером) и удаленным хостом (например веб-сервером) устанавливается TLS-соединение, то дожидается окончания хендшейка, и после чего перестает шифровать трафик, начиная передавать пакеты данных “как есть”. В итоге существенно снижается нагрузка на прокси-сервер и клиент, и что важнее - со стороны трафик выглядит гораздо менее подозрительно (у нас подключение по TLS, поэтому до сервера бегают простые TLS-пакеты без аномалий, никакого двойного шифрования).

И вот тот самый воин - XTLS-Reality. Это самое новое изобретение от авторов XRay. Он уже поддерживается в master-ветке xray и даже в некоторых клиентах, но про него все еще мало что известно. В отличие от всех остальных вариантов, определение “свой/чужой” здесь происходит еще на этапе TLS-хендшейка в момент чтения ClientHello. Если клиент опознан как “свой”, сервер работает как прокси, а если нет - вжух! - и TLS подключение передается на какой-нибудь другой абсолютно реальный хост с TLS (например, google.com или gosuslugi.ru), и таким образом клиент (или цензор, желающий методом active probing проверить, а что же прячется на том конце) получит настоящий TLS-сертификат от google.com или gosuslugi.ru и настоящие данные с этого сервера. Полное соответствие. Определение "свой-чужой" происходит по значения некоторых полей пакетов TLS-хендшейшка, которые формально должны быть рандомные, а по факту генерируются специальным образом, но не зная исходного "секрета", который использовался при их генерации, невозможно определить, действительно ли это рандом или нет - соответственно для прокси этот механизм позволяет достоверно определить подлинность клиента, но вместе с тем не вызывать подозрения у цензоров и быть устойчивым к replay-атакам.

Думаю вы уже понимаете, что на фоне Wireguard'ов и OpenVPN'ов Xray и рядом не стоит, на много выше их. Далее я бы хотел уже сделать небольшую вырезку в сравнение протоколов, а точнее Wireguard и Shadowsocks и VLESS/Reality.

Сравниваем и выбираем

1. Маскировка и анти-цензура

  • VLESS/Reality поддерживает продвинутые функции маскировки, которые делают трафик почти неотличимым от обычного HTTPS-трафика. Это затрудняет обнаружение и блокировку со стороны цензурирующих организаций, таких как "Великий Китайский Файервол" и другие системы DPI.
  • WireGuard не предлагает встроенной маскировки трафика, что делает его более подверженным блокировке.
  • Shadowsocks также имеет маскировку, но в целом её эффективность ниже по сравнению с VLESS/Reality, особенно при противодействии продвинутым системам DPI.

2. Гибкость и расширяемость

  • VLESS/Reality активно развивается благодаря сообществу Xray и поддерживает множество настроек для оптимизации сети и различных конфигураций. Это дает пользователям гибкость для подстройки под специфические задачи, такие как балансировка нагрузки и маршрутизация трафика.
  • WireGuard имеет упрощённую архитектуру, что обеспечивает высокую скорость и безопасность, но ограничивает гибкость настройки.
  • Shadowsocks предлагает меньше настроек и модулей, чем Xray, что делает его менее подходящим для сложных сетевых инфраструктур.

3. Скорость и производительность

  • VLESS/Reality оптимизирован для низких задержек и высокой производительности при нагрузках, что позволяет ему оставаться стабильно быстрым даже при использовании в сложных сетевых условиях, таких как мобильные сети и сетевые соединения с высокой задержкой.
  • WireGuard также хорош по скорости, но его уязвимость к блокировке в цензурируемых сетях может стать проблемой, особенно для пользователей в странах с высоким уровнем интернет-контроля.
  • Shadowsocks имеет достойную производительность, но зачастую уступает VLESS в отношении обработки больших объемов трафика и поддержке стабильной скорости в сложных условиях.

4. Уровень защиты и конфиденциальности

  • VLESS/Reality предлагает дополнительные уровни защиты, такие как принудительное использование TLS и возможность гибкой настройки для конфиденциальности данных. Маскировка трафика помогает избежать перехвата и анализа трафика, защищая пользователей от утечек.
  • WireGuard поддерживает только одну фиксированную конфигурацию шифрования, и из-за отсутствия поддержки динамических IP может быть менее удобным для некоторых задач.
  • Shadowsocks предлагает базовое шифрование, которое часто подходит для обхода блокировок, но уровень защиты данных в нем ниже, чем в VLESS/Reality.

5. Широкий выбор опций и поддержка мобильных платформ

  • VLESS/Reality предоставляет множество вариантов настроек для мобильных пользователей и платформ, поддерживает качественную работу в условиях сетей с частыми разрывами. Это делает его удобным для пользователей, которые часто меняют сети или работают в нестабильных условиях.
  • WireGuard хоть и работает на большинстве платформ, требует ручной настройки в условиях частых изменений IP, что может создать неудобства для мобильных пользователей.
  • Shadowsocks поддерживает мобильные платформы, но его производительность и стабильность часто уступают VLESS/Reality.

Ну и как итог: VLESS/Reality на основе Xray представляют собой отличное решение для пользователей, которые ценят не только скорость и производительность, но и высокий уровень конфиденциальности, защиту от цензуры и удобство настройки.

Спасибо за статью - https://habr.com/ru/articles/727868/

Контактные данные:

🤖Телеграм бот - @snork_vpn_bot

🚾 Сообщество - t.me/grayguardian_snorkvpn

🙋‍♂️Поддержка бота - @snork_vpn_support