Files
XTLS_Xray-docs-next/docs/ru/config/outbounds/vless.md
T
2026-01-23 22:12:09 +08:00

13 KiB
Raw Blame History

VLESS(XTLS Vision Seed)

VLESS - это легкий транспортный протокол без сохранения состояния, который разделен на входящую и исходящую части и может служить мостом между клиентом и сервером Xray.

В отличие от VMess, VLESS не зависит от системного времени, аутентификация также осуществляется с помощью UUID.

OutboundConfigurationObject

{
  "address": "example.com",
  "port": 443,
  "id": "5783a3e7-e373-51cd-8642-c83782b807c5",
  "encryption": "none",
  "flow": "xtls-rprx-vision",
  "level": 0,
  "reverse": {}
}

address: address

Адрес сервера, указывающий на сервер, поддерживаются доменные имена, IPv4 и IPv6.

port: number

Порт сервера, обычно тот же, что и порт, прослушиваемый сервером.

id: string

Идентификатор пользователя VLESS, может быть любой строкой длиной менее 30 байт или допустимым UUID. Пользовательская строка и ее UUID-отображение эквивалентны, это означает, что вы можете использовать следующие способы записи id в файле конфигурации для идентификации одного и того же пользователя:

  • Напишите "id": "Я люблю арбуз учителя 1314",
  • Или напишите "id": "5783a3e7-e373-51cd-8642-c83782b807c5" (этот UUID является UUID-отображением строки "Я люблю арбуз учителя 1314")

Стандарт сопоставления описан в VLESS UUID Mapping Standard: Mapping Custom Strings to a UUIDv5.

Вы можете использовать команду xray uuid -i "Пользовательская строка" для генерации UUID, соответствующего пользовательской строке. Вы также можете использовать команду xray uuid для генерации случайного UUID.

encryption: "none"

Настройки шифрования VLESS. Не может быть пустым, для отключения необходимо явно установить значение "none".

Большинству пользователей рекомендуется использовать ./xray vlessenc для автоматической генерации этого поля, чтобы избежать ошибок. Подробные настройки ниже рекомендуются только для продвинутых пользователей.

Его формат представляет собой строку подробных настроек, соединенных символом .. Например, mlkem768x25519plus.native.0rtt.100-111-1111.75-0-111.50-0-3333.ptjHQxBQxTJ9MWr2cd5qWIflBSACHOevTauCQwa_71U. В этом документе отдельная часть, разделенная точкой, называется блоком.

  • Первый блок, это метод рукопожатия, в настоящее время он может быть только mlkem768x25519plus. Требуется, чтобы сервер и клиент совпадали.
  • Второй блок, это метод шифрования, возможные варианты: native/xorpub/random, которые соответствуют: пакет данных в исходном формате / исходный формат + обфускация части открытого ключа / полностью случайное число (подобно VMESS/Shadowsocks). Требуется, чтобы сервер и клиент совпадали.
  • Третий блок, это восстановление сеанса. Выбор 0rtt будет следовать настройкам сервера, пытаясь использовать ранее сгенерированный тикет для пропуска рукопожатия и быстрого подключения (может быть вручную отключено сервером). Выбор 1rtt принудительно выполнит процесс рукопожатия 1 RTT. Здесь это отличается по смыслу от настроек сервера; подробности см. в настройках decryption для входящих соединений VLESS.

Далее идет padding (заполнение). После установления соединения клиент отправляет некоторые "мусорные" данные для маскировки характеристик длины. Он не обязан совпадать с сервером (совпадающая часть для входящего трафика - это padding, отправляемый сервером в сторону клиента). Это переменная часть, формат: padding.delay.padding+(.delay.padding)*n (можно вставлять несколько padding, но требуется, чтобы между двумя блоками padding обязательно был блок delay). Например, можно написать очень длинную строку padding.delay.padding.delay.padding.delay.padding.delay.padding.delay.padding.

  • Формат padding: probability-min-max, например, 100-111-1111, что означает отправку padding длиной 111~1111 с вероятностью 100%.
  • Формат delay также probability-min-max, например, 75-0-111, что означает ожидание 0~111 миллисекунд с вероятностью 75%.

