Обновить

Как технически устроена DPI-фильтрация у российских провайдеров и как её детектировать: разбор open-source инструментов

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели25K
Всего голосов 50: ↑48 и ↓2+58
Комментарии41

Комментарии 41

Из-за неверных и двойственных формулировок, как в этой статье, в головах у простых пользователей складывается картина, что фильтрацию выполняют провайдеры.
Если беретесь писать статью, добавляйте абзац про регуляторику, разделение зон отвественности, про 139 ФЗ и 90 ФЗ, их разницу, про "угрозы" и борьбу с ними, про централизванное управление и ЦМУ ССОП.
Заранее спасибо.

Стоит отметить, что некоторые провайдеры действительно сами занимаются блокировками и блокируют даже то, что ещё не заблокировал РКП.

Как мне объясняли пара провайдеров 9а точнее их представителей), сами провайдеры блокируют точечно по IP и при этом есть официальное уведомление на странице сайта или домена, куда пытается попасть пользователь

Провайдеры блокируют по официальному списку РКН. В этом списке ресурсы, на блокировку которых есть решения суда. Ютуба, телеги и vpn сервисов в этом списке нет. И вот их блокирует сам РКН на своем оборудовании (ТСПУ).

Во истину! Можно провести жирную черту между двумя ФЗ - 139 и 90.
139 - это обязанность оператора блокировать доступ к ресурсам РКН. Для этого оператор сам разворачивает любые системы, выгружает из личного кабинета ГРЧЦ список ресурсов и... блокирует! Контроль за блокировками по 139 ФЗ выполняет оборудование Ревизор. В случае возникновения "пропусков" оператор получает предписание, затем - штраф.
Сами списки ресурсов формируется на основе решений судов РФ. Как следствие, скорость блокировки какой-либо информации здесь невысокая, требуется соблюсти все формальности, процедуры...

90 - здесь в обязанность оператора входит установка ТСПУ (оборудование предоставляет ГРЧЦ). Сами ТСПУ разделяются на ТСПУ ТГ (трансграничные) - это которые стоят на международных каналах из-за рубежа в РФ; и ТСПУ ШПД - которые отделяют абонентские сегменты сети оператора от "грязного" интернета. ТСПУ ТГ должен ставить владелец канала, ТСПУ ШПД - оператор, если у него > 10 Гбит/с трафика, а если менее - то ТСПУ ШПД ему ОБЯЗАН(!) предоставить вышестоящий(ие) оператор(ы), т.н. аплинки.
В 90 ФЗ вводится поняние "угрозы", в отношение неё обеспечивается "централизованное управление сетью", результатом которого и являются все фокусы с замедлениями, устареваниями, поломкой легитимных сайтов, корпоративных и технологических VPN, ошибками обновления приложений через Google Play и т.д., и т.п. Скорость выявления "угроз" и "введения ЦУ" куда выше, чем блокировки по 139 ФЗ, а способы технической реализации максимально ухищренные - тут не просто фильтрация IP или URL, там и сигнатуры, и эвристика, и всё-всё-всё...

Итого, есть минимум* 3 системы, 3 кордона, которые осуществляют ту самую "фильтрацию у российских провайдеров", вот только ни на одной из них ни один оператор не влияет на способы этой самой фильтрации:
- по ФЗ 139 ему в списках РКН говорят что и как фильтровать (IP целиком или URL);
- по ФЗ 90 задача оператора обеспечить пропуск трафика через ТСПУ ШПД, а уж что там работает и как - не его дело дело государственной важности;
- по ФЗ 90 весь внешний периметр российской сети Интернет перекрыт ТСПУ ТГ, якобы там идет защита от DDoS, но этого никто не может проверить. Косвенно можно определить, что какие-то блокировки работают именно на нем, например, несколько недель назад, когда максимально зажали Telegram, вероятней всего подключили блокировку по IP адресам именно на ТСПУ ТГ.

*-иногда для надежности блокировку по 139 ФЗ включают эшелоном - сначала свою, потом покупают еще у вышестоящего оператора. Цель - максимально защититься от штрафов из-за "пропусков".

Тем временем крупные провайдеры: госкорпорации, директора из пермского заксобрания и прочие любители рыбок и любимые бизнесмены Ладимыча

