Назад

Написано для тех, кто сидит в сетях с инспекцией трафика, и для всех, кто увидел ссылку vless:// в конфиге и захотел понять, что это.

Что такое VLESS?

Понятный ответ: что такое VLESS, с чем его всегда используют, почему системам фильтрации трудно его распознать и чего он вам не даёт.

Крипто
  • VLESS - лёгкий транспорт из семейства V2Ray и Xray, сам по себе ещё не полноценный VPN
  • Собственного шифрования у него нет намеренно, поэтому он всегда работает поверх TLS
  • Легче VMess и не страдает от расхождения часов, поскольку отказался от аутентификации по времени
  • CDN впереди растворяет его в обычном веб-трафике, а REALITY отвечает активным зондам настоящим сайтом
  • Не анонимность и не Tor: один переход, один оператор, доверие перенесено, а не отменено
  • В цензурируемой сети не гарантирован ни один протокол, включая VLESS
без аккаунтаконфиги на странице заказа

VLESS - транспортный протокол из семейства V2Ray и Xray. Он описывает две вещи: как клиент подтверждает, к какому аккаунту он относится, с помощью UUID, и как он просит сервер открыть от его имени соединение к нужному адресу. Этим спецификация почти исчерпывается. Она намеренно тонкая.

Большинство удивляет то, что у VLESS нет собственного шифрования. Это не упущение и само по себе не слабость. Шифрование вынесли из протокола и отдали TLS, тому самому слою, который защищает обычный HTTPS. Поэтому на практике вы никогда не встретите VLESS в одиночку: встречается VLESS поверх TLS и всё чаще VLESS с рукопожатием REALITY.

Дальше страница сначала честно отвечает на вопрос: чем VLESS отличается от VMess, от Shadowsocks и от Trojan, что на самом деле означает работа через CDN, почему глубокой инспекции пакетов с ним тяжело и что он точно не делает. То, что мы продаём, идёт в самом конце, одним разделом, и его можно пропустить.

Что VLESS делает на самом деле

Сессия VLESS начинается с небольшого заголовка от клиента: байт версии, UUID аккаунта, необязательное поле дополнений, команда (соединиться по TCP, соединиться по UDP), адрес и порт назначения. Сервер сверяет UUID со своим списком, открывает запрошенное соединение и дальше просто перекладывает байты в обе стороны.

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

Поэтому VLESS называют транспортом, а не туннелем в том смысле, в каком туннелем является WireGuard. WireGuard поднимает сетевой интерфейс и маршрутизирует пакеты. VLESS проксирует потоки: приложение запрашивает адрес, клиент упаковывает запрос, сервер устанавливает соединение. Пойдёт ли через него всё устройство целиком, зависит от клиентской программы, а не от протокола.

Почему у него нет собственного шифрования

Более ранние протоколы этого семейства несли свою криптографию. Это порождало две проблемы. Первая: самодельная криптография внутри протокола, рассчитанного на обход цензуры, - плохая ставка, её пишет меньше людей, проверяет меньше людей, и если в ней ошибка, о ней годами никто не узнаёт. Вторая проблема для реальной задачи ещё тяжелее. Собственное шифрование даёт трафик собственного вида, а трафик, не похожий больше ни на что в интернете, легко выделить, даже не умея его прочитать.

VLESS занимает противоположную позицию. Он берёт на себя идентификацию и адресацию, а затем отходит в сторону и оставляет конфиденциальность и целостность за TLS. TLS - самый разобранный протокол в интернете, его реализуют библиотеки, которые проверяют тысячи людей, и, что здесь полезнее всего, именно так выглядит почти любое другое соединение, покидающее ваше устройство.

Практический вывод: точка VLESS без TLS перед ней действительно небезопасна и использовать её нельзя. Если вам дали ссылку vless://, у которой параметр security равен none, эта ссылка отправит ваш UUID и адреса назначения в открытом виде. Все конфигурации, которые выдаём мы, используют TLS.

