Выбрать VPNС возможностью вернуть деньги

Техническая сторона блокировок

О блокировках DPI в РФ и способах их обхода

С каждым днём вопрос свободного доступа к информации становится всё острее. При этом речь уже не идёт об условных "диссидентах" и пятой колонне ищущих альтернативную точку зрения в недружественных странах. Сейчас это уже касается всех: от электронщика пытающегося разобраться как отремонтировать новую модель телефона, до мамы ставящей на тормозящем Youtube своим детям мультики пока она готовит ужин. В этой статье погружаемся как работают блокировки, как их обойти. И просим оказать помощь тем, кто далёк от современных технологий!

Сегодня без развлечений
Сегодня без развлечений

Как работают блокировки

TCP/IP (основной транспортный протокол интернета) передает данные пакетами, размер которых варьируется, но по дефолту не превышает 1.5Кб. Протокол гарантирует доставку всех пакетов в правильном порядке (либо наличие явной ошибки, когда доставить данные не удалось).

DPI (Deep Packet Introspection) - это набор технологий и оборудования для анализа содержимого проходящих пакетов. Соответствующее оборудование власти обязали установить провайдеров, и через него пытаются воплощать свои блокировки (есть еще и другой вид блокировок - бан конкретных IP адресов, которые более простой и дешевый, но не особо помогает в случае их частой смены, например). Подход с DPI более универсальный, но и у него есть свои слабые места.

В случае передачи HTTP-данных (HTTP - прикладной протокол веба, более высокого уровня чем TCP/IP), DPI-блокировки работают следующим образом: ищут внутри данных пакета всякие стоп-слова - названия доменов, части УРЛ и т.п. И когда находят, то отбрасывают такие пакеты, нарушая тем самым целостность данных (что приводит к ошибке TCP/IP-соединения, но как вариант можно еще в ответ слать подмененные пакеты, содержащие редирект на страницу блокировки, пример).

Но тут возникает резонный вопрос: кто в 21-м веке пользуется открытым HTTP, когда все сидят через HTTPS, предусматривающий двустороннее шифрование?! И тут все работает похитрее (но не намного). Дело в том, что чтобы установить это зашифрованное соединение, сначала нужно получить IP-адрес для домена, с которым устанавливается соединение, и для этого используются специальная служба – DNS (Domain Name Search), т.е. браузер, до того как установить соединение с ресурсом, сначала делает запрос на отдельный DNS-сервер, и эти запросы уже вполне поддаются анализу через DPI. Тот видит запросы по доменам из заблокированного списка и блокирует их (или отдает левак). Но есть и резервные варианты - см. подробнее тут (кстати, это сайт разработчика DPI-систем для блокировок в РФ, спасибо им за инфу и лучи поноса за их деятельность!)

Выше описаны способы блокировок, которые существуют уже какое-то время, и которые, как мы знаем, вполне можно обходить. Поэтому есть версия, что в последнее время власти тестируют более хардкорные подходы - блокировать вообще все "серые" пакеты – т.е. такие, про которые непонятно, что в них, или кому они направляются. Но такой подход ломает пол рунета (что мы недавно и наблюдали), поэтому вполне вероятно что есть запас времени до того момента, как пробьют и это дно.

Какие есть варианты обхода

В качестве базовых подходов к обходу блокировок можно выделить следующие два:

  • Использование зашифрованных протоколов связи: VPN, прокси, защищенные DNS и т.п.
  • Обман систем DPI через подсовывание всяких левых кусочков данных, которые не мешают клиенту и серверу понимать друг друга, но при этом сбивают алгоритмы анализаторов трафика. В качестве примера можно привести наиболее популярное в последнее время решение - GoodbyeDPI (в README по ссылке можно прочитать подробнее, как именно оно дурит анализаторы).

GoodbyeDPI и аналоги

GoodbyeDPI и аналогичные решения создают локальную прокси (которая сама в некотором смысле работает как DPI), через которую проходят все HTTP(S) и DNS запросы. В этих запросах утилита подставляет левые данные в виде лишних пробелов, меняет строчные на заглавные в заголовках и т.п., что не мешает серверу понимать запросы клиента, но мешает анализаторам трафика вылавливать знакомые последовательности символов, приводящие к блокировке. Еще один из вариантов – это разбиение одного TCP-пакета на несколько, как раз в том месте, где есть искомая последовательность (т.к. сервер все равно соединяет все данные из пакетов, а анализаторы зачастую этого не делают, и смотрят только первый).

Отсюда вывод, что все эти анализаторы работают весьма топорно: не учитывают регистр символов и пробелы при поиске подстроки, а также не соединяют данные из нескольких пакетов. Но это весьма объяснимо – дело в том что речь идет об анализе ВСЕХ пакетов, несущихся через провайдеров, на который и без того требуются огромные вычислительные мощности (на которые УЖЕ угрохали много денег). Поэтому для них вся эта “топорность” – это не более чем оптимизация (например, если брать только первый пакет при установке соединения и не смотреть остальные, то это уже сокращает на порядки объем информации, которую необходимо проанализировать).

