Happ VPN

XTLS Vision: что это

Автор
Екатерина Лебедева, редактор раздела knowledge base
Проверил:
Артём Волков
Проверено:
Опубликовано:
, обновлено
Версия гайда:
1.0

Коротко

XTLS Vision — режим flow у VLESS в Xray-core: он ускоряет передачу уже установленного TLS-соединения и добавляет случайную подкладку в рукопожатие. В Happ включается параметром flow=xtls-rprx-vision в ссылке vless:// и работает только с TCP и TLS или Reality.

После обычного TLS-рукопожатия данные в любом случае проходят через шифрование и расшифровку на клиенте и сервере. Vision ускоряет именно эту часть: он распознаёт, что рукопожатие уже завершено, и переключается на прямую передачу зашифрованных TCP-данных через функцию ядра Linux splice, снижая нагрузку на процессор. Отдельно Vision по умолчанию перехватывает UDP на порт 443, то есть QUIC, из-за чего браузеры на этом канале переходят на обычный HTTPS. Режим доступен только у VLESS и только с транспортом TCP поверх TLS или Reality — для WebSocket, gRPC и XHTTP его не указывают.

XTLS Vision — режим параметра flow у протокола VLESS в Xray-core, который добавляет случайную подкладку в TLS-рукопожатие и затем передаёт данные напрямую через ядро операционной системы, снижая нагрузку на процессор.

Суть термина

XTLS Vision — значение параметра flow у протокола VLESS, а не отдельный протокол и не самостоятельная настройка. Он относится к тому, как передаются данные уже после TLS-рукопожатия, а не к тому, как сервер проверяет клиента.

Во время самого рукопожатия Vision добавляет случайную внутреннюю подкладку — лишние байты переменного размера, из-за которых форма рукопожатия отличается от подключения к подключению. Как только TLS-сессия установлена, Vision переключается на прямую передачу зашифрованных TCP-данных через функцию ядра Linux splice, минуя часть обработки в памяти приложения Xray-core. Это снижает нагрузку на процессор сервера при большом числе одновременных соединений.

Отдельная особенность Vision — поведение с UDP на порту 443. По умолчанию режим перехватывает такие пакеты, из-за чего браузеры, которые пробуют установить QUIC-соединение, переходят на обычный TCP с TLS. Если это поведение не нужно, есть вариант flow=xtls-rprx-vision-udp443, который перехват отключает.

Где Vision работает, а где нет

Режим совместим не с любой комбинацией транспорта и защиты — только с определёнными.

ТранспортЗащитаРаботает Vision
TCPTLSда
TCPRealityда
WebSocketTLSнет
gRPCTLS или Realityнет
XHTTPTLS или Realityнет

Значение flow должно совпадать на клиенте и сервере: если сервер настроен на Vision, а клиент подключается без этого параметра, или наоборот, Xray-core разорвёт соединение.

Как это выглядит в Happ

В интерфейсе Happ отдельного переключателя для Vision нет — параметр приходит внутри ссылки или подписки как часть настройки VLESS.

Ссылка. В vless:// после type=tcp и security=reality или security=tls добавляется flow=xtls-rprx-vision:

Ссылка
vless://00000000-0000-0000-0000-000000000000@example.com:443?type=tcp&security=reality&flow=xtls-rprx-vision&pbk=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA&sid=0123abcd&sni=example.com#Example

Ручной ввод. Кнопка «+» вверху справа → «Ручной ввод» → протокол VLESS → поле для flow среди параметров транспорта → «Готово».

Если значение flow не совпадает с настройкой сервера, Happ, скорее всего, покажет обычную неудачу подключения или ошибку TLS-рукопожатия, а не отдельное сообщение про Vision.

Чем Vision отличается от похожих терминов

  • Reality — способ, которым сервер доказывает подлинность без сертификата; Vision к проверке подлинности отношения не имеет.
  • uTLS fingerprint — параметр fp, который задаёт форму TLS-приветствия клиента; Vision работает уже после рукопожатия, а fp — во время него.
  • TLS-рукопожатие — сам процесс установления защищённого соединения; Vision добавляет подкладку в этот процесс, но не заменяет его.
  • VLESS — протокол, у которого единственного существует параметр flow; в VMess, Trojan и Shadowsocks режима Vision нет.

