Заголовки

Обзор протокола Naive для обхода блокировок: настройка sing-box и Caddy

В мире прокси-протоколов часто выделяют 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, наличие таких альтернатив расширяет возможности обхода блокировок и повышает устойчивость к автоматическим фильтрам.