VLESS в сравнении с VMess

VMess появился раньше, в том же проекте. Он несёт собственное шифрование и аутентифицируется хешем, построенным из UUID аккаунта и текущего времени. Именно эта зависимость от часов и порождает классический сбой VMess: клиент, у которого часы разошлись с сервером на минуту-другую, просто не подключается, без внятной ошибки.

У VMess к тому же характерная форма. Поскольку он делает и своё обрамление, и свою криптографию, у получившегося потока байт есть свойства, которые система фильтрации может выучить. Несколько национальных систем фильтрации это и продемонстрировали, после чего установки VMess начали заворачивать себя в TLS, чтобы выжить, и с этого момента протокол платил за шифрование дважды.

VLESS - это по сути VMess без этих двух вещей: без встроенной криптографии и без аутентификации по времени. Результат легче для процессора, нечувствителен к расхождению часов и, когда внешний слой делает TLS, заметно устойчивее к снятию отпечатков. Если выбирать сегодня, сильных аргументов в пользу VMess не осталось.

VLESS в сравнении с Shadowsocks и Trojan

Shadowsocks - это зашифрованный SOCKS-прокси. Его трафик спроектирован так, чтобы выглядеть случайными байтами без какого-либо узнаваемого заголовка. Годами это работало, но "поток байт с высокой энтропией на порту, без TLS-рукопожатия впереди" сам по себе является сигнатурой, и современные системы фильтрации научились искать ровно этот признак и активно прозванивать такие серверы.

Trojan пошёл другим путём: не быть похожим ни на что, а быть похожим на нечто крайне обыденное. Сервер Trojan предъявляет настоящий TLS-сертификат, а зонду, подключившемуся без верного пароля, отдаёт обычную веб-страницу. Для сканера это веб-сервер. Слабость в том, что нужен настоящий домен и сертификат, а сайты, за которые он себя выдаёт, обычно малопосещаемы.

VLESS поверх TLS относится к тому же семейству, что и Trojan, а REALITY продвигает ту же идею дальше. Разница в том, что VLESS - транспорт, а не законченная конструкция сервера, поэтому его можно нести поверх обычного TLS, поверх WebSocket за CDN, поверх gRPC или поверх REALITY, и вы выбираете то, что подходит вашей сети. Именно эта гибкость и сделала его стандартом в этой экосистеме.

Что на практике означают CDN впереди и REALITY

Работа через CDN означает, что ваше соединение VLESS идёт не к серверу, стоящему в одиночку на своём адресе. Оно идёт к пограничному узлу сети доставки контента, по WebSocket или gRPC внутри обычного HTTPS-запроса, и CDN передаёт его дальше. Для наблюдателя вы подключились к IP-адресу, который обслуживает ещё тысячи посторонних сайтов, с именем хоста и сертификатом этой CDN. Заблокировать такой адрес - значит заблокировать вместе с ним большой кусок обычного интернета, и такую цену большинство сетей платить не станет.

REALITY подходит к задаче со стороны сертификата. Сервер REALITY одалживает TLS-рукопожатие настоящего популярного постороннего сайта. Когда система цензуры активно прозванивает ваш сервер, а это уже рутина, а не теория, зонд получает подлинное рукопожатие и подлинный сертификат этого сайта. Зонд делает вывод, что нашёл зеркало известного сервиса, потому что снаружи он именно это и увидел.

Ни одна из этих техник не волшебство и ни одна не вечна. Обе - ответ на конкретный метод обнаружения, а методы меняются. Что они дают: блокировка вашего соединения обходится оператору сети сопутствующим ущербом, на который он может не пойти, вместо правила, которое ничего ему не стоит.

Почему глубокой инспекции пакетов с ним тяжело

