REALITY и VLESS: в чём разница между протоколом и транспортной защитой
REALITY и VLESS — это не одно и то же. Один отвечает за шифрование, другой — за структуру трафика. Разбираемся, как они работают вместе и почему их не нужно путать.
Содержание
Что такое 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-строке.
Диагностика неработающего соединения
Если соединение не устанавливается, действуйте пошагово:
- Проверьте логи сервера. В Xray запустите
xray runи посмотрите, приходят ли запросы. Ошибки видаreality: invalid authenticationуказывают на несовпадение ключей. - Синхронизируйте время. REALITY использует криптографию с временными метками. Разница более пары минут приводит к сбоям.
- Проверьте DNS. Убедитесь, что домен
serverNameрезолвится в тот же IP, что и сервер. Иначе трафик уйдёт не туда. - Протестируйте порт. С клиента выполните
curl -v telnet://сервер:портили проверьте доступность с помощью nc. - Сравните конфигурации. 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 в своем сценарии.
Получить доступ