28 ноября 2025 года для многих началось с жалоб на WhatsApp. Симптоматика у всех идентичная и до боли знакомая по событиям с Discord: текстовые сообщения и медиафайлы уходят мгновенно, но при попытке голосового или видеовызова клиент бесконечно висит на статусе «Подключение», после чего сбрасывает звонок.

Операторы связи («МегаФон», «Билайн») рапортуют о штатной работе сети. И технически они не врут: связность есть, IP-адреса Meta (по большей части) доступны. Проблема лежит глубже — на уровне L7 фильтрации ТСПУ.

Что происходит под капотом?

  1. TCP-трафик (Текст/Фото): Проходит через HTTPS/TLS туннели без проблем. Его блокировка чревата «ковровыми» последствиями, поэтому его пока не трогают.

  2. UDP-трафик (Голос/Видео): Для установления P2P-соединения (или связи через Relay-сервер) мессенджер использует протокол STUN (Session Traversal Utilities for NAT).

Именно здесь срабатывает DPI. Фильтр настроен не на IP-адреса, а на сигнатуры протокола. Оборудование детектирует характерные заголовки (Magic Cookie) STUN-пакетов WhatsApp и дропает их. Хендшейк не проходит, медиапоток (RTP) не поднимается.

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

Решение 1: Windows (Zapret / Windivert)

Для десктопной версии (Windows 10/11) классические методы обхода HTTP-блокировок (обычный GoodbyeDPI) здесь бессильны, так как нам нужно манипулировать UDP-пакетами. Наиболее гибкий инструмент сейчас — Zapret от bol-van.

У нас есть два пути: «ленивый» и «точечный».

Вариант А: Метод «Discord» (Быстрый)

Участники комьюнити заметили, что эвристика блокировки WhatsApp практически зеркально повторяет алгоритмы, применяемые к Discord Voice. Поэтому стандартный пресет для «Дискорда» отлично поднимает и звонки в WhatsApp.

  1. Скачиваем актуальный релиз zapret-win-bundle.

  2. Находим файл preset_discord_media.cmd (или аналогичный с упоминанием UDP/Discord).

  3. Запускаем от имени администратора.

Механика: Скрипт запускает драйвер winws с параметрами десинхронизации UDP (--dpi-desync=fake), что сбивает DPI с толку при попытке проанализировать заголовок пакета.

Вариант Б: Кастомный фильтр STUN (Advanced)

Если вы не хотите заворачивать в обход лишний трафик или готовый пресет работает нестабильно, лучше использовать точечную фильтрацию.
Пользователь Rusificator предложил элегантное решение через windivert: фильтровать трафик не по IP (которые у Meta постоянно меняются), а по сигнатуре протокола.

1. Создаем фильтр
В папке zapret\windivert.filter создайте файл windivert.whatsapp_stun.txt. Вставляем туда правило для отлова STUN-пакетов (Magic Cookie 0x2112A442):

!impostor and !loopback and
(
  outbound and udp and
  udp.PayloadLength>=20 and
  udp.Payload32[1]=0x2112A442 and
  udp.Payload[0]<0x40
)

2. Создаем файл запускаВ корне папки zapret создайте run_whatsapp_fix.cmd:

start "zapret: wa_stun" /min "%~dp0winws.exe" ^
--wf-raw=@"%~dp0windivert.filter\windivert.whatsapp_stun.txt" ^
--filter-l7=stun --dpi-desync=fake --dpi-desync-repeats=2

Результат: Мы «ломаем» только пакеты инициализации звонка. Как только соединение установлено, медиапоток (RTP) идет уже внутри установленной сессии, которую DPI, как правило, не разрывает.

Решение 2: Android (ByeByeDPI)

В мобильном сегменте (без Root-прав и прямого доступа к iptables) единственным рабочим вектором остается использование Android VPNService для перехвата и модификации трафика в userland. Утилита ByeByeDPI (порт dovote) отлично справляется с этой задачей, но требует специфической настройки под UDP.

1. Базовая настройка
Обычный режим обхода блокировок сайтов (HTTP/TLS) здесь бесполезен.

  • Установите ByeByeDPI (релизы на GitHub или 4PDA).

  • В настройках движка обязательно активируйте [Десинхронизация UDP].

    • Этот режим применяет стратегии fake или disorder к UDP-пакетам, что позволяет STUN-запросам проскакивать через фильтры ТСПУ.

