DPI блокировки и инструменты для их обхода

cat-for-dpi UwU

Ура! Мы добрались до первого поста в цикле об обходе блокировок и повышении анонимности трафика. Сегодняшняя тема будет не самой простой, но довольно интересной — обход ограничений, которые диктует нам DPI. Всех прошу присаживаться поудобнее, налить себе чего-нибудь вкусного и по душе, а я начну раскручивать тему и погружать вас в сетевые дебри (。Ó﹏Ò。)

DPI, как технология — это метод анализа содержимого сетевых пакетов, а не только их заголовков (мы продвигаемся выше 2-го уровня модели OSI — канального). Изначально DPI создавалась для повышения безопасности сети, её стабильности и качества посредством применения к трафику QoS-политик, оптимизаций и фильтрации (например, спама). Но что самое страшное… цензоры научились с её помощью контролировать и блокировать неугодный им контент (눈_눈)

Если конкретизировать определение DPI, то она позволяет анализировать в пакете:

  1. Заголовки пакетов — метаданные о соединении
  2. Полезную нагрузку — само содержимое передаваемых данных
  3. Поведенческие паттерны — характеристики обмена пакетами

При обнаружении запрещённого контента или попытки доступа к блокируемому ресурсу провайдеры могут использовать разные методы: подмена DNS-ответов для ограничения доступа к ресурсам на уровне доменов, DPI для глубокого анализа трафика и применения таких мер, как:

  • Сбросить соединение (TCP Reset)
  • Перенаправить запрос на свои ресурсы с баннерами «А-та-та. Плохой пользователь ( 。 •̀ ᴖ •́ 。)»
  • Снизить скорость соединения (throttling)

Обход подмены DNS довольно прост: достаточно использовать альтернативные DNS-сервисы (например, DNS over HTTPS (DoH) или DNS over TLS (DoT) от Google, Quad9, Cloudflare) вместо стандартных DNS от интернет- или мобильного провайдера. Также важно избегать сервисов, благосклонных к правительству (да-да, я о тебе, Yandex).

Остальные методы блокировки — сброс соединения, перенаправление запроса и замедление скорости — реализуются через два основных механизма:

  • IP-блокировка — провайдер запрещает весь трафик, направленный на определённые IP-адреса (чаще всего серверов заблокированных сайтов).
  • DPI-блокировка (о, сегодняшняя тема!) — провайдер анализирует содержимое пакетов, определяет, какие запросы относятся к запрещённым ресурсам, и блокирует их.

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

Позже мы рассмотрим обход DPI-блокировок на примере инструментов, не требующих аренды серверов, контейнеров или резидентских устройств за границей. То-есть устанавливаются локально на компьютер, телефон, роутер и т.д. ৻( •̀ ᗜ •́ ৻)

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

Самый очевидный список в мире:

  • GoodbyeDPI — самый популярный и активно поддерживаемый инструмент для обхода DPI через фрагментацию и модификацию структуры пакетов. Имеет богатый функционал, работает на Windows (уже имеются готовые bat-скрипты для работы), быструю реализацию и множество поддерживаемых GUI и скриптов для поиска флагов для необходимых сайтов.
    Основные методы: фрагментация пакетов, изменение TTL, обфускация SNI, модификация HTTP-заголовков.

  • SpoofDPI — более простой и лёгкий инструмент для модификации HTTP/HTTPS-заголовков на macOS и Linux. Он может, например, подменять заголовки или разбивать пакеты, делая трафик менее распознаваемым для фильтров. Создает на компьютере endpoint socks/http proxy, позволяющий модифицировать трафик только определённых приложений, что в какой-то мере удобно. Существует кроссплатформенный вариант для других систем: r3pr3ss10n/SpoofDPI-Platform.

  • ByeDPI — вариант программного DPI для Android, работающий в режиме VPN для туннелирования всего трафика устройства. Применяет фрагментацию пакетов и маскировку запросов для обхода блокировок. Имеет множество кастомных флагов (особенно при выборе варианта настройки через CLI) для глубокой настройки поведения приложения и туннеля.

  • zapret — один из лучших по гибкости конфигурации и возможностям инструментов для Linux. Фрагментирует, подменяет и искажает данные, работая не только с HTTP(S), но и с другими протоколами: UDP, TCP, QUIC и т.д. Настройка может быть сложной… но в конце концов она того стоит.

Если хочется рассмотреть ещё варианты, то на странице GoodbyeDPI представлен список средств подобного рода: тык.

Если интересно посмотреть на уже готовый список флагов GoodbyeDPI для разных регионов (и на негодование автора утилиты ValdikSS), то можете ознакомиться со статьёй и комментариями в ней: тык.

А источники для информации в данном посте находятся здесь:

Что хочется сказать напоследок: использование программных DPI для обхода ограничений может оказаться удобным способом получить доступ, не увеличивая задержку и латентность соединения, без покупки или аренды серверов за границей… Но они, так же, не постоянны: провайдеры постепенно улучшают своё сетевое оборудование, и рано или поздно придётся снова подбирать правила для вышеуказанных утилит, чтобы они могли продолжать работать и помогать получать заблокированный полезный контент у нас в стране (¬_¬;)

Комментарии