Про пермских бизнесменов Вы в точку попали. Эти ребята умеют гнуть свою линию. Уверен, что они будут крупнейшими выгодоприобретателями после отзыва лицензий у альтернативных операторов.

А ведь средства, которые были потрачены на DPI, могли бы пойти на улучшение тарифов. У меня гигабитное оборудование и волокно, но вот тариф максимум в полгигабита...

А штрафы по статье 13.34 КоАП РФ платить на вырученные деньги?

Я это про гипотетический сценарий, когда провайдеры занимаются чем надо

Провайдеры всегда будут кивать на РКН, РКН на провайдеров, а пользователь сидеть без интернета. Эта игра в перекладывание ответственности стара как мир

Ну...допустим Cloudflare тоже пишет (на https://blog.cloudflare.com/russian-internet-users-are-unable-to-access-the-open-internet/ ) "is being applied by local ISPs" но правда им пофиг где именно - проблема возникает в сети конечного провайдера (а не у пользователя/сервера назначения/на транзите)и провайдер ее не исправляет - значит это проблема - этого самого. Сильно подозреваю что не такое уж маленькое количество пользователей - использует ту же логику (а разбираться что за неизвестные личности железо воткнули в сеть провайдера и как именно это сделали - совсем не все хотят разбиратся).

Метод 2: TCP 16-20 (он же rps-разрыв). Селективный сброс TCP-соединения после определённого числа байтов в потоке. Чаще всего DPI ждёт первые 16-20 пакетов

16-20 там килобайт, а не пакетов.

всё таки пакетов, тспу блокирует подключение после 25 пакетов в любом направлении, обычно пакеты максимального размера, поэтому скачивание файлов через браузер отображает примерно 16кб данных

можете сами проверить отправку 50 пакетов размером 2 байта на заблок айпи адрес:

nping -c50 --delay 50ms --udp -g $(shuf -i 49152-65535 -n 1) -p 443 --data-length 2 --ttl 4 89.167.91.206

(мне в ответ приходит 25 пакетов)

отправка 50 пакетов размером 1400 байт на заблок айпи адрес

nping -c50 --delay 50ms --udp -g $(shuf -i 49152-65535 -n 1) -p 443 --data-length 1300 --ttl 4 89.167.91.206

(мне в ответ приходит 25 пакетов)

если у вас ответов нет то нужно увеличивать ttl пока ответы не пойдут

на сети без блокировок в ответ приходит 50 пакетов

но описание блокировки от автора статьи неверно, ответил в другом комменте про это https://habr.com/ru/articles/1033456/comments/#comment_29956318

Интересно, а если используя кастомный TCP стек проигнорировать RST пакеты, если они среди первых 50-ти, то тафик будет идти дальше или все равно будет блокировка?

Не нужен кастомный стек. Достаточно дрогнуть пакет на уровне файрвола. Но rst, скорее всего, отправляется в обе стороны. На своей вы его дропнете, а на той стороне вы никак этого сделать не сможете.

В UDP/ICMP трафике (как в тесте) не существует rst пакетов, в TCP трафике как уже написал соединение тихо блокируется, нет никаких rst

Нет, именно пакетов. DPI-железка считает штуки, а не суммирует байты. У пакетов разный размер, но отсечка идет именно по их количеству

TCP 16-20

если они «подозрительные» (содержат SNI определённых хостов),

отправляет одной или обеим сторонам RST-пакет

название и описание про совершенно разные блокировки... 16-20kb блок это БЕЛЫЙ список SNI, а не чёрный как вы описываете, и RST пакеты там не отправляются, соединение тихо блокируется и разрывается уже самим сервером и клиентом по таймауту

чуть подробнее есть у меня в статьях

и ещё я не понял как автор получил 16кб при обращении к дискорду, его домен в чёрном списке и у меня ни 1 байта оттуда не приходит:

curl -vk https://discord.com

зависает на client hello, если бы там было 16-20 то было бы видно как минимум tls сертификат

Загадка:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36 Edg/148.0.3967.54" \
-4v --connect-to ::149.154.167.220 https://rutracker.org -k
Вывод терминала

Это что и к чему?

Вот мне интересно почему у меня сегодня полдня Хабр открывался только через КВН. Его же вроде не блокировали. Посмотрел и жалоб, кроме меня, вроде не было на "не открывание".

подмена DNS-ответов

Старый и грубый метод

ИМХО это простой, элегантный, дешёвый и, при требовании в госучреждениях использовать конкретный DNS, этичный метод. Единственный метод который и должен навязываться государством.

Есть еще достаточно простой который НЕ используется (госструктурами) хотя для опасного для пользователей (реально опасного - по мнению пользователя - ну там скам, порнография если человеку ее не надо,etc) контента - вполне хорошо работает :) (списки для adblock и подобных,разного вида)