Первый блок padding имеет особые требования: вероятность должна быть 100%, а минимальная длина должна быть больше 0. Если padding отсутствует, ядро автоматически использует 100-111-1111.75-0-111.50-0-3333 в качестве настроек padding.

Последний блок будет распознан ядром как параметр, используемый для аутентификации сервера. Он может быть сгенерирован с помощью ./xray x25519 (используя часть Password) или ./xray mlkem768 (используя часть Client) и должен соответствовать серверу. mlkem768 является постквантовым алгоритмом, который может предотвратить (в будущем) компрометацию параметров клиента и использование квантового компьютера для взлома закрытого ключа и выдачи себя за сервер. Этот параметр используется только для проверки, сам процесс рукопожатия в любом случае является постквантово-безопасным, и существующие зашифрованные данные не могут быть взломаны будущими квантовыми компьютерами.

flow: string

Режим управления потоком, используется для выбора алгоритма XTLS.

В настоящее время для исходящего протокола доступны следующие режимы управления потоком:

  • Отсутствует flow или пустая строка: используется обычный TLS-прокси.
  • xtls-rprx-vision:Использует XTLS, включает случайное заполнение внутреннего рукопожатия. Перехватывает UDP-трафик на порт 443 (QUIC), побуждая браузеры использовать обычный HTTPS для увеличения объема трафика, к которому может быть применен Splice.
  • xtls-rprx-vision-udp443:Аналогичен xtls-rprx-vision, но не перехватывает UDP 443. Используется в случаях, когда программы принудительно используют QUIC, и перехват приводит к их неработоспособности.

XTLS доступен только в следующих комбинациях

  • TCP+TLS/Reality: если в данный момент передаётся TLS 1.3, ядро попытается выполнить Splice на зашифрованных данных нижнего уровня; в случае успеха это позволит сэкономить все IO-затраты ядра.
  • VLESS Encryption: не имеет ограничений по нижнему уровню транспорта. Если нижний уровень не TCP, будет предпринята только попытка «прозрачного» прохождения Encryption, что сэкономит накладные расходы Encryption; если же используется TCP, всё равно будет предпринята попытка выполнения Splice.

::: tip О Splice

Splice - это функция, предоставляемая ядром Linux, где ядро системы напрямую пересылает TCP, минуя память Xray, что значительно сокращает количество операций копирования данных и переключения контекста процессора.

Ограничения использования режима Splice:

  • Среда Linux.
  • Входящий протокол: Dokodemo door, Socks, HTTP и другие чистые TCP-соединения или другие входящие протоколы, использующие XTLS.
  • Исходящий протокол: VLESS + XTLS.

При использовании Splice отображение скорости сети происходит с задержкой: статистика учитывается только после разрыва соединения, так как в период, когда ядро управляет соединением, Xray не имеет информации о проходящем трафике.

:::

level: number

Уровень пользователя, для соединения будет использоваться локальная политика, соответствующая этому уровню пользователя.

Значение level соответствует значению level в разделе policy. Если не указано, используется значение по умолчанию - 0.

reverse: struct

Упрощённая конфигурация обратного прокси VLESS. Имеет то же назначение, что и встроенный в ядро универсальный обратный прокси, но с более простой настройкой.

Наличие этого параметра означает, что данное исходящее соединение может быть использовано как исходящее соединение обратного прокси VLESS. Оно автоматически установит соединение с сервером для регистрации туннеля обратного прокси.

Текущая запись

"reverse": {
  "tag": "r-inbound"
}

tag — это тег входящего прокси для данного обратного прокси. Когда сервер отправляет запрос обратного прокси, он войдет в систему маршрутизации через входящее соединение с этим тегом. Используйте систему маршрутизации, чтобы направить его на нужное вам исходящее соединение.

Используемый UUID должен совпадать с UUID, для которого на сервере также настроен reverse (подробнее см. в разделе о входящих соединениях VLESS).