惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News
S
SegmentFault 最新的问题
Project Zero
Project Zero
D
DataBreaches.Net
I
InfoQ
L
Lohrmann on Cybersecurity
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
Stack Overflow Blog
Stack Overflow Blog
The Register - Security
The Register - Security
Recorded Future
Recorded Future
Vercel News
Vercel News
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
I
Intezer
The Hacker News
The Hacker News
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
P
Proofpoint News Feed
Help Net Security
Help Net Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Scott Helme
Scott Helme
T
Threatpost
爱范儿
爱范儿
N
Netflix TechBlog - Medium
D
Docker
云风的 BLOG
云风的 BLOG
C
Cisco Blogs
K
Kaspersky official blog
H
Help Net Security
S
Secure Thoughts
T
Threat Research - Cisco Blogs
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security @ Cisco Blogs
Cyberwarzone
Cyberwarzone
N
News and Events Feed by Topic
G
Google Developers Blog
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
B
Blog
Google DeepMind News
Google DeepMind News
Recent Announcements
Recent Announcements
Simon Willison's Weblog
Simon Willison's Weblog
S
Securelist
P
Privacy International News Feed
Spread Privacy
Spread Privacy
The Last Watchdog
The Last Watchdog

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Как технически устроена DPI-фильтрация у российских провайдеров и как её детектировать: разбор open-source инструментов
Парахин Никита · 2026-05-11 · via Все публикации подряд на Хабре

Сложный

11 мин

25K

Запустил dpi-checkers на трёх провайдерах, разобрался с методами TCP 16-20 и CIDR-вайтлистами и расскажу, что вообще происходит с вашим трафиком на L4

В последние пару лет любой пользователь рунета научился различать «интернет дома» и «интернет в гостях у бабушки в области». В одном месте YouTube открывается, в другом нет. На одном провайдере Discord работает, на другом висит. Twitter (X) у мобильного оператора на 4G не загружается, а через тот же оператор на проводе идёт нормально. Это ощущается как непредсказуемость, но на самом деле за каждой такой деградацией стоят вполне конкретные технические механизмы — и их можно идентифицировать.

В статье я разберу, что технически делают современные DPI-системы, на примере открытого исследовательского проекта dpi-checkers от автора hyperion-cs. Это набор тестов (часть на Go в виде CLI-утилиты, часть прямо в браузере на JS), которые позволяют понять, какой именно метод фильтрации применяет ваш ISP. Я прогнал проверки на трёх своих подключениях — домашнем (один из крупных федеральных провайдеров), мобильном (один из «большой четвёрки») и через знакомого в другом регионе — и расскажу, что выяснилось.

Сразу оговорка по жанру. Это не инструкция по обходу ограничений. Это разбор того, как работают сами методы фильтрации — что является нормальной темой для технической прессы и многократно обсуждалось в академических работах (статьи net4people, исследования Citizen Lab). Цель — дать читателю понимание, что именно происходит с его пакетами на уровне сети, и какие инструменты позволяют это исследовать в полевых условиях.


Что такое DPI и почему «провайдеры замедляют» — это упрощение

Deep Packet Inspection — это класс сетевых технологий, при которых проходящий через узел трафик анализируется не только по заголовкам L3/L4 (IP, порты), но и по содержимому L7 (что именно передаётся в полезной нагрузке пакета). Современный DPI способен по особенностям TLS handshake определить, к какому сервису обращается клиент, даже без знания IP назначения, и применить к этому трафику политику — пропустить, замедлить, сбросить.

Когда в новостях говорят «провайдеры замедляют YouTube», это упрощение. Технически провайдер не «замедляет YouTube»: он применяет одну из нескольких возможных техник, и в зависимости от техники симптомы у пользователя разные. Перечислю основные методы, которые наблюдаются в РФ-сегменте.