2. Проблема «Сбербанка» и Split Tunneling (Критично)
Многие пользователи, радостно включив ByeByeDPI, сталкиваются с тем, что перестают работать приложения банков (Сбер, Т-Банк) и Госуслуги.
Причина: Приложения с высоким уровнем безопасности детектируют локальный VPN-интерфейс или попытку перехвата трафика (MITM-аллергия) и разрывают соединение.

Решение: Настройка раздельного туннелирования (App List).
Не заворачивайте весь трафик устройства в туннель.

  1. В интерфейсе ByeByeDPI найдите раздел «Выбор приложений» (или Mode: Allow Selected).

  2. Переключите режим в «Проксировать только выбранные».

  3. Отметьте галочками WhatsApp (и Telegram, если наблюдаются проблемы).

  4. Остальной трафик пустите в обход (Direct).

Такая конфигурация решает сразу две задачи:

  • Восстанавливает VoIP-звонки.

  • Исключает конфликты с российскими сервисами и не «высаживает» батарею на процессинг лишнего трафика.

Решение 3: OpenWRT (Шлюз)

Самый «чистый» способ — решить проблему на уровне домашнего маршрутизатора. Это избавляет от необходимости настраивать каждый телефон и ноутбук в отдельности. Если у вас OpenWRT с пакетом zapret, процедура занимает две минуты.

Логика здесь та же, что и при недавней починке YouTube/Discord. Нас интересует файл конфигурации /opt/zapret/config.

Настройка:

  1. Открываем конфиг через SSH или веб-интерфейс (LuCI).

  2. Находим переменные, отвечающие за UDP и QUIC (их часто режут «за компанию»).

  3. Прописываем стратегии десинхронизации:

codeBash

# Стратегии для QUIC и UDP
# --dpi-desync-any-protocol важен, так как STUN не всегда распознается как стандартный веб-трафик
NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake --dpi-desync-repeats=6"
NFQWS_OPT_DESYNC_UDP="--dpi-desync=fake --dpi-desync-repeats=6 --dpi-desync-any-protocol"
  1. Перезапускаем службу: /etc/init.d/zapret restart.

После этого голосовой трафик начинает ходить прозрачно для всех клиентов в локальной сети (iOS, Android, SmartTV).


Хороший ход. Чтобы реклама потом встала органично, нужно подготовить почву: написать про то, что «бесплатные VPN умирают», а «свой сервер или качественный сервис — это база». Тогда твоя ссылка будет выглядеть как полезная рекомендация, а не спам.

Вот финальный блок про VPN.

Решение 4: Альтернатива: «Умный» VPN и маршрутизация

Если возиться с командной строкой и конфигами zapret нет желания, остается классический вариант — VPN. Однако реалии 2025 года таковы, что обычный OpenVPN или «голый» WireGuard всё чаще попадают под шейпинг или полную блокировку протокола.

Чтобы голосовая связь работала стабильно, а батарея смартфона не таяла на глазах, при выборе решения нужно учитывать два технических момента:

1. Протоколы (Obfuscation)
Для обхода DPI лучше всего подходят протоколы, маскирующиеся под обычный HTTPS-трафик. На текущий момент «золотой стандарт»:

  • VLESS + Reality / Vision (Xray)

  • AmneziaWG (модифицированный WireGuard с защитой от детекта заголовков).

Эти протоколы сложнее детектировать, и они обеспечивают минимальную задержку (ping), что критично для VoIP-звонков.

2. Раздельное туннелирование (Split Tunneling)
Гнать весь трафик через зарубежный сервер — плохая идея.
Во-первых, это лишняя нагрузка и пинг.
Во-вторых, российские сервисы (Банки, Госуслуги, Кинопоиск) могут не открываться с зарубежных IP.

В современных клиентах (v2rayNG, NekoBox, AmneziaVPN) настраивается маршрутизация:

  • WhatsApp / Instagram / Discord —> направляем в туннель (VPN).

  • RU-сегмент и банки —> направляем напрямую (Direct).

Это настраивается один раз и позволяет забыть о переключателе «Вкл/Выкл».


Публичные бесплатные сервисы сейчас перегружены и часто сами находятся в блеклистах. Оптимальный вариант по соотношению цена/качество/контроль — это либо проверенный платный провайдер с поддержкой VLESS, либо аренда собственного недорогого VPS, на котором можно поднять свой личный VPN за 5 минут.

Комментарии (0)