Что такое VLESS, Reality, XTLS Vision и XHTTP: как устроены современные VPN-протоколы
Как провайдер распознаёт VPN, почему обычные WireGuard и OpenVPN стали заметны и что внутри связки Xray + VLESS + Reality. Разбор без команд, чтобы осознанно выбрать схему для своего сервера.

В любой инструкции по VPN на своём сервере мелькают VLESS, Reality, XTLS и XHTTP, но объяснения, что это и зачем, обычно нет. Отсюда типичная ситуация: одна и та же схема у соседа работает год, а у вас отваливается через неделю. Ниже — что видит провайдер, по каким признакам он отличает VPN от обычного сайта и как каждый слой современного стека эти признаки убирает. После этого выбор между Marzban, 3X-UI, Amnezia и Outline перестаёт быть гаданием.
Под эту инструкцию подойдёт любой VPS на tanaka.host: серверы в Германии, IPv4 и IPv6 в комплекте, оплата по дням.
Что видит провайдер
Содержимое зашифрованного соединения прочитать нельзя, но вокруг него остаётся много открытого: IP-адрес и порт, транспортный протокол, объём и ритм передачи, а главное — первые байты каждого соединения, которые у большинства протоколов идут в открытом виде. На этом и работают системы фильтрации; в России их называют ТСПУ.
Способы блокировки по возрастанию точности:
| Способ | Как работает | Побочный эффект |
|---|---|---|
| По IP или подсети | Запрет адреса целиком | Задевает всех соседей по хостингу, поэтому применяют точечно |
| По началу соединения | Опознание протокола по первым пакетам, как по почерку | Работает на любом порту и любом сервере |
| По косвенным признакам | Большой объём к одному адресу, нетипичный ритм, несоответствие имени сайта и IP | По отдельности слабые, в сумме дают уверенную оценку |
Вывод, из которого вытекает всё остальное: зашифровать трафик недостаточно. Соединение должно быть неотличимо от того, что блокировать нельзя, потому что на нём держится обычный интернет — например, от открытия сайта по HTTPS.
Почему WireGuard и OpenVPN стали заметны
Оба протокола создавались для защиты данных в чужих сетях, а не для сокрытия самого факта VPN. Шифрование у них надёжное, но рукопожатие — обмен служебными пакетами при подключении — имеет постоянную и документированную структуру. Достаточно один раз описать её в правиле DPI, и дальше такие соединения находятся где угодно.
Первый ответ на это — менять внешний вид известного протокола. Так работает AmneziaWG: криптография WireGuard остаётся, но в рукопожатие добавляется случайный мусор, а служебные заголовки шифруются (подробнее — в статье про Amnezia VPN). Второй ответ — Shadowsocks, на котором построен Outline: соединение зашифровано с первого байта и выглядит как случайный шум.
Но выяснилось, что полное отсутствие структуры — тоже признак. Нормальный трафик почти всегда начинается с узнаваемого заголовка, и поток «без лица» сам по себе подозрителен. Отсюда идея VLESS и Reality: не прятать структуру, а одолжить её у самого массового трафика — HTTPS.
Xray и протокол VLESS
Ядро почти всех современных схем — Xray. Он работает и на сервере, и внутри клиентского приложения и гоняет трафик между ними выбранным способом. Панели Marzban, 3X-UI и Remnawave ничего не передают сами: они только управляют настройками Xray и выдают пользователям ссылки.
VLESS — протокол, по которому клиент и сервер Xray договариваются. Он намеренно примитивен: клиент сообщает свой UUID и адрес назначения, сервер проверяет UUID и начинает пересылку. Маскировки в VLESS нет, и это принципиально — внешний вид соединения задаёт внешний слой (обычно TLS), а VLESS не добавляет к нему ни лишних байтов, ни узнаваемых признаков. В свежих версиях Xray у VLESS появилось собственное шифрование, но в связке с TLS или Reality его оставляют выключенным — в панелях это значение none.
Когда говорят «VLESS Reality» или «VLESS + TLS + XHTTP», речь о трёх независимых уровнях:
| Уровень | За что отвечает | Варианты |
|---|---|---|
| Протокол | Кто вы и куда идут данные | VLESS |
| Транспорт | Как байты упакованы при передаче | RAW (бывший TCP), XHTTP |
| Безопасность | Как соединение выглядит для наблюдателя | TLS со своим доменом, Reality |
Транспорт: RAW и XHTTP
RAW — одно долгое TCP-соединение, как при загрузке страницы. Самый быстрый вариант, и именно он идёт в паре с Reality.
XHTTP режет трафик на множество обычных HTTP-запросов, и со стороны это похоже на сайт, который дёргает своё API. Такие запросы могут проходить через CDN вроде Cloudflare: провайдер видит подключение к адресу CDN, за которым миллионы сайтов, а IP вашего сервера скрыт. XHTTP можно использовать и без CDN — напрямую со своим доменом и настоящим сертификатом.
Слой безопасности: TLS или Reality
Обычный TLS — это ваш домен и сертификат Let’s Encrypt. Соединение выглядит как визит на ваш сайт, и это честная маскировка. Цена — нужен домен, а сервер должен отвечать как настоящий сайт, иначе проверка его выдаст.
Reality решает ту же задачу без домена и сертификата. Каждое TLS-соединение начинается с ClientHello, где открытым текстом стоит имя сайта — поле SNI. Клиент Reality пишет туда имя постороннего реально существующего сайта (его называют целью, dest). Провайдер видит обычное начало подключения к этому сайту.
Хитрость в ответе сервера. Фильтр может сам подключиться к вашему IP и посмотреть, какой сертификат ему предъявят. Если бы сервер Reality отвечал своим, обман вскрылся бы сразу. Поэтому в ClientHello настоящего клиента спрятана метка, вычисленная из публичного ключа сервера и Short ID. Сервер с парным приватным ключом метку узнаёт и дальше ведёт соединение как VPN. Все остальные подключения — проверка провайдера, случайный сканер — он прозрачно пересылает сайту-цели. Проверяющий получает подлинный сертификат и настоящие страницы, потому что фактически общается с этим сайтом через ваш сервер.
Слабое место Reality не в криптографии. Провайдер видит пару «SNI + IP». Если в SNI стоит
microsoft.com, а адрес принадлежит небольшому хостингу, сочетание неестественно. Поэтому целью выбирают небольшие сайты, которые сами живут у хостеров, а лучший вариант — маскироваться под собственный сайт на том же сервере (схема self-steal), где имя, адрес и сертификат согласованы полностью.
XTLS Vision и отпечаток браузера
Даже идеальная маскировка может выдать характер содержимого. Почти весь интернет уже под TLS, поэтому внутри туннеля идут HTTPS-соединения — получается «TLS внутри TLS». Размеры первых пакетов такого вложенного рукопожатия образуют узнаваемую последовательность.
Поток XTLS Vision (xtls-rprx-vision) делает две вещи: дополняет первые пакеты до неузнаваемых размеров, а после завершения внутреннего рукопожатия перестаёт шифровать уже зашифрованные данные второй раз. Первое прячет рисунок, второе снимает нагрузку с процессора и ускоряет передачу. Для Reality поверх RAW Vision включают всегда.
Последний элемент — отпечаток TLS (fingerprint, uTLS). Каждый браузер начинает соединение по-своему: свой набор шифров и расширений. По нему можно определить, какой программой создано подключение, и клиент Xray умеет подражать популярным браузерам. Выбор образца тоже влияет на заметность: для серверов, к которым подключаются из России, обычно советуют firefox, а не chrome.
Какую схему выбрать
| Задача | Что подойдёт |
|---|---|
| Всё в одном приложении, без терминала | Amnezia VPN: AmneziaWG плюс XRay с Reality на одном сервере |
| VPN для семьи за пять минут | Marzban или 3X-UI с VLESS Reality — панель сама выберет сайт-цель |
| Пользователи, лимиты, подписки | 3X-UI |
| Несколько серверов под одной панелью | Remnawave |
| Есть свой домен, нужна максимальная маскировка | Self-steal для Reality |
| Свой домен, трафик как у обычного сайта | VLESS + TLS + XHTTP |
| Простой VPN по одной ссылке-ключу | Outline, но его блокируют чаще |
| Классика без маскировки, для своих задач | WireGuard с wg-easy, OpenVPN |
Если подключение перестало работать, не переустанавливайте всё подряд — сначала пройдите по шагам из статьи VPN на своём сервере не подключается: там отличают блокировку адреса от ошибки в настройках.