Протоколы
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 недели.
Источники
- AmneziaVPN repository — github.com/amnezia-vpn/amneziawg-go.
- Документация Amnezia — docs.amnezia.org.
- WireGuard whitepaper (Donenfeld, 2017) — base spec, от которого форкается AWG.
Связанные термины
- WireGuard — родительский протокол.
- DPI — то, что AWG обходит.
- ТСПУ — конкретный DPI, для которого AWG критичен.
- Обфускация — общая теория.