вот захотелось проверить статью и внезапно возникли некоторые...вопросы

wget https://github.com/hyperion-cs/dpi-checkers/releases/download/dpich-v0.2.3/dpich_linux_amd64

Не работает ( wget https://github.com/hyperion-cs/dpi-checkers/releases/download/dpich-v0.6.0/dpich-v0.6.0-linux-amd64.zip + unzip dpich-v0.6.0-linux-amd64.zip - работает)

зачем то в ~/bin/ (внезапно у меня его нет в ubuntu), при этом ./dpich не используется хотя казалось бы - чего уж если качаем бинарник)

команда dpich \ --target www.youtube.com \ --mode tcp16-20 \ --timeout 15s

выдает что нету флага target.

Возможные на мой взгляд варианты ответов:

  • у автора dpich несколько минорных релизов (которые при этом ломают cli) менее чем за сутки

  • github автора dpich взломан в последние сутки и там совсем другое

  • автор статьи сам не проверял команды которые приводит (а что тогда ЕЩЕ не проверялось?)

  • статья на самом деле - написана Искусственным Идиотом (потому что Исскуственный Интеллект - в состоянии проверить ключи (собственно даже Claude Code после просьбы проверить статью на корректность - сказала что похоже WebFetch глючит - явные галлюцинации в ответе)

  • я где то серьезно ошибаюсь в анализе

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

Как автор утилиты dpi-ch констатирую: к сожалению, вы правы, в текущей статье нейрослоп❗

Среди прочего, никогда ключей --target / --mode / --timeout не было, это tui утилита с .yaml конфигом (и ключи там используются в очень ограниченном кол-ве). С одной стороны лестно, что написано о моем проекте, но нельзя с большим прискорбием не заметить, что сама статья выглядит как плод неких фантазий, не имеющих отношения к реальности (в т.ч. с точки зрения того, как работает утилита и как она выглядит). Неплохо бы модераторам отреагировать.

Далее, постараюсь ответить на другие ваши "варианты":

у автора dpich несколько минорных релизов (которые при этом ломают cli) менее чем за сутки

Такого нет, в минорных релизах не ломается обратная совместимость (а мажорный никогда ещё не увеличивался).

github автора dpich взломан в последние сутки и там совсем другое

Такого также, к счастью, не наблюдается.

автор статьи сам не проверял команды которые приводит (а что тогда ЕЩЕ не проверялось?)

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

я где то серьезно ошибаюсь в анализе

Не ошибаетесь.

В тексте много типичных речевых приёмов больших языковых моделей, что меня при чтении очень раздражает. Наверное, людям такое читать нравится, поскольку прошли уже сутки, и никто не жалуется.

10000 лет не добавлял ничего в закладки на хабре, сплош нейрослоп. И тут внезапно тёплая ламповая техстатья... Спасибо!

А это классический нейрослоп и есть...

Есть мнение, что после окончательной интеграции Цифрового Рубля, Биометрии, и тотальной цифровизации к 2030 году, блокировки постепенно начнут ослаблять.

Не в обиду будет сказано, но от вашего комментария вспомнилась древняя копипаста начинающаяся с "может хватит бухтеть"

Хороший разбор, жаль только что такие инструменты появляются как реакция на закручивание гаек, а не из чистого исследовательского интереса

Мобильный 5G+

Кто из мобильных операторов в РФ дает 5G или 5G+?

Вот и мне очень интересно...

Ну теоретически - тестовые зоны в Мск/СПб вроде есть (тот же мегафон в описании https://moscow.megafon.ru/5g/ пишет Доступ для всех клиентов МегаФона к сети 5G там, где она есть.)

нет доступа по ssh к vps как на 22 порту так и на произвольном. но есть доступ через другой сервер по ssh или через впн. С помощью dpi detector можно найти причину ?

попробуйте, ещё мои статьи почитайте, ну или айпи в лс. вы не дали достаточно данных

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации