Протокол VLESS в Xray: как работает, чем отличается от VMess и Reality

Подробный разбор протокола VLESS из экосистемы Xray: архитектура, отличие от VMess, связка с Reality и TLS, настройка клиента, безопасность и обход блокировок в России.

Что такое VLESS и зачем он нужен

VLESS (VMess Less) — это легковесный прокси-протокол без сохранения состояния, разработанный в 2020 году как упрощение VMess. Он входит в экосистему Xray-core (форк V2Ray) и используется для связи клиента и сервера. Главная особенность VLESS в том, что он не шифрует трафик самостоятельно — вся защита делегируется внешнему слою (TLS, Reality). Это сделано намеренно: протокол отвечает только за идентификацию пользователя (через UUID) и маршрутизацию, а безопасность и маскировку берут на себя транспортные механизмы.

На практике VLESS никогда не используется сам по себе. Полная конфигурация всегда включает транспорт (RAW/TCP, WebSocket, gRPC, XHTTP) и защиту (TLS или Reality). Поэтому корректно говорить не «у меня VLESS», а «VLESS + Reality + RAW» или «VLESS + TLS + WebSocket». Именно эта модульность сделала VLESS основой современных схем обхода блокировок.

Как устроен протокол VLESS: UUID, заголовок и отсутствие шифрования

Протокол VLESS предельно минималистичен. При установке соединения клиент отправляет заголовок, который содержит:

  • байт версии;
  • 16-байтовый UUID пользователя (RFC-4122);
  • необязательное поле addons;
  • однобайтовую команду (TCP или UDP);
  • порт назначения;
  • байт типа адреса и сам адрес.

Итоговый размер заголовка — от 25 до 50 байт на соединение. Для сравнения: OpenVPN передаёт более 100 байт на пакет. Заголовок не шифруется самим VLESS — в конфигурации обязательно указывается encryption: "none". Это сделано сознательно: протокол делегирует всю конфиденциальность транспортному уровню (TLS 1.3).

Отсутствие собственного шифрования даёт два важных преимущества:

  • VLESS не создаёт двойной обёртки TLS-в-TLS, которая характерна для VMess и легко обнаруживается системами DPI;
  • протокол не зависит от синхронизации времени — UUID является единственным ключом аутентификации. Если UUID совпадает, соединение авторизовано; если нет — отклоняется на первом байте.

UUID генерируется командой xray uuid или любым стандартным генератором. Допускаются и пользовательские строки до 30 байт, которые сопоставляются с UUID по специальному алгоритму, но на практике используются канонические UUID.

VLESS vs VMess: ключевые различия

VMess — более старый протокол из семейства V2Ray, который имеет встроенное шифрование AEAD, защиту от повторного воспроизведения и зависит от синхронизации часов. VLESS создавался как его облегчённая альтернатива.

Основные отличия:

  • Шифрование: у VMess оно встроено в протокол, у VLESS вынесено во внешний слой (TLS, Reality).
  • Аутентификация: оба используют идентификатор пользователя, но VLESS полагается только на UUID, без привязки ко времени.
  • Совместимость: VMess чаще встречается в старых инструкциях и клиентах, VLESS — в современных сценариях с Reality, XTLS Vision, XHTTP.
  • Обнаружение DPI: из-за двойной обёртки TLS-в-TLS VMess стал легко распознаваем — к сентябрю 2025 года уровень обнаружения на «Великом китайском файрволе» превысил 80%. VLESS, напротив, маскируется под обычный TLS-диалог, что делает его значительно более устойчивым.

На практике выбор между VMess и VLESS сегодня очевиден: для новых развёртываний рекомендуется VLESS, особенно в связке с Reality.

Связка VLESS + Reality: как работает маскировка

Reality — это технология транспортной безопасности, разработанная для Xray-core и выпущенная в 2023 году. Её ключевая идея: сервер не использует собственный TLS-сертификат, а имитирует рукопожатие реального стороннего веб-сайта (например, microsoft.com, apple.com).

Как это работает:

  • Оператор выбирает цель (домен) для подделки SNI.
  • Сервер использует обмен ключами X25519 и подделку SNI.
  • Клиенты, знающие правильный открытый ключ Reality, выполняют реальное рукопожатие TLS 1.3 с имитированной цепочкой сертификатов.
  • Сторонние наблюдатели (включая DPI) видят обычное соединение с легитимным сайтом, включая настоящий сертификат.