Метод 1: блокировка по IP-подсетям (CIDR-вайтлисты). Регулятор передаёт оператору список разрешённых подсетей — если IP назначения не в этом списке, трафик к нему не пропускается. Как правило, применяется не на «домашних» подключениях, а на мобильных в режиме 5G/4G+ (некоторые тарифы) или для трафика из-за пределов «доверенной зоны». Это самая жёсткая форма блокировки.

Метод 2: TCP 16-20 (он же rps-разрыв). Селективный сброс TCP-соединения после определённого числа байтов в потоке. Чаще всего DPI ждёт первые 16-20 пакетов в установленной TLS-сессии и, если они «подозрительные» (содержат SNI определённых хостов), отправляет одной или обеим сторонам RST-пакет. Соединение разрывается. Клиент видит это как «сайт упал», хотя сервер живой. Это основной метод замедления YouTube в РФ в 2024-2025 годах.

Метод 3: подмена DNS-ответов. Запрос к DNS-серверу перехватывается на уровне провайдера, и ответ заменяется. Вместо настоящего IP сайта пользователь получает заглушку или 0.0.0.0. Старый и грубый метод, легко обходится через DoH/DoT, но всё ещё применяется как первая ступень.

Метод 4: SNI-блокировка. В TLS handshake поле Server Name Indication передаётся в открытом виде до установки шифрованного канала — DPI это видит и сбрасывает соединение, если SNI содержит «нежелательный» домен. Это вариант метода 2, но более универсальный.

Метод 5: QUIC-блокировка. QUIC (HTTP/3) использует UDP, а не TCP. Если DPI настроен только на TCP-фильтрацию, QUIC-соединения проходят. Поэтому отдельно фильтруют UDP-трафик, в первую очередь по портам 443/80 или по характерным заголовкам QUIC.

Все эти методы могут применяться одновременно или избирательно. И симптомы для пользователя выглядят похоже — «сайт не открывается» — а технически это очень разные ситуации, и с точки зрения исследования (или обхода) это совершенно разные задачи.


Что делает dpi-checkers и какие тесты внутри

Проект dpi-checkers — это набор инструментов для детектирования каждого из перечисленных методов на конкретном подключении. Apache-2.0 лицензия, 700+ звёзд на GitHub, активная разработка автора. В репозитории три части:

dpi-ch — основной CLI-инструмент на Go. Сборки под Windows, macOS, Linux (Android в планах). Это «большой брат» остальных проверок — не ограничен песочницей браузера, может работать на низком уровне с TCP-сокетами и формировать пакеты вручную. Самый мощный инструмент в наборе.

TCP 16-20 web-checker — браузерный тест на JS, который проверяет конкретно метод TCP 16-20. Запускается с GitHub Pages, не требует установки. Понятно, ограничен песочницей браузера (не может, например, спуфить SNI), но даёт быстрый ответ «работает или нет».

IPv4 Whitelisted Subnets web-checker — детектор CIDR-вайтлистов. Запускается также из браузера, но требует предварительной фазы кеширования (об этом ниже).

TCP 16-20 DWC (domain whitelist checker) — Python-скрипт для исследования белых списков доменов на уровне DPI. Требует curl, Python 3 и специально настроенного сервера на ограниченной сети. Это инструмент уже для исследователей, не для рядовой проверки.

Я установил dpi-ch и прогнал основные web-проверки на своих подключениях. Дальше расскажу, что вышло.


Установка dpi-ch

Это просто. На странице релизов лежат собранные бинарники для всех платформ:

# Linux x86_64
wget https://github.com/hyperion-cs/dpi-checkers/releases/download/dpich-v0.2.3/dpich_linux_amd64
chmod +x dpich_linux_amd64
mv dpich_linux_amd64 ~/bin/dpich
 
# Запуск
dpich --help

Никаких зависимостей, конфигов, прав root для базовых проверок не нужно. Утилита работает с обычного пользователя, обращается к сети через стандартные TCP-сокеты.

Конфигурация задаётся через флаги командной строки или YAML-файл. Базовая проверка домена выглядит так:

dpich \
  --target www.youtube.com \
  --mode tcp16-20 \
  --timeout 15s

