Протокол VLESS и XTLS: устройство, настройка и практическое применение

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

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

VLESS — это транспортный прокси-протокол, разработанный в рамках проекта Xray-core. Его название расшифровывается как «VMess Less», то есть «VMess без лишнего». В отличие от своего предшественника VMess, VLESS не имеет встроенного шифрования и механизма проверки времени, что делает его более лёгким и быстрым. Основная задача VLESS — аутентифицировать клиента по UUID и передать запрос на целевой сервер, а всю остальную работу по шифрованию и маскировке берут на себя внешние слои, такие как TLS или REALITY.

Ключевое отличие VLESS от VMess — отказ от времязависимой аутентификации. В VMess клиент и сервер должны были иметь синхронизированные часы, иначе соединение разрывалось. VLESS использует простое поле версии в начале запроса, что устраняет проблемы с «плывущими» часами на устройствах. Кроме того, VLESS не шифрует трафик самостоятельно, полагаясь на внешний TLS, который неотличим от обычного HTTPS-трафика. Это делает VLESS более гибким и менее заметным для систем глубокого анализа пакетов (DPI).

Важно понимать, что VLESS — это прокси, а не VPN. Он переносит отдельные соединения (например, «соедини меня с youtube.com:443»), а не IP-пакеты. Для работы VLESS не нужен виртуальный сетевой интерфейс, достаточно локального SOCKS5-прокси. Однако в интерфейсах многих клиентов есть режим «VPN», который использует TUN-адаптер для перехвата всего трафика и передачи его в прокси. Это отдельный механизм, который не является частью самого протокола.

Как работает XTLS и технология REALITY

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

REALITY — это технология, которая использует XTLS для маскировки прокси-трафика под легитимные HTTPS-соединения с популярными сайтами. Вместо того чтобы создавать собственный TLS-сертификат, REALITY использует сертификат реального сайта (например, yahoo.com или google.com). При подключении клиент и сервер обмениваются данными, которые выглядят как обычное TLS-рукопожатие с этим сайтом. Если DPI попытается проверить сервер, он увидит, что тот действительно отвечает как yahoo.com, что делает блокировку практически невозможной.

Технология REALITY требует настройки параметров, таких как dest (домен назначения) и SNI (Server Name Indication). Эти параметры должны совпадать, чтобы маскировка была корректной. Например, если вы выбрали yahoo.com:443 в качестве dest, то SNI также должен быть yahoo.com. Это позволяет серверу выглядеть как настоящий сайт для внешнего наблюдателя.

Структура протокола VLESS на уровне байтов

Протокол VLESS имеет компактную структуру заголовка, которая не содержит криптографических «шумов», выдающих протокол. Заголовок запроса состоит из следующих полей:

  • Version (1 байт) — версия протокола (0 в тестовых сборках, 1 в релизах).
  • UUID (16 байт) — идентификатор пользователя, который сервер проверяет при каждом соединении.
  • Addons Length + Addons (1 байт + N) — дополнительные данные в формате Protobuf, которые могут содержать, например, значение flow. Если дополнительные данные не нужны, длина равна 0, и накладных расходов нет.
  • Command (1 байт) — команда: TCP, UDP или MUX.
  • Port (2 байта) — порт назначения.
  • Address Type + Address (1 байт + N) — тип адреса (IPv4, домен, IPv6) и сам адрес.

Ответ сервера минимален: версия (совпадает с запросом), затем Addons и данные. Такая структура позволяет VLESS быть очень быстрым и эффективным, особенно при большом количестве одновременных подключений. Сервер использует sync.Map для проверки UUID, что обеспечивает высокую производительность даже с тысячами пользователей.

Использование Protobuf для дополнительной информации — это инновация, которая позволяет расширять протокол без изменения основной структуры. Например, поле flow передаётся именно через Addons. Если дополнительные данные не нужны, они просто отсутствуют, что минимизирует накладные расходы.

Поле flow: XTLS-Vision и его режимы