В конфигурации Reality-профиль содержит поля: sni (имя сервера), fp (отпечаток ClientHello, например chrome), pbk (публичный ключ), sid (shortId), иногда spx. Без корректного pbk соединение невозможно.

Связка VLESS + Reality + RAW + flow=xtls-rprx-vision считается одной из самых устойчивых к DPI по состоянию на 2026 год. Уровень обнаружения в полевых отчётах не превышает 5%.

Транспорты VLESS: RAW, WebSocket, gRPC, XHTTP

VLESS не привязан к конкретному транспорту — выбор способа передачи данных настраивается отдельно. Основные варианты:

  • RAW/TCP: прямой TCP-транспорт без дополнительных обёрток. Используется в связке с Reality или TLS. Минимальная задержка, но наименьшая маскировка.
  • WebSocket: позволяет VLESS скрываться за обычным рукопожатием HTTP/1.1. Трафик можно маршрутизировать через CDN (например, Cloudflare). Требует указания path и host.
  • gRPC: использует мультиплексирование HTTP/2. Добавляет параметры serviceName и authority. Хорошо маскируется, но требует поддержки HTTP/2 на обеих сторонах.
  • XHTTP: новый транспорт, оптимизированный для работы с Reality. Добавляет свои path, host, mode и extra.
  • HTTPUpgrade: облегчённая версия WebSocket, не поддерживающая бинарные фреймы.
  • mKCP: транспорт на основе KCP поверх UDP. Может работать в условиях высокой потери пакетов, но легко обнаруживается.

Важно: транспорты несовместимы между собой. Если сервер настроен на WebSocket, клиент с RAW не подключится. Несовпадение path, host или serviceName — частая причина ошибок «VLESS не работает».

XTLS Vision: управление потоком и заполнение

XTLS Vision (указывается в конфигурации как flow: "xtls-rprx-vision") — это схема заполнения, применяемая к трафику TLS 1.3. Проблема, которую она решает: записи TLS 1.3 имеют предсказуемые сигнатуры длины, когда содержат внутренние данные приложения фиксированной формы. Длина раскрывает информацию о том, что именно передаётся через туннель.

Vision добавляет байты заполнения на ранней стадии рукопожатия, сглаживая утечку информации о длине. После установления соединения он переключается на копирование через необработанный сокет. В Linux используется системный вызов splice(), который пересылает TCP-пакеты в ядре без копирования через пользовательское пространство. Это даёт пропускную способность, близкую к прямому TCP-соединению.

На практике Vision применяется в связке VLESS + Reality + RAW. Без Vision Reality работает, но профиль трафика менее естественен.

Безопасность и ограничения VLESS-профилей

Безопасность VLESS-подключения определяется всей схемой, а не только названием протокола. Ключевые факторы:

  • Актуальность клиента и ядра: старые версии могут не поддерживать Reality, XHTTP или новые поля, что снижает устойчивость к DPI.
  • Корректная проверка сертификата или Reality-параметров: отключение проверки сертификата («allowInsecure») скрывает реальные ошибки (неправильный SNI, устаревший клиент, подменённый профиль).
  • Непубличность UUID: если UUID опубликован, любой может подключиться к серверу.
  • DNS и маршрутизация: если приложение работает как локальный прокси, часть программ может идти мимо него. При включении TUN нужно проверять, какие домены исключены и где резолвится DNS.
  • Утечки на уровне ОС: VLESS не исправляет утечки DNS или WebRTC, если они не настроены на стороне клиента.

Важно: VLESS не гарантирует анонимность. Сервер видит исходящие подключения, а сайты видят IP сервера. Для полной конфиденциальности требуется дополнительная настройка (например, цепочка прокси или использование Tor).

VLESS в России: текущая ситуация с блокировками

С 2024 года российские системы ТСПУ (технические средства противодействия угрозам) начали тестировать блокировку протокола XRay/VLESS, особенно в связке с Reality. Пользователи из разных регионов сообщают о сбоях: невозможность соединения или существенное падение скорости. Блокировки носят очаговый характер — затрагивают отдельных провайдеров и регионы, что указывает на тестовый режим.

Технически это выглядит как фильтрация на уровне DPI: под ударом оказалась сама механика соединения, а не конкретные IP-адреса. Парадокс в том, что даже «Великий китайский файрвол» до сих пор не смог полностью заблокировать VLESS+Reality — китайские цензоры вынуждены пропускать такой трафик, чтобы не нарушить работу легальных сервисов, под которые маскируется VPN.

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