На выходе — отчёт по конкретному методу: получилось ли TLS-соединение, на какой стадии разорвалось, был ли RST от клиента или сервера, сколько байт передалось до разрыва.


Как технически работает тест TCP 16-20

Это самая интересная часть, и стоит разобраться подробнее.

При установке TLS-соединения клиент посылает на сервер ClientHello. Это первый пакет, в котором передаётся, среди прочего, поле SNI — имя хоста, к которому клиент собирается обратиться. В современных TLS 1.2/1.3 без ECH это поле передаётся в открытом виде (только TLS 1.3 с Encrypted Client Hello его прячет, но ECH в продакшене ещё редкость).

DPI на стороне провайдера читает SNI, проверяет, нет ли его в чёрном списке, и при совпадении выполняет одну из двух тактик:

Тактика A: немедленный сброс — DPI шлёт RST обоим сторонам соединения, клиент сразу получает «connection reset».

Тактика B (TCP 16-20): соединение пропускается, но через 16-20 пакетов в потоке (числа условные, в реальности параметр настраиваемый и варьируется по операторам) DPI отправляет RST. Это даёт DPI возможность сначала пропустить ClientHello/ServerHello, увидеть полное содержимое TLS handshake, и уже принять решение позже.

Тактика B хитрее. Симптомы для пользователя:

  • DNS-резолв проходит (подмены нет)

  • TCP-handshake проходит (SYN, SYN-ACK, ACK)

  • TLS handshake начинается (ClientHello уходит)

  • Соединение разрывается через секунду-две (после нескольких MTU-размерных пакетов) Это создаёт впечатление, что «сервер тормозит» или «связь нестабильная», хотя на самом деле RST приходит от посредника на пути.

Web-чекер tcp-16-20 проверяет, ведёт ли себя ваше подключение именно так на типовых ресурсах. Я прогнал его на домашнем провайдере. Получил такой результат:

youtube.com         RESET after 18 packets   ← блокируется TCP 16-20
googlevideo.com     RESET after 17 packets   ← тот же метод
twitter.com         OK (response received)
discord.com         RESET after 16 packets   ← TCP 16-20
medium.com          OK (response received)

Картина классическая: блокировки направлены на YouTube-инфраструктуру (главный домен + CDN), плюс Discord. Twitter в этот вечер у меня в Москве работал, но это нестабильно — на следующий день мог не работать.


Тест на CIDR-вайтлисты

Это интереснее. CIDR-блокировка — более тяжёлая форма ограничений: целые подсети интернета становятся недоступными независимо от того, какой именно сервис на них хостится. Применяется обычно в специальных режимах — некоторые мобильные тарифы, доступ из конкретных регионов.

Web-чекер ipv4-whitelisted-subnets работает в две фазы.

Фаза 1: кеширование «эталонного списка». Чекер запускается на «нормальном» подключении (например, домашнем Wi-Fi без CIDR-блокировок) и собирает список IPv4-подсетей, которые он считает «потенциально могут быть в вайтлисте». Это делается через анализ автономных систем (AS) в BGP — выбираются AS, чьи подсети вероятнее всего будут разрешены регулятором (популярные CDN, инфраструктура крупных российских компаний, банковские IP-блоки). Список сохраняется в localStorage браузера.

Фаза 2: проверка с целевого подключения. Чекер запускается уже с подключения, которое тестируется. Для каждой подсети из эталонного списка делается выборочная проверка нескольких хостов на доступность по 443 порту. Если хосты отвечают — подсеть в вайтлисте. Если нет — заблокирована.

Параметры в URL:

Параметр

По умолчанию

Описание

timeout

5000 мс

Таймаут на хост

sn_sample_size

25

Сколько хостов проверять в подсети

sn_alive_min

3

Минимум живых хостов, чтобы считать подсеть живой

sn_only_24_prefix

true

Проверять только подсети с префиксом /24

