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

Ура! Мы добрались до первого поста в цикле об обходе блокировок и повышении анонимности трафика. Сегодняшняя тема будет не самой простой, но довольно интересной — обход ограничений, которые диктует нам DPI. Всех прошу присаживаться поудобнее, налить себе чего-нибудь вкусного и по душе, а я начну раскручивать тему и погружать вас в сетевые дебри (。Ó﹏Ò。)
DPI, как технология — это метод анализа содержимого сетевых пакетов, а не только их заголовков (мы продвигаемся выше 2-го уровня модели OSI — канального). Изначально DPI создавалась для повышения безопасности сети, её стабильности и качества посредством применения к трафику QoS-политик, оптимизаций и фильтрации (например, спама). Но что самое страшное… цензоры научились с её помощью контролировать и блокировать неугодный им контент (눈_눈)
Если конкретизировать определение DPI, то она позволяет анализировать в пакете:
- Заголовки пакетов — метаданные о соединении
- Полезную нагрузку — само содержимое передаваемых данных
- Поведенческие паттерны — характеристики обмена пакетами
При обнаружении запрещённого контента или попытки доступа к блокируемому ресурсу провайдеры могут использовать разные методы: подмена 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 и эффективный способ обхода блокировок сайтов по IP-адресу
- Хронология развития DPI в России и странах СНГ
- Краткий обзор технологии DPI — Deep Packet Inspection
Что хочется сказать напоследок: использование программных DPI для обхода ограничений может оказаться удобным способом получить доступ, не увеличивая задержку и латентность соединения, без покупки или аренды серверов за границей… Но они, так же, не постоянны: провайдеры постепенно улучшают своё сетевое оборудование, и рано или поздно придётся снова подбирать правила для вышеуказанных утилит, чтобы они могли продолжать работать и помогать получать заблокированный полезный контент у нас в стране (¬_¬;)
Комментарии