Можно предположить, что по мере популяризации такого способа обхода, власти будут подстраиваться, тратя все больше и больше ресурсов на более полноценный анализ данных. Но с другой стороны, средства обхода также могут совершенствоваться и придумывать новые способы обмана алгоритмов. Т.е. завяжется определенная гонка вооружений, и т.к. придумать новый способ обмана гораздо менее затратно по ресурсам, чем усовершенствовать анализаторы и развернуть их на всех установленных системах, то в данном случае инструменты обхода будут всегда на шаг впереди (кстати, исследование репозитория GoodbyeDPI на гитхабе показало что в основном весь код был написан в 2018-году, а потом был только точечные доработки, и при этом инструмент работает и сейчас, в 2024-м, спустя 6 лет, позволяя обходить блокировку YouTube).

VPN

VPN (Virtual Private Network) – это постоянное соединение, которое устанавливается поверх TCP/IP (как правило, но не всегда), позволяющее как-бы оказаться в другой сети, где у всех участников есть собственные внутренние IP-адреса (такое соединение еще иногда называют “тоннелем”). Запросы во внешнюю сеть (т.е. к любому узлу в интернете, не включенному во внутреннюю сеть) проходят через VPN-сервер (который с свою очередь установлен где-то, где нет блокировок и минимум регуляции трафика). VPN-соединения шифруются двусторонним шифрованием, поэтому никакой DPI на них уже не сработает (в случае, если удалось установить само соединение).

Но чтобы жизнь медом не казалась, власти организовали борьбу и с VPN. И тут, помимо прямых блокировок популярных сервисов по IP (а также в магазинах приложений), используется все тот же DPI. В данном случае он улавливает характерные для VPN-протоколов кусочки данных, и также не дает нормально установить TCP/IP-соединение.

Противостоять этому возможно также двумя способами:

  • “Гонка протоколов” – т.е. создание новых протоколов, или модификация имеющихся, которая заставит власти снова играть в догонялки
  • Тот же обман DPI-систем в рамках передачи данных по существующим протоколам. Как пример можно привести AmneziaWG – модификацию протокола WireGuard, которая позволяет обманывать анализаторы путем подсовывание в данные всяких не характерных для исходного WG параметров, при этом сохраняя совместимость с имеющимися серверами (подробнее в статье на Хабре от создателей)

Альтернативные подходы, не вошедшие в данный обзор

Ниже перечислены несколько теоретических и практических способов обхода (для дальнейшего исследования):

  • 1. Shadowsocks
  • 2. Secure DNS
  • 3. SSH-тоннели
  • 4. 3X-UI, Reality/CDN и Warp
  • 5. Использование UDP в качестве транспортного протокола вместо TCP/IP

Что мы опробовали в деле

После всего выше сказанного следует отметить что стратегия поставить одно приложение впн из стора на телефон и забыть - уже не даст ожидаемого результата. Как бы ни было прискорбно, но теперь надо держать на телефоне/компьютере целый набор впнов, пока у одного из них проблемы и разработчики решают как обойти новые блокировки, вы используете другой впн. В то же время это решение из коробки, нет необходимости обладать специальными знаниями, поэтому так и останется в джентельменском наборе гражданина. При этом лучше всего сразу скачать несколько приложений про "запас", пока они ещё есть в магазине приложений, чтобы оставить возможность пользоваться ими в будущем. В противном случае для установки потребуется переключать регион вашего смартфона. Гарантий что работащий сейчас из магазина приложений vpn не откажет в будущем - нет. Далее речь идет про опыт использования внутри РФ "нестандартных" обходов.

Приложение AmneziaWG

VPN-провайдер, заточенный на обход блокировок. У них также есть приложение с открытым исходным кодом, позволяющее подключаться к своим (или сторонним) VPN-серверам WireGuard по модифицированному протоколу AmneziaWG (ссылка, устойчивая к блокировкам).

  • Опробовали на Mac со своим собственным WireGuard-сервером – соединение устанавливается, а как приятный бонус, приложение работает быстрее и стабильнее чем дефолтное приложение WireGuard для маков.
  • Опробовали также мобильное приложение для iOS на айфоне, но тут не завелось (при том что через того же провайдера коннектит на маке). Но вероятнее всего тут проблема в конфиге, а также в том что поддержка VPN на айфонах в целом не блещет стабильностью.

GoodbyeDPI

  • Ссылка на гитхаб (в README описание установки на Винду, а также есть ссылки на аналоги, в том числе для других платформ)
  • По состоянию на конец августа 2024 работал и позволял обходить блокировку YouTube и некоторых других сервисов

Собственный VPN-сервер WireGuard (на VPS в Европе)

  • Стабильно работал на настольных ПК вплоть до волны блокировок в середине августа 2024 (вероятно, начали блокировать протокол через DPI)
  • Стабильно работал на настольных ПК вплоть до волны блокировок в середине августа 2024 (вероятно, начали блокировать протокол через DPI)
  • Переход на приложение Amnezia позволил продолжать использовать тот же сервер

Выбрать VPNС возможностью вернуть деньги