Сравнения и выбор Протоколы и безопасность Обновлено 7 Windows, Linux, Android, macOS

REALITY и VLESS: в чём разница между протоколом и транспортной защитой

REALITY и VLESS — это не одно и то же. Один отвечает за шифрование, другой — за структуру трафика. Разбираемся, как они работают вместе и почему их не нужно путать.

VLESSREALITYXraysing-boxTLSтранспортная защита
Содержание
КороткоVLESS определяет формат сообщений, REALITY скрывает трафик под TLS-соединение. Вместе они создают защищённый и незаметный туннель.

Что такое VLESS

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

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

Что такое REALITY

REALITY — это технология транспортной защиты, появившаяся в экосистеме Xray. Она решает проблему детектирования прокси-трафика. Вместо создания нового TLS-сертификата REALITY «одалживает» у реального сайта его Certificate Transparency и параметры TLS-рукопожатия. В результате исходящий трафик сервера выглядит как обычное соединение с популярным веб-ресурсом (например, с сайтом Amazon или Microsoft).

REALITY использует криптографию за пределами TLS 1.3 и не требует от клиента и сервера доверия к центральному центру сертификации. Это принципиально отличает его от классического TLS-проксирования, где нужно создавать приватный ключ и сертификат. В REALITY приватный ключ используется только для подтверждения связи клиента и сервера.

Протокол и транспорт: как они работают вместе

Чтобы соединение работало, важно разделять два понятия. VLESS — это то, что упаковывает ваше исходное приложение (HTTP, DNS, файлы) в структурированные пакеты. REALITY — это внешняя оболочка, которая скрывает эти пакеты от DPI-фильтров и обеспечивает безопасность канала.

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

  • Клиент получает адрес, порт и ключ REALITY из конфигурации.
  • Клиент отправляет TLS ClientHello на адрес REALITY-сервера, указывая serverName, совпадающий с «публичным» сайтом (dest).
  • Сервер REALITY проверяет подпись клиента через публичный ключ. Если подпись верна — устанавливается настоящий канал через VLESS.

Если DPI перехватит трафик, он увидит стандартное зашифрованное TLS-соединение с известным сайтом.

Настройка сервера: поля REALITY в конфигурации Xray и sing-box

Для работы VLESS+REALITY на сервере нужно задать несколько обязательных параметров. В Xray конфиг выглядит примерно так (без реальных ключей):

{
  "inbounds": [{
    "protocol": "vless",
    "settings": {
      "clients": [{"id": "UUID", "flow": "xtls-rprx-vision"}]
    },
    "streamSettings": {
      "network": "tcp",
      "security": "reality",
      "realitySettings": {
        "dest": "example.com:443",
        "serverNames": ["example.com"],
        "privateKey": "СГЕНЕРИРОВАННЫЙ_КЛЮЧ",
        "shortIds": ["abcdef0123456789"]
      }
    }
  }]
}

Разберём поля:

  • flow — устанавливает механизм контроля TCP-потока. Для REALITY рекомендуется xtls-rprx-vision.
  • dest — адрес «публичного» сайта, под который маскируется трафик. Он должен поддерживать TLS 1.3.
  • serverNames — список имён, которые клиент может использовать в SNI. Обязательно включите домен из dest.
  • privateKey и publicKey — генерируются через xray x25519 или аналог. Закрытый ключ храните только на сервере.
  • shortIds — короткие идентификаторы для отличия клиентов. Можно оставить пустой массив или сгенерировать свои.

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

Настройка клиента: как указать протокол и транспорт

На клиенте необходимо указать тот же публичный ключ, UUID, serverNames и shortIds. Плюс добавьте параметры REALITY.

Для Xray клиентский файл содержит:

"streamSettings": {
  "security": "reality",
  "realitySettings": {
    "serverName": "example.com",
    "publicKey": "ПУБЛИЧНЫЙ_КЛЮЧ",
    "shortId": "abcdef0123456789"
  }
}

Обратите внимание: в клиенте используется publicKey, а не privateKey. Это соответствует асимметричной схеме.

В приложениях (например, v2rayNG или Streisand) поля называются аналогично. При импорте ссылки типа vless:// параметры REALITY кодируются в query-строке.

Диагностика неработающего соединения

Если соединение не устанавливается, действуйте пошагово:

  1. Проверьте логи сервера. В Xray запустите xray run и посмотрите, приходят ли запросы. Ошибки вида reality: invalid authentication указывают на несовпадение ключей.
  2. Синхронизируйте время. REALITY использует криптографию с временными метками. Разница более пары минут приводит к сбоям.
  3. Проверьте DNS. Убедитесь, что домен serverName резолвится в тот же IP, что и сервер. Иначе трафик уйдёт не туда.
  4. Протестируйте порт. С клиента выполните curl -v telnet://сервер:порт или проверьте доступность с помощью nc.
  5. Сравните конфигурации. UUID, shortId, serverNames должны совпадать один в один.

Если вы используете sing-box, логи можно включить через log.level.

Частые ошибки при использовании VLESS + REALITY

  • Использование privateKey вместо publicKey на клиенте.
  • Забывают указать flow на сервере, из-за чего соединение работает с перебоями.
  • Применяют REALITY вместе с другим транспортом, например WebSocket. На текущий момент REALITY работает только с TCP.
  • Указывают serverName, который не разрешается в публичный сайт. DPI может сразу вычислить несоответствие.
  • Не обновляют клиент после изменения ключей на сервере.

Выводы

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

Перед настройкой всегда сверяйтесь с официальной документацией вашей реализации (Xray, sing-box и т.д.). Помните: ключи и UUID должны храниться в секрете, а публичные данные передаются открыто.

Проверено на практике

  • Дата проверки: 2026-04-26
  • Среда: Xray-core 1.8.15, sing-box 1.11.0
  • Версии: VLESS, REALITY

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

  • Убедитесь, что сервер использует TLS 1.3 для dest-сайта
  • Сгенерируйте ключи x25519 (например, через `xray x25519`)
  • Укажите одинаковый UUID и shortId на клиенте и сервере
  • Настройте flow xtls-rprx-vision в inbound
  • Проверьте доступность порта с клиента
  • Синхронизируйте время по NTP

Частые ошибки

  • Хранение privateKey на клиенте
  • Использование REALITY с mKCP/WebSocket — не работает
  • Неправильный serverName, не совпадающий с dest
  • Игнорирование логов сервера при диагностике
  • Необновлённый клиент при изменении ключей

Источники и документация

FAQ

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

VLESS проще и не шифрует сам трафик, а VMess встроил шифрование. При использовании REALITY шифрование выполняет транспорт.

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

В Xray REALITY реализован как транспортный уровень для VLESS и Trojan, но обычная практика — именно VLESS.

Какой приватный ключ нужно указывать в конфигурации самого сервера?

Сам сервер хранит privateKey, а клиенты получают publicKey. Никогда не передавайте privateKey.

Готовы перейти от сравнения к практике?

Если общая картина уже понятна, не тратьте время на еще один круг сравнений. Проще оформить рабочий доступ и проверить Reality в своем сценарии.

Получить доступ

Дальше по теме

Связанные статьи