Протокол VLESS: что это и почему он работает в паре с TLS или REALITY

Антон Белов

8 мин чтенияТехнологии

VLESS изнутри

VLESS сообщает серверу две вещи — чьё это соединение и куда его вести. Шифрование и маскировка — задача нижнего слоя, TLS или REALITY. Поэтому о VLESS почти всегда говорят в паре с ними. В статье — из чего состоит эта связка и что VLESS убрал из VMess. Отдельно описаны ключ VLESS и то, как протокол работает в Ben's VPN.

Заголовок VLESS содержит UUID, команду и адрес

Протокол VLESS задаёт формат соединений между клиентом и прокси-сервером. Каждое соединение начинается с заголовка запроса, а сразу за ним идут ваши данные. Полей в заголовке немного.

  • Версия протокола.
  • UUID — ваш идентификатор на сервере вида 8b71f62c-7736-4334-ab2f-032d2115d2fd. Он же служит паролем, ведь сервер пропускает только те UUID, что у него записаны.
  • Дополнения — служебные параметры, например режим flow, о котором ниже.
  • Команда — тип трафика. Это поток TCP, пакеты UDP или Mux — несколько потоков в одном соединении.
  • Порт и адрес назначения (адрес — IPv4, IPv6 или доменное имя).

VLESS ничем не оборачивает данные после заголовка. Ответный заголовок сервера ещё короче, в нём только версия и дополнения. В заголовке нет ни метки времени, ни выбора шифра, а сам он не зашифрован. Этим VLESS и отличается от предшественника, VMess.

Первую версию VLESS выпустили летом 2020 года в составе V2Ray. С конца того же года протокол развивают в основном в Xray-core, форке V2Ray. Его поддерживают и другие ядра, например sing-box. По сути, VLESS — протокол прокси. VPN для телефона или компьютера получается, когда приложение отправляет через такие соединения весь трафик устройства. Где проходит граница между ними, объясняет статья о том, чем VPN отличается от прокси.

В отличие от VMess, VLESS не шифрует данные и не сверяет часы

VMess, более старый протокол из того же V2Ray, шифрует данные сам — алгоритмом ChaCha20-Poly1305 или AES-128-GCM. При проверке соединения он сверяет UUID и время на часах. Документация Xray разрешает часам клиента и сервера расходиться с точным временем максимум на две минуты. Если часы ушли дальше, соединение не пройдёт. VLESS оставил из всего этого только проверку UUID. Своего шифра в обычной настройке у него нет. В поле decryption на сервере и в поле encryption у клиента стоит none. Расхождение часов соединению VLESS не мешает.

Разницу хорошо видно в трёх ситуациях. В первых двух оба протокола работают внутри TLS.

СитуацияVMessVLESS
Часы на телефоне спешат на пять минутСервер отклоняет соединениеСоединение проходит
Через туннель открыт сайт по HTTPSТри слоя шифрования — сайта, VMess и внешнего TLSДва слоя — сайта и внешнего TLS
Внешнего TLS нетДанные закрыты шифром самого VMessUUID и адреса назначения видит любой наблюдатель на пути

Когда соединение и так идёт внутри TLS, свой шифр VMess — лишняя нагрузка на процессор и батарею. У VLESS этой нагрузки нет. А в режиме flow после рукопожатия с сайтом повторно не шифрует и внешний TLS. В 2025 году в Xray появился необязательный режим VLESS Encryption — встроенный шифр протокола. Он нужен там, где внешнего TLS нет или TLS обрывается на CDN, не доходя до сервера. С REALITY этот режим лишний.

Транспорт определяет, как соединение выглядит со стороны

VLESS идёт внутри транспорта, и наблюдатель в сети видит именно транспорт. Транспортов для VLESS в Xray несколько, вот основные.

  • RAW, в старых настройках — tcp. Это TCP-соединение без дополнительных слоёв. Если поверх него TLS или REALITY, со стороны оно почти не отличается от обычного HTTPS-трафика.
  • XHTTP, бывший SplitHTTP. Режет поток на куски и разносит их по череде HTTP-запросов и ответов (HTTP/1.1, HTTP/2 или HTTP/3). Такой трафик проходит через CDN. Для наблюдателя это похоже на сайт, который часто подгружает данные.
  • gRPC. Данные идут как вызовы удалённых процедур по HTTP/2 — так с API работают многие программы.
  • WebSocket. Постоянное соединение, вроде тех, что держат веб-чаты и браузерные игры. Проходит через CDN.

С REALITY сочетаются RAW, XHTTP и gRPC, а WebSocket — нет.

Серверу REALITY не нужны свой домен и сертификат

Классический TLS требует от сервера собственного домена и сертификата. REALITY, вышедший весной 2023 года в Xray-core 1.8.0, обходится без них. В рукопожатии сервер использует имя настоящего стороннего сайта вместо своего. Ниже — как сервер обрабатывает соединение вашего клиента и соединение сканера.

  1. Ваш клиент начинает рукопожатие TLS, подражая популярному браузеру, и указывает в приветствии имя стороннего сайта. В то же приветствие он вкладывает метку, которую может проверить только владелец закрытого ключа сервера. Частью метки служит короткий идентификатор shortId.
  2. Сервер проверяет метку. Если она верна, он сам завершает рукопожатие, и дальше по соединению идёт VLESS.
  3. Сканер или любой другой посетитель присылает обычное приветствие без метки. Сервер не отвечает на него сам и передаёт соединение стороннему сайту. Посетитель получает подлинный сертификат этого сайта и его страницу.