Для пользователя это означает начало периода нестабильности. Если раньше переход на VLESS+Reality гарантировал стабильную работу на месяцы, то теперь гарантий нет. Разработчики протоколов уже обсуждают методы дополнительной обфускации трафика.

Что проверять, если VLESS не работает

Если VLESS-подключение не устанавливается, причина почти всегда находится уровнем ниже самого протокола. Пошаговая диагностика:

  1. Поддержка клиента: убедитесь, что приложение и встроенное ядро поддерживают Reality, XHTTP, нужный flow и новые параметры ссылки.
  2. Совпадение транспорта: RAW, WebSocket, gRPC и XHTTP несовместимы между собой без изменения серверной конфигурации.
  3. UUID: один лишний символ или другой идентификатор означает отказ в аутентификации.
  4. SNI и домен: для TLS/Reality адрес подключения, SNI и сертификат или Reality-настройки должны соответствовать схеме.
  5. Reality-поля: проверьте pbk, sid, fp и spx. Старые клиенты могут молча игнорировать часть параметров.
  6. WebSocket/gRPC path: неверный path, host или serviceName часто даёт таймаут, хотя сервер доступен по порту.
  7. DNS и маршрутизация: если подключение есть, но сайты не открываются, проблема может быть в DNS, правилах routing, TUN-режиме или исключениях приложений.
  8. Сеть провайдера: иногда профиль работает в одной сети и ломается в другой. Это не доказывает, что «сломался VLESS» — отличаться могут блокировки IP, фильтрация TLS, MTU, IPv6 или DNS.

Мини-чеклист:

  • проверили официальный источник приложения или документации;
  • подготовили рабочую ссылку, QR-код или subscription URL;
  • импортировали профиль без лишних правок;
  • проверили подключение на одном понятном сценарии;
  • сохранили источник профиля для будущего обновления.

Вопросы и ответы

Чем VLESS отличается от VMess?

VLESS — более лёгкий протокол без встроенного шифрования. VMess имеет собственное шифрование AEAD и защиту от повторного воспроизведения, но из-за двойной обёртки TLS-в-TLS стал легко обнаруживаться DPI (уровень обнаружения >80%). VLESS делегирует шифрование внешнему слою (TLS, Reality) и не зависит от синхронизации времени.

Что такое Reality в контексте VLESS?

Reality — технология транспортной безопасности, при которой сервер имитирует рукопожатие реального стороннего веб-сайта (например, microsoft.com). Клиенты, знающие открытый ключ, выполняют настоящее рукопожатие TLS 1.3, а DPI видит обычное соединение с легитимным сайтом. Reality считается одной из самых устойчивых к DPI технологий.

Можно ли использовать VLESS без TLS?

Технически да, но это небезопасно. VLESS сам по себе не шифрует трафик — encryption=none. Без TLS или Reality все данные передаются в открытом виде, и соединение легко перехватить. На практике VLESS всегда используется с внешней защитой.

Почему VLESS не работает, хотя сервер доступен?

Чаще всего причина в несовпадении транспорта (RAW vs WebSocket), неверном UUID, неправильном SNI, отсутствии обязательных Reality-полей (pbk) или неверном path/serviceName для WebSocket/gRPC. Проверьте каждый параметр по порядку.

Блокируют ли VLESS в России?

Да, с 2024–2025 годов российские системы ТСПУ тестируют блокировку VLESS+Reality. Блокировки носят очаговый характер и затрагивают отдельных провайдеров. Пока полной блокировки нет, но стабильность снизилась. Разработчики ищут методы дополнительной обфускации.

Какой транспорт лучше для VLESS?

Для максимальной устойчивости к DPI рекомендуется связка VLESS + Reality + RAW + flow=xtls-rprx-vision. Если нужна маскировка под HTTP-трафик и возможность использования CDN — WebSocket. gRPC хорошо маскируется, но требует поддержки HTTP/2. Выбор зависит от конкретных условий сети.

Нужно ли синхронизировать время для VLESS?

Нет. В отличие от VMess, VLESS не зависит от системного времени. Аутентификация выполняется только по UUID, без проверки меток времени. Это устраняет класс ошибок, связанных с рассинхронизацией часов на устройстве или сервере.