Народный

Протоколы

AmneziaWG

Форк WireGuard, разработанный в рамках проекта AmneziaVPN, с обфусцированными заголовками пакетов для обхода DPI и ТСПУ.

Определение

AmneziaWG — это модификация WireGuard, добавляющая рандомизированные заголовки и junk-пакеты в начале UDP-handshake, чтобы ломать сигнатурное детектирование классического WireGuard. Разработчик — команда AmneziaVPN. Код опубликован как форк официального wireguard-go и поддерживается параллельно с upstream.

С точки зрения криптографии AWG идентичен WireGuard: Curve25519 + ChaCha20-Poly1305 + BLAKE2s. Меняется только wire format и handshake-таймлайн.

Зачем понадобился

Классический WireGuard детектируется DPI с очень высокой точностью из-за статичности первых пакетов. Конкретно:

  • Первый пакет handshake (тип 0x01) имеет фиксированную длину 148 байт.
  • Второй пакет (тип 0x02) — 92 байта.
  • Заголовок: 4 байта типа + reserved + nonce + payload по статичному шаблону.

ТСПУ научилась флагить UDP-трафик «148 байт → 92 байта → 16-байтный keepalive каждые 25 секунд» как WireGuard примерно с 2023 года. После этого классический WG в РФ перестал стабильно работать у мобильных операторов.

AmneziaWG решает проблему на двух уровнях: ломает сигнатуру и ломает тайминги.

Как работает обфускация

AmneziaWG добавляет конфигурируемый набор параметров Jc/Jmin/Jmax/S1/S2/H1/H2/H3/H4, которые модифицируют wire format. Что они делают:

  • Jc (junk count) — сколько мусорных пакетов отправить до реального handshake. Это ломает stateful-детекцию: DPI ждёт 0x01 → 0x02, а видит 0x?? → 0x?? → 0x01 → 0x02.
  • Jmin / Jmax — минимальный и максимальный размер junk-пакетов. Рандомизируется.
  • S1 / S2 — размеры padding’а внутри handshake-пакетов. Это ломает length-сигнатуру: первый пакет уже не 148 байт.
  • H1 / H2 / H3 / H4 — рандомизированные значения вместо статичных типов пакетов 0x01-0x04. У DPI больше нет фиксированного маркера.

Все параметры — pre-shared между клиентом и сервером, иначе соединение не установится. Часто значения генерируются один раз при создании конфига и хранятся вместе с ключами.

Производительность

AWG практически идентичен WireGuard по throughput и latency — junk-пакеты идут только в начале сессии, на установившийся туннель overhead’а нет. Замеры (на 1 Gbps канале):

  • Throughput: 920 Mbps (WireGuard 930 Mbps, OpenVPN 350 Mbps).
  • Handshake latency: +5–15 ms из-за junk-пакетов.
  • CPU: идентичен WireGuard, использует те же примитивы (Curve25519, ChaCha20).

Это делает AWG практически уникальным: обфускация без потери скорости. Большинство альтернатив (OpenVPN over TLS, Shadowsocks с обфускацией, TLS-туннели) проигрывают в 2-3 раза.

Реализации и поддержка

AmneziaWG поддерживается в нескольких клиентах:

  • AmneziaVPN (Windows/macOS/Linux/Android/iOS) — референсная реализация.
  • wireguard-go-amnezia — серверная реализация.
  • awg-quick — CLI-обвязка (аналог wg-quick).
  • WireGuard Windows + AWG-патчи — для Windows.
  • iOS / Android WireGuard-форки — поддержка через приложения Amnezia.

В отличие от upstream WireGuard, AWG не входит в ядро Linux. Это означает чуть более высокий CPU overhead на сервере (userspace вместо kernel), но на типичных VPS это не критично.

AmneziaWG в России

На середину 2026 года AmneziaWG остаётся одним из самых устойчивых протоколов в РФ-сетях. Известные нюансы:

  • На МТС и МегаФоне работает «из коробки» с дефолтными junk-параметрами.
  • На Билайне и Tele2 иногда требуется ротация Jc и S1/S2 — статичные конфиги могут попадать под throttling после нескольких часов работы.
  • Telegram-каналы провайдеров публикуют свежие пресеты junk-параметров примерно раз в 2-4 недели.

Источники

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

  • WireGuard — родительский протокол.
  • DPI — то, что AWG обходит.
  • ТСПУ — конкретный DPI, для которого AWG критичен.
  • Обфускация — общая теория.