Поле flow в VLESS включает режим XTLS flow-control, который решает проблему детекта TLS-in-TLS. Основной рекомендуемый режим — xtls-rprx-vision. Он добавляет случайный паддинг во внутреннее рукопожатие, размывая характерные длины TLS-записей вложенного соединения. Это делает трафик неотличимым от обычного HTTPS.

Режим xtls-rprx-vision-udp443 — то же самое, но без перехвата UDP-трафика на порту 443 (QUIC). В этом случае QUIC-трафик передаётся как есть, что может быть полезно для некоторых приложений, но увеличивает риск утечек.

Ранние режимы, такие как xtls-rprx-origin, xtls-rprx-direct и xtls-rprx-splice, устарели и были удалены из современных версий Xray-core. Начиная с версии 1.8.0, рекомендуется использовать только Vision. Если вы попытаетесь использовать старый flow, ядро выдаст ошибку и не запустится.

Механизм splice (zero-copy передача через ядро Linux) остался внутренней оптимизацией Vision, но не является отдельным значением flow. XTLS-Vision работает в связке TCP+TLS или TCP+REALITY, а также с включённым VLESS Encryption, когда ограничений на транспорт нет.

Fallbacks: маскировка под настоящий сайт

Fallback — это механизм VLESS inbound, который перенаправляет «неправильный» трафик на другое назначение, обычно на настоящий веб-сервер (например, nginx). Это необходимо для защиты от активного зондирования: когда цензор отправляет на подозрительный сервер обычный HTTP/TLS-запрос, чтобы проверить, является ли он прокси, fallback перенаправляет этот запрос на реальный сайт. В результате зонд получает нормальную веб-страницу, и сервер выглядит как обычный HTTPS-хост.

Fallback также позволяет разделять один порт: на 443-м порту одновременно работают и прокси, и настоящий сайт. Xray анализирует первый пакет и выбирает наиболее точное правило FallbackObject по полям: name (сопоставление с TLS SNI), alpn (согласованный ALPN), path (HTTP PATH), dest (куда переслать), xver (отправлять ли PROXY protocol). Правило выбирается по точности совпадения, а не по порядку в конфиге.

Важно: fallbacks нельзя использовать одновременно с включённым VLESS Encryption (decryption, отличным от none). Если вы попытаетесь это сделать, Xray не запустится и выдаст ошибку. Это ограничение следует учитывать при настройке сервера.

Транспорты и слои безопасности

VLESS — это только логика протокола, он работает поверх транспортного слоя. Основные транспорты:

  • TCP (RAW) — базовый транспорт, единственный, где XTLS-Vision получает ядерный splice и работает без VLESS Encryption.
  • XHTTP — новый HTTP-транспорт, который пришёл на смену h2/SplitHTTP, дружит с CDN.
  • WebSocket (ws) — совместим с CDN и обычными веб-серверами.
  • gRPC — параметр serviceName.
  • mKCP (kcp) — на базе UDP, с коррекцией ошибок (FEC).
  • HTTPUpgrade — лёгкий транспорт на HTTP-Upgrade.

Слой безопасности (security) может быть none, tls или reality. На практике VLESS почти всегда используется с tls или reality. Начиная с версии v26.7.11, значение none на стороне клиента стало ошибкой конфигурации, если сервер не является приватным IP-адресом. Это сделано для повышения безопасности, так как VLESS без шифрования не защищает трафик.

Выбор транспорта зависит от ваших задач. Если вы хотите максимальную производительность и не боитесь блокировок, используйте TCP+REALITY. Если вам нужна маскировка под CDN, выбирайте WebSocket или XHTTP. Для обхода строгих блокировок часто используют комбинацию REALITY и Vision.

VLESS Encryption: пост-квантовое шифрование

