Dev.to Security 🔐 Cybersecurity 👁 0

VLESS Reality простыми словами: как работает протокол и почему мы построили на нём свой VPN

Я Вадим, разработчик Unlimited VPN; в конце статьи — рассказ о нашем сервисе (это реклама). Классические VPN-протоколы хорошо шифруют трафик, но плохо прячут сам факт использования VPN. В сетях с DPI (глубокой инспекци

Я Вадим, разработчик Unlimited VPN; в конце статьи — рассказ о нашем сервисе (это реклама).

Классические VPN-протоколы хорошо шифруют трафик, но плохо прячут сам факт использования VPN. В сетях с DPI (глубокой инспекцией пакетов) это становится главной проблемой: соединение не расшифровывают, его просто узнают и обрывают. VLESS с транспортом Reality решает именно эту задачу. Ниже разберу, как он устроен, без маркетинга и выдуманных цифр.

Что такое VLESS и Xray

Xray-core — открытый прокси-движок, ответвившийся от V2Ray. Он поддерживает несколько протоколов (VMess, VLESS, Trojan, Shadowsocks) и разные транспорты (TCP, WebSocket, gRPC, XHTTP).

VLESS — лёгкий протокол передачи данных внутри Xray. Его особенности:

  • Нет собственного шифрования. VLESS лишь идентифицирует клиента по UUID и передаёт данные. Шифрование обеспечивает внешний слой — TLS или Reality. Это убирает двойное шифрование, которое было у VMess.
  • Нет зависимости от точного времени, в отличие от VMess, где рассинхрон часов ломал подключение.
  • Поддержка XTLS Vision (flow xtls-rprx-vision). Этот режим борется с характерной для прокси картиной «TLS внутри TLS»: когда внутренний трафик уже зашифрован TLS, Vision выравнивает (паддит) размеры первых пакетов, чтобы по ним было сложнее распознать туннель.

Сам по себе VLESS — просто «конверт». Вся маскировка — в транспорте поверх него.

Что делает Reality

Чтобы обычный TLS-прокси выглядел как сайт, раньше нужно было купить домен, получить сертификат и поднять веб-сервер. У такой схемы есть слабые места:

  1. Домен и IP можно внести в чёрный список.
  2. Цензор может сам подключиться к серверу (активное зондирование) и увидеть, что за «сайтом» ничего нет или он ведёт себя странно.
  3. SNI (имя сайта в открытом виде в ClientHello) выдаёт, куда идёт подключение.

Reality устроен иначе.

Чужое рукопожатие вместо своего сертификата

Сервер Reality не имеет собственного сертификата. В конфигурации указывается реальный сторонний сайт (параметр dest/target и список serverNames), который поддерживает TLS 1.3 — например, крупный сайт с HTTP/2.

Клиент отправляет ClientHello с SNI этого сайта. Со стороны сети подключение выглядит как обычный заход на этот популярный сайт. Отпечаток клиента подделывается под настоящий браузер с помощью uTLS (параметр fingerprint, например chrome).

Как сервер отличает «своего»

Внутри ClientHello клиент прячет данные для аутентификации, используя поле session ID и обмен ключами x25519 с публичным ключом сервера (publicKey) и коротким идентификатором (shortId).

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

Что это даёт

  • Устойчивость к активному зондированию: проверка сервера показывает реальный сайт с реальным сертификатом.
  • Устойчивость к блокировкам по SNI: SNI указывает на легитимный популярный домен, блокировать который дорого для самого цензора.
  • Не нужен свой домен и сертификат: нечего вносить в чёрный список по имени, нечего продлевать.

Ограничения (честно)

  • IP сервера всё равно виден. Если в сети блокируют целые подсети хостеров или «белые списки» IP, Reality не спасёт. Поэтому важно, чтобы выбранный сайт для маскировки был правдоподобным для этого IP (например, не выдавать сервер в небольшом дата-центре за CDN крупной компании, у которой известные диапазоны адресов).
  • Статистический анализ трафика (объёмы, длительность, тайминги) теоретически остаётся возможным — Reality маскирует рукопожатие, а не поведение пользователя.
  • Это не «невидимость», а значительное повышение стоимости обнаружения.

Сравнение по заметности

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

Протокол Как выглядит в сети Типичная уязвимость к блокировке
OpenVPN Узнаваемые заголовки и рукопожатие, даже в режиме TCP/443 Легко определяется сигнатурами DPI
WireGuard UDP с фиксированными типами и размерами сообщений рукопожатия Очень легко узнаётся по структуре пакетов; без обфускации блокируется точечно
Shadowsocks Поток без структуры, «похожий на случайный шум» Энтропийный анализ и активное зондирование; исторически это использовалось для блокировок
VLESS + TLS (свой домен) Обычный HTTPS Блокировка домена/IP, зондирование, признаки TLS-в-TLS
VLESS + Reality HTTPS к реальному популярному сайту Блокировка по IP/подсетям, статистический анализ

WireGuard и OpenVPN — отличные протоколы для своей задачи: защищённого туннеля в сети, где VPN не запрещают. Они просто не проектировались для маскировки.

Клиенты

Конфигурация VLESS Reality обычно передаётся ссылкой вида vless://... или подпиской. Поддерживают её:

  • Happ — iOS, Android, Windows, macOS, Android TV;
  • v2RayTun — iOS, Android, Windows и др.;
  • v2rayNG — Android;
  • Streisand, FoXray, Shadowrocket — iOS;
  • Nekoray / NekoBox, Hiddify, v2rayN — десктоп и мобильные платформы.

Важно, чтобы клиент был основан на свежей версии Xray-core или sing-box с поддержкой Reality.

Типичная архитектура

Типичная настройка Reality выглядит так:

  • Транспорт TCP + Reality + flow xtls-rprx-vision. Самая проверенная связка: меньше признаков TLS-в-TLS и минимум накладных расходов.
  • Сайт для маскировки подбирают под IP-сеть сервера. Обычно выбирают ресурс с TLS 1.3 и HTTP/2, для которого трафик с такого адреса выглядит правдоподобно.
  • Отдельный UUID на каждого пользователя. Так можно отключить одного клиента, не трогая остальных.
  • Несколько shortId. Позволяет менять идентификаторы без перевыпуска всех конфигураций.
  • Выдача через подписку. Клиент сам обновляет конфигурацию, если параметры сервера меняются.

Итог

VLESS — простой и быстрый «конверт» для данных, Reality — способ сделать так, чтобы этот конверт выглядел как обычное посещение популярного сайта, а любая проверка сервера показывала настоящий сайт. Это не абсолютная защита, но на сегодня одна из самых практичных схем для сетей с DPI.

О нашем сервисе

Unlimited VPN построен на VLESS Reality.

Буду рад вопросам по настройке Reality в комментариях — отвечу и тем, кто поднимает свой сервер.

📰 Read the original article on Dev.to Security

Originally published by Dev.to Security. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.