Системы фильтрации работают слоями. Самый дешёвый слой - список заблокированных адресов и имён. Следующий смотрит на форму трафика: байты рукопожатия, распределение размеров пакетов, тайминги. Самый дорогой сам подключается к вашему серверу и пытается заставить его выдать себя.

VLESS поверх TLS почти ничего не даёт первому слою, потому что адрес CDN нельзя дёшево внести в список блокировок. Второму слою он тоже даёт мало, потому что в проводе лежит TLS-сессия, отпечаток рукопожатия которой можно сделать неотличимым от распространённого браузера, а заголовок VLESS появляется только после установления сессии, уже зашифрованным. REALITY отвечает третьему слою напрямую, отдавая зонду настоящий сайт.

Что против него всё ещё работает: сеть, разрешающая только белый список адресов; сеть, блокирующая TLS ко всему, кроме собственного резолвера и прокси; и длительный анализ трафика, которому не нужно ничего читать, чтобы заметить, что одно соединение долго несло подозрительный объём данных. VLESS - сильный ответ на сопоставление шаблонов. Он не ответ на сеть, которая пускает вас только на пять одобренных адресов.

Чем VLESS не является

Это не анонимность. Соединение VLESS переносит видимую точку выхода вашего трафика из вашей сети на сервер. Ваша локальная сеть и провайдер доступа перестают видеть, куда вы идёте; сервер видит. Это перенос доверия, а не его устранение. Наша сеть не ведёт логов: исходные адреса и метки времени соединений не сохраняются, а серверы работают из оперативной памяти, так что перезагрузка ничего на машине не оставляет. И всё же оценивайте это утверждение так же, как оценивали бы его у кого угодно другого.

Это не Tor. Tor ведёт трафик через три независимых узла, которыми управляют разные люди, чтобы ни один из них не знал одновременно, кто вы и куда идёте. VLESS - это один переход к одному оператору. Tor заметно медленнее и заметно сильнее против именно этой угрозы. Если ваша модель риска требует, чтобы никто на пути не мог сопоставить оба конца, VPN любого протокола - неподходящий инструмент.

Это и не гарантия. Сеть может заблокировать протокол, страна может заблокировать CDN, а точка, работавшая вчера, может встать сегодня. Тот, кто обещает, что VLESS всегда будет работать в названной стране, гадает. Верное утверждение уже, но по-прежнему полезно: VLESS сделан так, чтобы выглядеть обычным зашифрованным веб-трафиком, и именно его стоит пробовать, когда более простые протоколы не проходят.

Наш работает из четырёх точек: Сингапур, Токио, Лос-Анджелес и Берлин. Точки за CDN поднимают и обслуживают поштучно, а не массово, и короткий ухоженный список лучше длинного заброшенного. Доступ по VLESS входит в любой тариф на /vpn/ вместе с WireGuard и OpenVPN на серверах в десятках стран, а на /vpn/status/ есть живая сводка, если хотите увидеть точки до покупки.

Как читать ссылку vless://

  1. 1

    То, что до @, - это ваш аккаунт

    Ссылка выглядит так: vless://UUID@хост:порт?параметры#метка. Длинная шестнадцатеричная строка до символа @ - это UUID вашего аккаунта. Относитесь к нему как к паролю: у кого он есть, тот может пользоваться вашим доступом.

  2. 2

    Хост и порт - это куда подключается клиент

    Это адрес, к которому соединение устанавливается на самом деле. В схеме с CDN впереди это обычно имя хоста CDN, а не сам сервер, и порт 443, чтобы попасть на тот же порт, что и весь обычный HTTPS-трафик.

  3. 3

    security говорит, чем сессия защищена

    security=tls - обычный TLS; security=reality - рукопожатие REALITY, заимствующее настоящий сайт. security=none означает, что сессию ничто не шифрует: это небезопасно и вне лаборатории применяться не должно.

  4. 4

    type - это способ переноса VLESS

    type=ws - это WebSocket, который обычно и используется при работе через CDN, рядом с ним будет path и часто параметр host. type=grpc использует потоки gRPC, type=tcp - без обёртки. Эти значения должны в точности совпадать с сервером, иначе соединения не будет.

  5. 5

    sni и fp определяют, что видит сеть

    sni - имя сервера, отправляемое в рукопожатии TLS, единственная часть TLS-соединения, видимая открытым текстом. fp задаёт отпечаток рукопожатия, который имитирует клиент, обычно chrome, чтобы соединение выглядело браузером, а не прокси-утилитой.

  6. 6

    Всё после # - только метка

    Она именует запись в списке вашего клиента и на соединение никак не влияет. Переименуйте её как угодно, лишь бы вам было удобно различать серверы.