В сентябре 2025 года в Xray-core v25.9.5 появилось собственное пост-квантовое шифрование VLESS Encryption. Оно позволяет использовать VLESS без внешнего TLS, сохраняя конфиденциальность и forward secrecy. Метод называется mlkem768x25519plus и использует гибрид ML-KEM-768 (пост-квантовый механизм инкапсуляции ключа) и X25519. Это защищает от атаки «harvest now, decrypt later» — когда злоумышленник записывает зашифрованный трафик сейчас, чтобы расшифровать его в будущем с помощью квантового компьютера.

VLESS Encryption задаётся полем decryption на сервере и encryption на клиенте. Ключи генерируются командой xray vlessenc. Это шифрование снимает ограничение Vision на транспорт: flow=xtls-rprx-vision теперь работает поверх XHTTP, WebSocket и gRPC, а не только на прямом TCP.

Однако VLESS Encryption не предназначен для обхода цензуры напрямую. Его главный сценарий — использование через CDN и транзитные узлы, где внешний TLS терминируется не на вашем сервере, и открытый заголовок VLESS (UUID, адрес назначения) виден посреднику. Внутреннее шифрование закрывает эту утечку. Но для маскировки под легитимный трафик всё равно нужны REALITY, XHTTP и Vision.

Важно: VLESS Encryption несовместим с fallbacks, и ядро sing-box (используемое в Hiddify, NekoBox, Karing) не поддерживает этот механизм. Старые клиенты после серверной миграции могут обрываться или зависать без внятной ошибки.

Практическая настройка сервера VLESS с XTLS-Reality

Рассмотрим пошаговую настройку сервера VLESS с XTLS-Reality на примере панели 3x-ui. Этот метод подходит для быстрого развёртывания собственного VPN-сервера с графическим интерфейсом.

  1. Выбор хостинга: Выберите VPS-провайдера, который поддерживает оплату из России (например, Aeza). Зарегистрируйтесь и пополните баланс.
  2. Создание сервера: В панели управления выберите виртуальный сервер, укажите локацию (например, Амстердам), тариф (самый дешёвый подойдёт для теста), операционную систему Ubuntu 22.04 с предустановленным ПО 3x-ui. Оплатите заказ.
  3. Подключение по SSH: Скачайте PuTTY (для Windows) или используйте встроенный терминал (для macOS). Подключитесь к серверу по SSH, используя IP-адрес, имя пользователя и пароль из панели.
  4. Поиск данных панели: После входа в систему выполните команду nano 3x-ui.txt, чтобы увидеть порт панели, логин и пароль.
  5. Вход в панель: Откройте браузер и перейдите по адресу http://<IP-адрес>:<порт>/panel/. Введите логин и пароль. В настройках панели смените язык на русский.
  6. Создание подключения: В разделе «Подключения» нажмите «Добавить подключение». Укажите название, протокол VLESS, порт 443. В настройках транспорта выберите TCP, включите uTLS (например, chrome), укажите dest и SNI (например, yahoo.com:443). Нажмите «Get new keys» для генерации ключей. В поле Flow выберите xtls-rprx-vision.
  7. Получение ключа: Нажмите на плюсик рядом с ID, чтобы получить QR-код или текстовую ссылку для подключения.

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

Выбор клиента для разных платформ

Для подключения к VLESS-серверу вам понадобится клиент, поддерживающий этот протокол. Вот популярные варианты для разных платформ:

  • Windows: InvisibleMan-XRay — простой клиент с графическим интерфейсом. Скачайте последнюю версию с GitHub, выберите zip-архив для вашей архитектуры (x64 или x86). Также можно использовать v2rayN или Nekoray.
  • Android: NekoBox — мощный клиент с поддержкой VLESS, REALITY и многих других протоколов. Скачайте APK-файл с GitHub (например, NB4A-1.3.1-arm64-v8a.apk).
  • iOS и macOS: FoXray — удобный клиент для устройств Apple. Также есть Shadowrocket и V2Box.
  • Linux: Можно использовать командную строку Xray-core или графические клиенты, такие как Qv2ray.

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