Я прогнал чекер на мобильном оператора в режиме 5G+ — там у меня по тарифу есть некоторые ограничения. Из 1200 проверенных подсетей живыми оказались 380. То есть около 70% подсетей этих AS были недоступны с моего соединения на 443 порту, хотя обычно эти же подсети открыты с домашнего интернета.

Это в чистом виде CIDR-фильтрация. Никакой DPI не нужен — провайдер просто маршрутизирует трафик так, чтобы в публичный интернет уходила только часть подсетей, а остальные либо блокируются на NAT, либо не объявляются вообще.

Кстати, важный нюанс из документации чекера, который мне понравился: он явно указывает, что не работает для случаев, когда поверх CIDR ещё применяется SNI-блокировка. Браузерная песочница не позволяет подменить SNI, поэтому если соединение заворачивается на этапе TLS, чекер не может это отличить от CIDR-блокировки. Это честное ограничение, и его автор репозитория документирует.


DPI-CH: что умеет «большой брат»

Браузерные чекеры удобны, но ограничены. В частности, они не могут:

  • спуфить SNI (использовать поддельное имя в TLS handshake)

  • работать на низком уровне с TCP (например, отправлять кастомные TCP-флаги)

  • тестировать UDP/QUIC (CORS не позволяет)

  • проводить долгие тесты с массой соединений Для всего этого нужен dpi-ch — нативный CLI на Go. Я погонял его на домашнем подключении со следующими сценариями.

Сценарий 1: проверка, точно ли блокировка работает по SNI, а не по IP.

Делаем два теста: один с настоящим SNI, второй с фейковым (но к тому же IP):

# Тест 1: настоящий SNI
dpich --target www.youtube.com --mode tcp16-20
 
# Тест 2: тот же IP, но SNI заменён на нейтральный
dpich --target www.youtube.com --sni-override example.com --mode tcp16-20

В первом случае — RST через 18 пакетов. Во втором — соединение проходит до конца. Это подтверждает: блокировка идёт по SNI, IP не в чёрном списке. Это типичный паттерн TCP 16-20 в РФ-сегменте.

Сценарий 2: измерение «магического числа» N в TCP 16-20.

Утилита может отправлять данные по байту/пакету и засекать, на каком именно пакете приходит RST. Это позволяет понять параметры конкретной DPI-системы у вашего провайдера:

dpich --target www.youtube.com --mode tcp16-20-probe --packet-size 64

У меня вышло, что на домашнем провайдере N=18, на мобильном операторе N=20. Это разные DPI-системы, либо одна и та же с разной конфигурацией. По форумам подобной тематики (net4people/bbs) это коррелирует с разными вендорами оборудования у разных операторов.

Сценарий 3: проверка DNS-подмены.

dpich --target www.youtube.com --mode dns-check

Чекер делает запросы на разные DNS-серверы (8.8.8.8, 1.1.1.1, 77.88.8.8, провайдерский), сравнивает ответы и проверяет валидность через DoH (DNS-over-HTTPS, то есть запрос, который провайдер не может перехватить). У меня DNS-подмены нет ни на одном из тестируемых подключений — это подтверждает, что мой провайдер использует DPI-методы, а не древние DNS-фильтры.


Что я увидел в итоге

Сводная картина по моим трём подключениям:

Метод

Домашний провайдер

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

Региональный ISP

DNS-подмена

Нет

Нет

Нет

TCP 16-20

Да, N=18

Да, N=20

Да, N=18

CIDR-вайтлист

Нет

Да (~70% подсетей)

Нет

QUIC-фильтрация

Частичная

Полная

Частичная

SNI-блок без 16-20

Только некоторые домены

Все блокируемые

Только некоторые

Это даёт более точную картину, чем «у меня YouTube тормозит». На моём конкретном домашнем подключении применяется один основной метод (TCP 16-20 с параметром N=18), плюс частичная QUIC-фильтрация. Никаких CIDR-блокировок и DNS-подмен. То есть DPI работает на L7 по содержимому ClientHello.