Вопросы и ответы

Как расшифровывается VLESS?

Это не формальная аббревиатура. Название происходит от VMess, более раннего протокола того же проекта V2Ray: букву V сохранили, а остальное намекает, что в конструкции стало меньше - меньше накладных расходов, меньше криптографии внутри протокола, меньше следов для снятия отпечатков. Чтение "VMess, только легче" близко к замыслу.

Безопасно ли пользоваться VLESS?

VLESS поверх TLS безопасен в обычном смысле: сессию защищает та же криптография, что и HTTPS. VLESS без TLS небезопасен, потому что сам протокол ничего не шифрует и раскрыл бы UUID вашего аккаунта и адреса назначения. Проверяйте, что в выданной вам ссылке security равен tls или reality, но никогда не none.

В чём разница между VLESS и VMess?

VMess несёт собственное шифрование и аутентифицируется по метке времени, поэтому устройство с неверными часами не подключается, а трафик имеет распознаваемую форму. VLESS убирает и то и другое, полагаясь на TLS для шифрования и только на UUID для идентификации. VLESS легче, устойчивее к отпечаткам и не зависит от часов.

VLESS лучше, чем Shadowsocks?

В сетях, которые активно ищут прокси-трафик, обычно да, потому что VLESS поверх TLS выглядит как обычная HTTPS-сессия, а Shadowsocks - как необъяснимый поток случайных байт. В сети, которая ничего не фильтрует, Shadowsocks проще в эксплуатации и разница не имеет значения.

Делает ли VLESS меня анонимным?

Нет. Он меняет то, кто может видеть ваш трафик, а не то, может ли его видеть хоть кто-то. Ваша локальная сеть и провайдер перестают видеть ваши адреса назначения, а сервер VPN начинает их видеть. Для анонимности от наблюдателя, который видит оба конца соединения, подходящий инструмент - Tor, а не какой-либо протокол VPN.

Будет ли VLESS работать в стране, где блокируют VPN?

Обещать это никто не может. VLESS сделан так, чтобы выглядеть обычным зашифрованным веб-трафиком, поэтому его обычно пробуют, когда заблокированы WireGuard и OpenVPN, но сеть, пропускающая только белый список адресов, остановит и его. Провайдера, гарантирующего конкретную страну, стоит считать тревожным сигналом.

Какие клиенты поддерживают VLESS?

На Android - v2rayNG и Hiddify. На iOS - Shadowrocket и Streisand. На Windows - v2rayN, Nekoray или Hiddify. На macOS и Linux - Hiddify и ядро Xray напрямую. Все они импортируют ссылку vless:// вставкой или сканированием QR-кода.

Нужен ли для VLESS домен?

Для обычного TLS или схемы с CDN нужен, потому что сертификаты TLS выдаются на имена, а не на адреса. REALITY - исключение: он одалживает для рукопожатия чужое имя, поэтому может работать на голом IP. Пользователю об этом заботиться не нужно, домен уже вписан в выданную ссылку.

Другие темы

Руководства

Что такое VLESS?

Понятный ответ: что такое VLESS, с чем его всегда используют, почему системам фильтрации трудно его распознать и чего он вам не даёт.

Смотреть планы VPN