VLESS + REALITY простыми словами

· Дмитрий Рябов

VLESS — это lightweight транспорт от команды Xray, который ничего не шифрует сам по себе и полагается на внешний TLS. REALITY — слой маскировки поверх VLESS, который заставляет ваше соединение выглядеть как обычный TLS-handshake к чужому популярному сайту (например, к крупному CDN или порталу облачного провайдера).

Связка «VLESS + REALITY» — главный современный ответ на ТСПУ. С точки зрения DPI ваш клиент будто бы открыл HTTPS к microsoft.com или yandex.ru: сертификат настоящий, домен живой, отличить от обычного браузера крайне сложно. Поэтому про неё «много говорят» — для обхода глубокой инспекции это сейчас один из самых рабочих вариантов.

Ниже разберём, что в этой связке делает каждая часть и почему REALITY устроен принципиально иначе, чем обычная TLS-маскировка вроде Trojan или Shadowsocks-over-TLS.

Коротко

  • VLESS — транспортный proxy-протокол на ядре Xray, без собственного шифрования.
  • Снаружи VLESS обычно оборачивают в TLS — отсюда связки VLESS+TLS, VLESS+XTLS, VLESS+REALITY.
  • REALITY делает TLS-handshake к настоящему чужому сайту и подсовывает его сертификат клиенту.
  • Для DPI это выглядит как легитимный HTTPS к популярному домену — сигнатуры нет.
  • Никаких самоподписанных сертификатов: подделка не нужна, сертификат настоящий.
  • Слабое место — нужен «правильный» внешний домен, под который маскируемся.

Как устроена связка VLESS + REALITY

Чтобы не запутаться, разделим три уровня: транспорт, шифрование, маскировка.

Что делает VLESS

VLESS — это просто «упаковщик» вашего трафика. Он берёт исходящие пакеты, помечает их идентификатором пользователя (UUID) и передаёт серверу. Никакой криптографии внутри. Поэтому VLESS почти всегда живёт в паре с внешним TLS. Подробности — в репозитории xray-core.

Что делает REALITY

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

Если клиент — настоящий браузер случайного человека, REALITY-сервер незаметно достраивает соединение до того самого сайта и отдаёт обычный контент. Если клиент знает секрет (короткий ключ), REALITY переключает соединение в режим proxy и пропускает трафик через VLESS.

Почему это сложно блокировать

DPI на ТСПУ может попытаться отличить «настоящий» TLS от «прокси-TLS» по мелочам: набор ClientHello, время ответа, длина сертификата. REALITY обходит почти все классические признаки, потому что отдаёт реальный сертификат реального сайта и пропускает мимо настоящий трафик «лишних» клиентов. Активная проверка («давайте сами зайдём на этот IP и посмотрим, что отдают») возвращает легитимный сайт прикрытия.

Чем REALITY отличается от TLS-плагинов

Старые схемы вроде Trojan или Shadowsocks+TLS требовали свой домен и свой сертификат (например, через Let's Encrypt). DPI постепенно научилась находить такие связки по поведению. REALITY вообще не имеет «своего» домена — он использует чужой реальный, поэтому фильтру нет смысла блокировать целевой домен, не задев настоящих пользователей.

Как понять, что именно сломалось в VLESS+REALITY

СимптомВозможная причинаЧто проверить
Клиент пишет «handshake failure»Неверный публичный ключ или sidСверить конфиг с серверным
Подключение есть, сайты не открываютсяМаршрутизация (routing) на клиентеПроверить, что трафик уходит в outbound, не в direct
Резко перестал работать после года стабильностиСменился TLS-fingerprint сайта прикрытияСменить target на актуальный популярный домен
Работает на Wi-Fi, не работает в LTEОператор фильтрует именно этот IPСменить IP сервера, проверить блокировку отдельно
Сервер коннектится, но виден таймаут на любых сайтахDNS клиента уходит мимо туннеляВключить fakeip / proxy DNS в клиенте
В клиенте мигают reconnect каждые 30 секундНе работает SNI / sid mismatchПерепроверить fingerprint браузера в outbound

Как проверить прямо сейчас

Чтобы понять, виноват ли DPI или ваш конкретный сервер, нужны замеры от пробников в разных сетях. Freedom Checker мониторит доступность по операторам и регионам без рекламы конкретных сервисов — это позволяет отделить локальную проблему от системной.

Если VLESS+REALITY не отвечает только у одного оператора, а у других идёт — почти наверняка дело в фильтрации именно этого IP или порта. Если протокол не работает нигде — ищите ошибку в конфиге или меняйте target.

Проверить доступность через Freedom Checker

Сбой или блокировка?

Сбой VLESS+REALITY обычно выглядит как одинаковый отвал у разных пользователей одного сервера: упал сам VPS, перегружен порт, кончился трафик. Через перезапуск сервера проблема уходит.

Блокировка проявляется иначе — у части операторов работает, у части нет, у одного и того же оператора в разных регионах поведение разное. Это типовая картина: ТСПУ научился фильтровать по IP или по поведению определённого сервера. Чаще всего помогает либо смена IP, либо смена target-домена на более «безопасный».

На что обратить внимание

  • Target должен быть реально работающим популярным сайтом, не вашим собственным доменом.
  • На клиенте обязательно укажите тот же uTLS fingerprint, что и в конфиге сервера (например, chrome).
  • sid (short id) важен — сервер по нему отличает proxy-клиента от случайного гостя.
  • Если меняете VPS — REALITY не привязан к конкретному порту, можно держать 443.
  • REALITY несовместим со старыми клиентами на v2ray без xtls — нужен Xray или sing-box.
  • Не показывайте свой конфиг публично: уникальный sid + ключ — это и есть допуск.
  • «Резервная» точка входа на другом IP с другим target обычно спасает в плохие дни.

Вывод

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

Если у вас уже есть конфиг — храните запасной с другим target и другим IP. Если только выбираете, на чём поднимать свой VPN, начинать имеет смысл именно с этой связки.

Проверить сейчас