VLESS XHTTP
VLESS XHTTP передаёт VPN-трафик HTTP-запросами поверх Reality — для сетей, которые обрывают долгие TCP-соединения. Как он работает, ограничения и роль в Colitu.
VLESS XHTTP — третий режим, который Colitu Adaptive Connect пробует на Android и iOS, и один из TCP-режимов, которые на Windows и Linux упорядочиваются по времени подключения. Он использует тот же протокол VLESS и ту же маскировку Reality, что и VLESS Reality, но меняет способ передачи данных: вместо одного долгоживущего «сырого» потока трафик идёт HTTP-запросами и ответами.
Что это такое
XHTTP — транспорт Project X (Xray), открытого инструментария, из которого также происходят VLESS и Reality. Он вырос из более раннего транспорта Xray под названием SplitHTTP. Идея — передавать прокси-сессию по обычным правилам HTTP, причём направления отправки и получения могут идти в разных HTTP-запросах. В других конфигурациях это позволяет XHTTP проходить через всё, что понимает HTTP; в Colitu он работает напрямую поверх Reality, поэтому внешний слой — та же замаскированная сессия TLS 1.3, что и у VLESS Reality.
Как это работает
- Рукопожатие Reality. Приложение открывает TCP-соединение и выполняет рукопожатие Reality TLS 1.3: отпечаток как у браузера, скрытая аутентификация X25519, а зонды перенаправляются на настоящий сайт-цель. У режима XHTTP своя пара ключей Reality, отдельная от VLESS Reality.
- Секретный путь. Внутри TLS-сессии приложение обращается по HTTP к случайному пути на сервере, который знает только приложение. На любом другом пути туннель не отвечает.
- Направление загрузки. Данные от сервера приходят телом HTTP-ответа, который передаётся приложению потоком.
- Направление отправки. В зависимости от режима данные приложения отправляются серией отдельных POST-запросов (packet-up), потоком в теле одного запроса (stream-up) или вместе с загрузкой в одном запросе (stream-one). Colitu выставляет режим «auto» и оставляет выбор Xray.
- VLESS внутри. Запрос VLESS с идентификатором пользователя устройства и адресом назначения идёт внутри этого HTTP-обмена — так же, как шёл бы внутри «сырого» потока.
Зачем Colitu использует VLESS XHTTP
Некоторые сети обрывают или ухудшают TCP-соединения, которые долго остаются открытыми или передают много данных одним непрозрачным потоком, — а это типичная картина VPN-туннеля. Разбиение сессии на HTTP-запросы превращает эту картину в нечто, что ведёт себя как HTTP-трафик. Именно для этого XHTTP и создан. Adaptive Connect получает вариант на основе Reality на случай, когда обычный VLESS Reality подключается, но затем зависает или обрывается.
Где он силён
- Сети, которые обрывают долгие TCP-соединения: трафик распределён по HTTP-запросам, а не идёт одним бесконечным потоком.
- Сети с DPI: режим наследует маскировку Reality, отпечаток браузера и защиту от активного зондирования.
- Сети, где заблокирован UDP: как и другие TCP-режимы, он не зависит от UDP.
Ограничения и когда он не лучший выбор
- Больше накладных расходов. HTTP-обрамление и отдельные запросы добавляют накладные расходы и немного задержки. В чистой сети VLESS Reality с Vision экономнее.
- Без Vision. XTLS Vision нужен «сырой» TCP-поток, которого XHTTP не даёт, поэтому обработка «TLS внутри TLS» средствами Vision в этом режиме недоступна.
- TCP на каналах с потерями. В мобильной сети или плохом Wi-Fi с большими потерями он замедляется, как любой TCP-протокол; Hysteria2 там обычно быстрее.
- Те же ограничения Reality. SNI называет сторонний сайт, а IP-адрес принадлежит другой сети; фильтры, которые сравнивают одно с другим или блокируют по IP-адресу, всё равно могут повлиять на соединение.
- Молодой транспорт. XHTTP новее остальных режимов и продолжает развиваться в Xray.
Как его использует Adaptive Connect
На Android и iOS VLESS XHTTP идёт третьим: после Hysteria2 и VLESS Reality, перед Trojan и Shadowsocks 2022. До него доходит очередь, когда UDP непригоден, а обычный Reality либо не подключается, либо не проходит проверку трафика. На Windows и Linux он упорядочивается вместе с другими TCP-режимами по измеренному времени подключения. Если XHTTP тоже ничего не передаёт, приложение отодвигает его назад и переходит к следующему режиму.
Безопасность и шифрование
- Шифрование: внешний слой — сессия Reality TLS 1.3 с обменом ключами X25519, защищённая AEAD-шифрами TLS 1.3.
- Проверка сервера: рукопожатие должно доказать владение закрытым ключом, соответствующим открытому ключу Reality режима XHTTP; иначе приложение не принимает сервер.
- Проверка клиента: блок аутентификации Reality, секретный HTTP-путь и идентификатор пользователя VLESS, входящий в собственные данные подключения каждого устройства.
- Обращение с ключами: ключи, short ID, путь и сайт-цель передаются приложению в зашифрованном виде и нигде не публикуются.
- Без журналов доступа: см. страницу безопасности.
Источники
Попробуйте
VLESS XHTTP встроен во все приложения Colitu и сам включается, когда долгие соединения постоянно обрываются. Скачайте Colitu или посмотрите список локаций.