Сторонний сайт должен поддерживать TLS 1.3 и HTTP/2. Ключи REALITY — пара X25519. Закрытый остаётся на сервере, открытый получает клиент.

Ключ VLESS содержит все настройки соединения

Ключ VLESS, который выдаёт сервис или администратор сервера, — одна длинная строка. В ней записано всё, что нужно клиенту для подключения.

  • Адрес сервера и порт.
  • Ваш UUID, который служит паролем.
  • Транспорт и способ защиты, TLS или REALITY.
  • Имя сайта, которое клиент назовёт в рукопожатии (SNI).
  • Для REALITY — открытый ключ сервера и shortId.
  • Отпечаток браузера, под который клиент подстроит своё приветствие.
  • Режим flow, обычно xtls-rprx-vision. Когда через туннель открывают HTTPS-сайт, он маскирует размеры первых пакетов этого соединения. Потом данные сайта идут без повторного шифрования.
  • Название, по которому ключ находят в списке.

Такую строку можно получить и для себя, если запустить сервер на арендованном VPS. Тогда обновлять ядро и следить за настройками будете вы. Если адрес заблокируют, переезжать на новый тоже придётся вам. Что выбрать в вашем случае, поможет решить сравнение своего VPS и готового VPN.

Адрес сервера остаётся виден провайдеру

Связка VLESS + REALITY прячет то, что идёт по соединению, но не то, с каким сервером оно установлено. Провайдеру по-прежнему видно соединение с сервером — адрес, время и сколько байт ушло в каждую сторону. Если адрес заблокировали, настройки протокола уже ничего не решают. Подключаться придётся к серверу с другим адресом.

Сильнее всего это заметно на мобильном интернете с белыми списками. В таком режиме сеть пускает только к заранее одобренным адресам. До сервера вне списка соединение не дойдёт, как бы хорошо ни был замаскирован протокол. Здесь поможет только другой маршрут.

Приложение Ben's VPN само выбирает протокол, ключ не нужен

VLESS + REALITY, XHTTP, Hysteria2 и Shadowsocks — между этими четырьмя вариантами подключения приложение Ben's VPN выбирает само. Закрепить один из них в настройках нельзя. Подробное сравнение всех четырёх — в обзоре протоколов VPN.

Ключи VLESS приложение не принимает — ни от других сервисов, ни от собственного сервера. Они ему и не нужны, так что вводить UUID и ключи не придётся. На телефоне, планшете или компьютере установите приложение и нажмите «Подключить». Затем оплатите подписку в окне «Купить Ben's VPN». Если подписка уже есть, войдите в аккаунт из того же окна. Приложение для вашей системы найдёте на странице со всеми устройствами.

При плохой связи приложение может показать плашку «Плохое соединение» с кнопкой «Исправить проблему». Через неё можно перейти на другую локацию или запустить поиск рабочего сервера. Поиск («Найти рабочий сервер», он есть и в разделе «Аккаунт» → «Настройки») перепроверяет сервер и выдаёт ему новые IP-адреса. В крайнем случае он включает мультихоп. На всё уходит не больше двух минут.

При белых списках мобильного интернета пригодится режим «Россия» в разделе «Аккаунт» → «Настройки» → «Мультихоп». В этом режиме весь трафик сначала идёт через сервер в России. Иногда это помогает пройти фильтр. Большинство локаций в этом режиме недоступны, и гарантировать результат в каждой сети нельзя. Когда режим больше не нужен, верните «Автоматически». Как им пользоваться, рассказано на странице о белых списках.

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

Нужен ли для VLESS свой домен?

С REALITY не нужен. Сервер использует имя стороннего сайта, поэтому свой сертификат ему не требуется. Домен и сертификат понадобятся, если VLESS работает внутри обычного TLS или через CDN.

Зачем серверу VLESS порт 443?

Это стандартный порт HTTPS. Соединение с TLS или REALITY на нём похоже на обычный заход на сайт. На редком порту оно выделялось бы среди остального трафика. Сам VLESS может работать на любом порту.

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

VLESS обычно идёт по TCP внутри TLS или REALITY. Hysteria2 работает поверх QUIC, а значит, по UDP. Снаружи его трафик напоминает HTTP/3. Поэтому они чувствительны к разным ограничениям сети. Сеть, которая блокирует или замедляет UDP, мешает Hysteria2, но не VLESS по TCP. В Ben's VPN есть оба протокола, и выбирает между ними приложение.

Обойдёт ли связка VLESS + REALITY белые списки мобильного оператора?

Как правило, нет. При белых списках сеть пускает только к одобренным адресам. Если адреса сервера в списке нет, маскировка протокола ничего не меняет. Для таких сетей в Ben's VPN есть мультихоп «Россия». Иногда он помогает, но большинство локаций в этом режиме недоступны.

Можно ли добавить в Ben's VPN свой ключ VLESS?

Нет. Ключ VLESS, хоть от другого сервиса, хоть со своего сервера, в приложение не добавить. Оно само подключается к серверам Ben's VPN и само выбирает протокол.

Сначала 3 дня на пробу, решение потом

Пробный период стоит $0.50 и открывает все 187 стран и все приложения. После него подписка продлевается за $5 в месяц. Продление можно отключить в личном кабинете в любой момент.

Mac App Store App Store Google Play