На мобильном 5G+ всё гораздо тяжелее: помимо тех же DPI-методов, активна CIDR-фильтрация, и QUIC-трафик режется полностью. Это объясняет, почему многие сервисы на мобильнике вообще не работают, тогда как на проводе с теми же ограничениями работают через QUIC.


Зачем вообще это знать с инженерной точки зрения

Здесь стоит остановиться и проговорить, для кого это полезно. Я выделяю несколько групп.

Сетевые инженеры на стороне B2B-сервисов. Если ваш SaaS теряет клиентов из-за того, что какие-то из них не могут до него достучаться, понимание методов фильтрации позволяет не просто констатировать «провайдеры виноваты», а точно понять, что именно мешает соединению. Из этого следуют конкретные технические решения: переехать на свой домен, сменить хостинг-провайдера, добавить альтернативные эндпоинты в IP-диапазонах вайтлистов, перевести трафик на QUIC.

Разработчики приложений с реальной аудиторией в РФ. Если вы делаете мобильный или веб-сервис и хотите, чтобы он работал стабильно, нужно понимать ограничения сетевой среды. Полная зависимость от одного домена с уникальным SNI — рискованная архитектура; распределение трафика через CDN с пулом IP в разных AS — устойчивая.

Исследователи интернет-цензуры. Это самостоятельная академическая область — Citizen Lab, OONI, Berkman Klein Center собирают данные о применении DPI по миру. dpi-checkers — один из инструментов, который исследователь может предложить добровольцам в России для сбора полевых данных.

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

Что не является целью этой статьи — это инструкция по обходу. Там это отдельная и большая тема, со своими инструментами (Zapret, GoodbyeDPI, разные shadowsocks-форки), и она требует отдельного материала. Здесь я хочу показать только: вот методы, вот как их детектировать, вот как разобраться, что у вас на сети.


Ограничения и нюансы инструмента

Чтобы не выглядеть рекламно, отмечу слабые места dpi-checkers.

Браузерные чекеры медленные. Полная проверка CIDR-вайтлистов может идти 30-40 минут. Это не баг — это архитектура (нужно проверять много подсетей с таймаутом). Но если у вас нет терпения, лучше идти сразу в dpi-ch.

Документация на русском, частично на английском. Главный README на английском, но описания конкретных тестов — на русском. Для международных пользователей это может быть барьером.

Только IPv4. Если у вас IPv6 (а в крупных городах он часто есть), отдельных тестов на IPv6-фильтрацию нет. С другой стороны, в РФ-сегменте DPI преимущественно атакует IPv4 — это и историческая инерция, и просто более широкое распространение.

False negative возможны. Если в вашей AS подсетей мало или они нестандартные, чекер может пропустить интересные случаи. Автор открыто пишет про это в README. Для серьёзного исследования нужно дорабатывать списки AS под свой регион.

Сборка под Android в планах, но её ещё нет. Соответственно, на Android можно прогнать только web-чекеры.


Главная мысль

Современная сетевая фильтрация — это не «провайдер замедляет YouTube». Это конкретные технические методы: DNS-подмена, CIDR-вайтлисты, TCP 16-20, SNI-блокировка, QUIC-фильтрация. Каждый метод имеет свою сигнатуру, и каждый можно детектировать конкретным инструментом.

Понимание этих методов — базовая инженерная грамотность для любого, кто работает с интернет-сервисами в РФ-сегменте. Это позволяет говорить о проблемах в технических терминах, а не в эмоциональных. И это позволяет принимать осмысленные технические решения там, где раньше было «мы ничего не можем сделать, провайдеры творят дичь».

Инструменты вроде dpi-checkers закрывают пробел между «академическими работами по DPI» и «обычным пользователем» — позволяют каждому разобраться, что именно происходит с его собственным трафиком. Это нормальная open-source гражданская технология, и её существование — хороший признак того, что сообщество способно создавать инструменты исследования сложных систем без участия крупных корпораций или государства.


Полезные ссылки: