В мире прокси-протоколов часто выделяют VLESS с XHTTP как единственный эффективный способ обхода блокировок. Однако существуют и другие современные решения, одним из которых является протокол Naive. В данной статье мы подробно рассмотрим его возможности, особенности реализации и процесс настройки с применением sing-box и Caddy.
Особености маскировки трафика и ClientHello
Большинство прокси-протоколов стремятся замаскировать трафик под обычный HTTPS, чтобы затруднить распознавание. Однако первый пакет ClientHello, передаваемый клиентом при установлении TLS-соединения, содержит открытые параметры, по которым можно определить используемое ПО. Для решения этой задачи проекты Xray и sing-box применяют библиотеку uTLS, которая подменяет ClientHello на браузерный вариант. Но такая маскировка не идеальна, поскольку остаются особенности длины пакетов и трафика.
Идея протокола Naive
Автор Naive пошёл дальше и использовал сетевой стек настоящего браузера Chromium, вычистив из него всё лишнее — осталось лишь около 0.3% исходного кода. Это позволило сделать трафик максимально похожим на настоящий браузерный HTTPS с поддержкой HTTP/2 и собственным простым механизмом padding, который добавляет случайные байты для усложнения анализа трафика.
Суть padding в Naive
- В первые восемь DATA-фреймов добавляется padding с заголовком, содержащим длину данных и padding.
- CONNECT-запросы и ответы расширяются случайными заголовками.
- Перед каждым RST_STREAM добавляются дополнительные END_STREAM-фреймы.
Разработчик sing-box выявил, что в реализации padding использовались не обнулённые буферы, что могло привести к утечке данных. Этот баг был исправлен и включён в обновления.
Настройка sing-box клиента
Для работы с Naive необходим sing-box версии 1.13 и выше. Пример конфигурации outbound включает указание IP сервера, порта, логина и пароля, а также поддержку UDP через TCP и TLS с указанием доменного имени. Рекомендуется использовать не более четырёх одновременных соединений для сохранения маскировки.
Настройка Caddy
Caddy выступает TLS-терминатором с бесплатным сертификатом и принимает подключения на 443 порт. При правильной авторизации трафик передаётся в sing-box по HTTP/2 Cleartext, иначе клиенту отдается заглушка, защищая от сканирования. Конфигурация Caddy проста и описана в официальной документации.
Настройка сервера sing-box
Серверная часть sing-box настраивается с использованием inbound типа naive, слушающего локальный адрес и порт, с теми же учётными данными, что и клиент. После перезапуска службы прокси готов к работе.
Выводы
Протокол Naive — это перспективное решение, позволяющее достичь высокой степени маскировки прокси-трафика за счёт использования реального браузерного сетевого стека и продуманного padding. Хотя он не обязательно должен заменить VLESS, наличие таких альтернатив расширяет возможности обхода блокировок и повышает устойчивость к автоматическим фильтрам.