Главное

  • Vision — не протокол, а значение параметра flow у VLESS; без VLESS такого режима не существует.
  • Vision работает только с транспортом TCP и слоем защиты TLS или Reality — для WebSocket, gRPC и XHTTP параметр flow не указывают.
  • После завершения TLS-рукопожатия Vision передаёт зашифрованные данные напрямую через функцию ядра Linux splice, снижая нагрузку на процессор сервера.
  • По умолчанию Vision перехватывает UDP на порт 443 (QUIC), и браузеры на этом соединении переходят на обычный TCP; вариант flow xtls-rprx-vision-udp443 отключает перехват.
  • Значение flow должно совпадать у клиента и сервера: если один ждёт Vision, а другой подключается без него, соединение не установится.

Частые вопросы

Что означает слово Vision в названии режима?

Официальная документация Xray не расшифровывает происхождение названия — это просто имя конкретной реализации flow control внутри XTLS, второй по счёту после более раннего экспериментального варианта. Технически Vision описывает, как именно передаются данные после TLS-рукопожатия: с внутренней подкладкой во время установления соединения и прямой передачей после него.

Насколько заметно Vision ускоряет соединение?

Выигрыш заметнее всего на сервере с высокой нагрузкой: прямая передача через функцию ядра Linux splice снижает копирование данных между памятью процесса и ядра и переключения контекста процессора. На стороне клиента и на слабо загруженном сервере разница в скорости может быть небольшой, а само TLS-рукопожатие Vision не ускоряет — оно проходит как обычно.

Что случится, если в ссылке указать flow=xtls-rprx-vision вместе с type=ws?

Такая комбинация не соответствует тому, как реализован Vision: он рассчитан на прямую работу с TCP-соединением после TLS-рукопожатия, а внутри кадров WebSocket так вмешаться в поток нельзя. На практике сервер и клиент должны быть настроены согласованно: для WebSocket, gRPC и XHTTP параметр flow в конфигурации VLESS просто не указывают.

Как понять, что сервер провайдера работает именно с Vision?

Проще всего посмотреть на саму ссылку — в ней должен быть параметр flow со значением xtls-rprx-vision, обычно рядом с type=tcp и security=reality или security=tls. Если подписка не зашифрована и не скрыта, то же самое видно в параметрах сервера внутри Happ. В зашифрованной подписке эти детали пользователю недоступны.

Зачем Vision перехватывает трафик на UDP-порт 443?

На порту 443 браузеры нередко пробуют установить соединение по QUIC — транспорту на основе UDP, который использует, например, HTTP/3. По умолчанию Vision перехватывает такие попытки, и браузер после неудачи переключается на обычный TCP с TLS, через который и идёт туннель VLESS. Вариант flow xtls-rprx-vision-udp443 этот перехват отключает, если он не нужен.

Обязательно ли использовать Vision вместе с Reality?

Нет, это независимые настройки: Reality отвечает за то, как сервер доказывает подлинность без сертификата, а Vision — за то, как передаются уже зашифрованные данные. VLESS с Reality без Vision вполне работает, как и VLESS с обычным TLS и включённым Vision. На практике их часто комбинируют, потому что оба рассчитаны на транспорт TCP.

Что за подкладка появляется в рукопожатии Vision?

Подкладка (padding) — это лишние байты, которые Vision добавляет во время TLS-рукопожатия, меняя его точный размер и структуру от подключения к подключению. После установления соединения подкладка исчезает, и дальше идёт прямая передача полезных данных без изменений. Это часть внутреннего устройства режима, а не отдельный параметр, который пользователь настраивает вручную.

Упомянутые темы

Разделы по теме

Источники

  1. Документация Happ: примеры ссылок и параметры — обращение 28 сентября 2026
  2. Документация Xray: исходящее подключение VLESS — обращение 28 сентября 2026