Народный

Протоколы

WireGuard-obfs — обфускации WireGuard для обхода DPI

Семейство модификаций WireGuard, скрывающих сигнатуру протокольного handshake'а: добавление случайного padding, junk-пакетов, рандомизация длин — реализованы в AmneziaWG, WireProxy, mlkem-wg и других форках.

Определение

WireGuard-obfs — это собирательное название набора модификаций (форков и параллельных реализаций) WireGuard, решающих одну общую задачу: скрыть характерную сигнатуру handshake-сообщений протокола от DPI. Базовый WireGuard имеет хорошо известные magic-bytes в первых пакетах (тип сообщения 0x01 для initiator, фиксированная длина 148 байт, паттерн ChaCha20+Poly1305 nonce), что делает его легко детектируемым.

В России и Иране базовый WireGuard работает нестабильно с 2023 года: ТСПУ детектирует handshake и шлёт ICMP unreachable, ломая UDP-state. WireGuard-obfs — это попытки сообщества вернуть протокол в строй.

Как работает

Все imple WireGuard-obfs работают на одном уровне: меняют байтовое представление первых handshake-пакетов и/или добавляют шум, не трогая криптографию. Конкретные техники:

  1. Junk packets. Перед настоящим handshake клиент шлёт N случайных UDP-пакетов случайной длины. DPI начинает state-tracking «странной сессии», не успевает классифицировать.
  2. Initial packet padding. Handshake-init пакет (148 байт в ванилле) дополняется случайным padding’ом до variable длины (200–800 байт). Это ломает signature-match по точной длине.
  3. Magic-byte XOR. Первые байты handshake (0x01000000, 0x02000000 для типов сообщений) XOR-ятся со случайным per-session salt, согласованным заранее.
  4. Junk header. Перед первыми пакетами клиент шлёт «junk header» — псевдо-HTTP, фейк-DNS или просто рандом. Если DPI ожидает WireGuard-сигнатуру с первого пакета, она не сработает.
  5. Random response timing. Сервер задерживает первый ответ на случайное время (10–500 мс), чтобы сбить тайминг-анализ.

Конкретные реализации:

  • AmneziaWG — самый известный форк, разработан командой Amnezia VPN. Поддерживает все 5 техник + параметризацию через S1/S2/H1-H4 параметры. Используется в Amnezia, FastNetMon, mullvad-test-fork. Открытая спецификация.
  • WireProxy с obfs-mode. Не сам WG, а user-space proxy с обфусцированным handshake.
  • mlkem-wg. Эксперимент с post-quantum + obfs (Mullvad).
  • OpenVPN-over-WG. Не обфускация но related: VPN-провайдер раскатывает WG туннель и поверх него ещё OpenVPN с TLS-обфускацией.

Не путать с obfs4. Obfs4 — это transport для Tor, никак не связан с WireGuard кроме общей идеи «скрыть сигнатуру».

Применение в России 2026

WireGuard-obfs (в основном через AmneziaWG) — основной способ использовать WG в РФ в 2026. Стандартные сценарии:

  • Свой VPS с AmneziaVPN. Amnezia-клиент поднимает на VPS AmneziaWG сервер, конфигурирует под whitelist’ом обфускационных параметров. Один из самых надёжных setup’ов для РФ.
  • Mullvad / IVPN с AmneziaWG. Некоторые публичные VPN-сервисы подключили AmneziaWG как опцию для российских юзеров.
  • TG-боты обхода. Некоторые приватные сервисы выдают AmneziaWG конфиги для Telegram-юзеров.

Параметры обфускации (S1, S2, H1-H4):

  • S1 — junk packets count (1–10), число случайных пакетов перед handshake.
  • S2 — junk packets size (10–1000 байт), длина каждого.
  • H1-H4 — magic bytes XOR-key для разных типов сообщений (initiator, responder, cookie, transport).

ТСПУ научилось распознавать стандартный AmneziaWG-конфиг (с default S1=4, S2=148), поэтому ротация параметров важна. Хороший провайдер использует случайные параметры на пользователя.

Минусы:

  • Throughput. Junk-пакеты съедают 5–10% bandwidth.
  • Установка handshake. На 50–200 мс медленнее ванильного WG.
  • MTU-tuning. Из-за padding’а нужно понижать MTU клиента (обычно 1280).
  • Меньше клиентов. Не все WG-клиенты поддерживают AmneziaWG (только AmneziaVPN, Wireguard-tools fork, отдельные mobile-apps).

Юзеру: если VPS-based WG VPN перестал работать в РФ — первым шагом попробовать AmneziaWG. Если не помогает — переходить на VLESS Reality.

Связанные термины

WireGuard — базовый протокол. AmneziaWG — главная имплементация obfs. Obfuscation — общая категория. DPI и TSPU — противники.

Источники