Для удобства вы можете использовать QR-код, сгенерированный в панели 3x-ui, чтобы быстро импортировать конфигурацию на мобильное устройство.

Безопасность, ограничения и будущее VLESS

VLESS и XTLS-Reality считаются одними из самых безопасных и эффективных технологий для обхода блокировок. Однако у них есть ограничения. Например, VLESS Encryption несовместим с fallbacks, а sing-box не поддерживает его. Кроме того, использование REALITY требует правильной настройки dest и SNI, иначе маскировка может быть неэффективной.

С точки зрения безопасности, VLESS не шифрует трафик сам по себе, поэтому важно использовать его с TLS или REALITY. Если вы используете VLESS без шифрования (security: none), трафик может быть перехвачен. Начиная с версии v26.7.11, ядро запрещает такие конфигурации на стороне клиента, если сервер не является приватным IP.

Будущее VLESS связано с развитием пост-квантового шифрования и улучшением маскировки. Разработчики продолжают работать над новыми функциями, такими как планировщики трафика (Schedulers), которые будут управлять временными характеристиками трафика для ещё лучшей маскировки. Также ожидается расширение поддержки VLESS Encryption в других ядрах, таких как sing-box.

При использовании VLESS важно помнить о юридических аспектах. В некоторых странах использование VPN и прокси может быть ограничено или запрещено. Убедитесь, что вы соблюдаете местные законы.

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

В чем разница между VLESS и VMess?

VLESS — это облегчённый преемник VMess. Он не имеет встроенного шифрования и времязависимой аутентификации, что делает его быстрее и проще. VLESS полагается на внешний TLS или REALITY для шифрования, в то время как VMess использует собственный криптографический контур с проверкой времени. VLESS также более гибок и расширяем благодаря использованию Protobuf для дополнительных данных.

Что такое XTLS-Reality и как он работает?

XTLS-Reality — это технология, которая маскирует прокси-трафик под легитимные HTTPS-соединения с реальными сайтами. Она использует XTLS для оптимизации передачи данных и REALITY для подмены TLS-сертификата. В результате DPI видит обычное HTTPS-соединение с популярным сайтом, что делает блокировку практически невозможной.

Какой транспорт лучше всего использовать с VLESS?

Для максимальной производительности и маскировки рекомендуется использовать TCP с REALITY и XTLS-Vision. Если вам нужна совместимость с CDN, выбирайте WebSocket или XHTTP. Для обхода строгих блокировок часто используют комбинацию REALITY и Vision. Выбор зависит от ваших задач и условий сети.

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

VLESS Encryption — это встроенное пост-квантовое шифрование, добавленное в Xray-core v25.9.5. Оно позволяет использовать VLESS без внешнего TLS, защищая трафик от расшифровки в будущем с помощью квантовых компьютеров. Это особенно полезно при использовании через CDN, где внешний TLS терминируется на стороне посредника.

Можно ли использовать VLESS с fallbacks и VLESS Encryption одновременно?

Нет, это невозможно. Если вы включите VLESS Encryption (decryption, отличный от none), Xray не запустится с ошибкой, так как fallbacks несовместимы с этим режимом. Вам придётся выбрать что-то одно: либо fallbacks для маскировки под реальный сайт, либо VLESS Encryption для защиты от посредников.

Какие клиенты поддерживают VLESS и XTLS-Reality?

Популярные клиенты: InvisibleMan-XRay (Windows), NekoBox (Android), FoXray (iOS/macOS), v2rayN (Windows), Qv2ray (Linux). Все они поддерживают VLESS, REALITY и XTLS-Vision. Убедитесь, что вы используете последнюю версию клиента, так как старые версии могут не поддерживать новые функции.

Насколько безопасен VLESS без шифрования?

VLESS без шифрования (security: none) не защищает трафик от перехвата. Начиная с версии v26.7.11, Xray-core запрещает такие конфигурации на стороне клиента, если сервер не является приватным IP. Всегда используйте TLS или REALITY для обеспечения конфиденциальности.