AmneziaWG: что это и как работает обфускация
- Получить ссылку
- X
- Электронная почта
- Другие приложения
В первой статье цикла мы разобрались, почему обычный WireGuard перестал работать в России. DPI-системы распознают его по четырём сигнатурам: фиксированному первому байту, размеру рукопожатия ровно 148 байт, порту 51820 и предсказуемым размерам пакетов.
Теперь — главный вопрос: как это исправить? Ответ — AmneziaWG. Это не «ещё один VPN», а глубоко модифицированный форк WireGuard, который сохраняет всю его скорость, но делает трафик неотличимым от обычного интернет-шума.
Разбираемся, как именно это работает.
Что такое AmneziaWG
AmneziaWG — это форк WireGuard-Go, созданный командой Amnezia VPN. Форк означает, что разработчики взяли открытый код WireGuard, сохранили его криптографическое ядро (ChaCha20-Poly1305, Curve25519, Noise Protocol Framework) и добавили сверху слой обфускации.
Ключевой принцип: криптография не меняется. AmneziaWG так же безопасен, как WireGuard. Меняется только «внешний вид» трафика — то, что видит DPI-система на стороне провайдера.
Эволюция обфускации: от 1.0 до 3.1
AmneziaWG развивался поэтапно. Каждая версия отвечала на новые методы блокировки. Вот как это происходило:
📊 Эволюция AmneziaWG
| Версия | Год | Что нового |
|---|---|---|
| 1.0 | 2024 | Базовая обфускация: мусорные пакеты (Jc), подмена заголовков (H1-H4) |
| 1.5 | 2024–2025 | Пакеты-подписи I1-I5, мимикрия под популярные UDP-протоколы |
| 2.0 | 2025 | CPS (Custom Protocol Signature), динамические заголовки, мимикрия под QUIC/DNS/SIP |
| 3.0 | 2026 | Header Protection — шифрование заголовков пакетов |
| 3.1 | 2026 | Защита от ИИ-анализа: рандомизация таймингов, метаданных, длины пакетов |
Рассмотрим каждую версию подробно.
AmneziaWG 1.0: первая попытка
Самая первая версия решала базовую задачу: убрать сигнатуры WireGuard. Что именно было сделано:
1. Мусорные пакеты перед рукопожатием (Jc, Jmin, Jmax). Перед тем как начать handshake, клиент отправляет несколько пакетов со случайными данными. Они «размывают» начало сессии во времени и по размеру. DPI уже не может сказать: «первый пакет ровно 148 байт — это WireGuard».
2. Подмена магических чисел (H1-H4). В WireGuard каждый тип пакета имеет свой идентификатор: Init, Response, Cookie, Data. Эти идентификаторы — фиксированные байты, по которым DPI легко определяет протокол. AmneziaWG 1.0 позволил заменить эти байты на произвольные значения.
3. Padding для handshake (S1, S2). К пакетам Init и Response добавлялись случайные байты, чтобы их размер перестал быть фиксированным.
Однако к 2025 году DPI научился обходить и это: он анализировал не отдельные пакеты, а статистику — распределение размеров, интервалы, периодичность.
AmneziaWG 1.5: мимикрия под UDP-протоколы
Версия 1.5 добавила ключевой элемент — пакеты-подписи I1-I5 (Signature Chain).
Идея: перед рукопожатием клиент отправляет до пяти UDP-пакетов, которые выглядят как настоящий трафик других протоколов. Например, как QUIC Initial handshake или DNS-запрос. DPI видит «обычный» пакет, пропускает его — а следом идёт уже настоящий handshake AmneziaWG.
Пять пакетов (I1-I5) отправляются последовательно, каждые 120 секунд. Каждый из них описывается в формате CPS (Custom Protocol Signature) — о нём ниже.
AmneziaWG 2.0: от маскировки к мимикрии
Версия 2.0 — качественный скачок. Разработчики поняли: маскировка (сделать трафик «непохожим на VPN») недостаточна. Нужна мимикрия — полная имитация легитимного протокола.
Что появилось в 2.0:
1. CPS — Custom Protocol Signature
CPS — это язык описания фейковых пакетов. Вы можете «одеть» трафик AmneziaWG в костюм любого UDP-протокола. Синтаксис CPS выглядит так:
i1 = <b 0xd100000001><rc 8><t><r 50>
Где:
<b hex_data>— статические байты (имитация заголовка протокола)<rc N>— N случайных ASCII-букв (для текстовых протоколов)<t>— текущий Unix timestamp<r length>— случайные байты заданной длины
Например, чтобы трафик выглядел как настоящий QUIC-запрос, в CPS прописывается реальная последовательность байт QUIC Initial handshake. DPI проверяет пакет, видит знакомую сигнатуру QUIC — и пропускает.
2. Динамические заголовки (H1-H4 как диапазоны)
В версии 1.0 значения H1-H4 были фиксированными числами. DPI мог запомнить их и блокировать. В 2.0 они стали диапазонами: например, H1 = 100–500. Для каждого пакета выбирается случайное значение из диапазона. DPI не может составить универсальное правило блокировки.
3. Padding для всех пакетов (S3-S4)
Раньше padding был только на handshake-пакетах. В 2.0 случайные байты добавляются ко всем типам пакетов, включая Data. Это ломает статистический анализ размеров.
4. Мимикрия под QUIC, DNS, SIP
2.0 научился прикидываться тремя популярными протоколами:
- QUIC — используется в Google, YouTube, большинстве современных сайтов.
- DNS — запросы к DNS-серверам. Абсолютно нормальный трафик.
- SIP — протокол VoIP-звонков (WhatsApp, Telegram, Zoom).
Для провайдера это выглядит как обычная работа интернета.
AmneziaWG 3.0: шифрование заголовков
Версия 3.0 — самый серьёзный шаг. До неё обфускация работала так: подменить байты, добавить мусор, замаскировать размеры. Но сами заголовки оставались на месте — просто с другими значениями. DPI всё ещё мог их прочитать.
В 3.0 появился Header Protection. Заголовок пакета (а для handshake — всё сообщение целиком) шифруется потоковым шифром ChaCha20. Ключ шифрования — HeaderProtectionKey, общий секрет, который должен совпадать на сервере и всех клиентах.
Что это даёт:
- DPI видит полностью случайный поток байтов — не может прочитать даже тип пакета.
- Сервер расшифровывает заголовок, обрабатывает пакет, и никто по пути не понимает, что это VPN.
- Handshake-сообщение шифруется целиком — даже его структура скрыта.
Важное требование: в 3.0 параметры S1-S4 должны быть не менее 12 байт. Это связано с тем, что nonce для шифрования берётся из начала padding. Если padding меньше 12 байт — nonce физически не влезает, и handshake не состоится.
AmneziaWG 3.1: защита от ИИ-анализа
Летом 2026 года в России прошла волна блокировок, показавшая: ТСПУ научился анализировать поведение соединения целиком, а не отдельные пакеты. Вот что он отслеживает:
- Размеры и последовательность пакетов.
- Интервалы между пакетами.
- Паттерны рукопожатия.
- Keepalive-пакеты.
- Объём трафика.
- Количество соединений.
- Повторяющиеся статистические паттерны.
Версия 3.1 отвечает на это рандомизацией всего:
- RandomTrailers — случайный «хвост» у каждого пакета. Длина хвоста варьируется, что ломает статистику размеров.
- Рандомизация таймингов — интервалы между пакетами больше не фиксированы. Keepalive и rekey-события происходят в случайные моменты.
- Обфускация метаданных — скрываются технические значения, по которым ИИ мог бы идентифицировать протокол.
- Расширенный набор параметров pre-shared key — больше вариативности в handshake.
Результат: два разных сеанса AmneziaWG выглядят по-разному. ИИ-система не может найти общий паттерн, потому что его нет.
Как это работает на уровне пакетов
Посмотрим на конкретный пример. Вот что отправляется при установке соединения:
📦 Цепочка пакетов AmneziaWG 3.1
| Шаг | Что отправляется | Как выглядит для DPI |
|---|---|---|
| 1 | I1 (CPS-пакет) | QUIC Initial handshake |
| 2 | I2–I5 (CPS-пакеты) | DNS-запросы, случайный UDP |
| 3 | Jc мусорных пакетов | Случайный UDP-трафик |
| 4 | Init handshake (зашифрованный) | Непонятный поток байтов |
| 5 | Data (зашифрованный) | Случайный UDP с варьирующимися размерами |
Для DPI это выглядит как обычный сеанс: несколько UDP-пакетов, похожих на QUIC/DNS, затем непонятный шифрованный трафик. Ни одного признака VPN.
Сравнение с обычным WireGuard
⚖️ WireGuard vs AmneziaWG
| Параметр | WireGuard | AmneziaWG 3.1 |
|---|---|---|
| Скорость | 950+ Мбит/с | 880+ Мбит/с |
| Криптография | ChaCha20-Poly1305 | ChaCha20-Poly1305 |
| Обфускация | Нет | Встроенная |
| Обход DPI | ❌ Блокируется | ✅ Работает |
| Параметры обфускации | — | Jc/Jmin/Jmax, S1-S4, H1-H4, I1-I5, CPS |
| Совместимость | Стандарт | Требует клиенты AmneziaWG |
Потери скорости — около 7%. Это цена за обфускацию. Криптография идентична.
Практические рекомендации по настройке
Если вы разворачиваете AmneziaWG, вот что важно знать:
1. Параметры Jc/Jmin/Jmax
Это количество и размеры мусорных пакетов. Сообщество рекомендует:
- Для мобильных сетей: Jc=3–10, Jmin=40, Jmax=100 (мягкий набор).
- Для стабильных сетей: Jc=15, Jmin=1, Jmax=10 (минимальный шум).
- Не ставьте Jc=120 — это создаёт ненужный спам и замедляет подключение.
2. Диапазоны H1-H4
В 2.0+ используйте диапазоны, а не фиксированные числа. Например:
H1 = 100-500 H2 = 1000-1500 H3 = 2000-2500 H4 = 3000-3500
Диапазоны не должны пересекаться — иначе handshake не пройдёт.
3. HeaderProtectionKey (3.0+)
32 байта в base64. Должен совпадать побайтово на сервере и всех клиентах. Если не совпадает — handshake никогда не состоится, и в логах не будет ни одной ошибки (для принимающей стороны это просто мусор из интернета).
4. S1-S4 в 3.0+
Должны быть ≥ 12. Старые конфиги с S3=5 в 3.0 невалидны.
5. CPS-пакеты I1-I5
Не обязательны к совпадению на сервере и клиенте — это отдельные «приманки», которые принимающая сторона не проверяет. Но их наличие значительно повышает устойчивость.
Итог
AmneziaWG — это эволюция WireGuard в условиях цензуры. Криптография осталась той же, но внешний вид трафика изменился до неузнаваемости.
Ключевые выводы:
- AmneziaWG 1.0–1.5 — базовая обфускация, работает против простого DPI.
- AmneziaWG 2.0 — мимикрия под QUIC/DNS/SIP, динамические заголовки. Работает против продвинутого DPI.
- AmneziaWG 3.0 — шифрование заголовков. DPI не может прочитать даже тип пакета.
- AmneziaWG 3.1 — защита от ИИ-анализа через рандомизацию всего.
Это гонка вооружений. Каждый раз, когда ТСПУ обновляет сигнатуры, AmneziaWG выпускает новую версию. Пока что протокол выигрывает.
В следующей статье цикла мы разберём установку серверной части AmneziaWG на Ubuntu/Debian VPS — пошагово, с командами и проверками.
➤ Следующая статья: «Установка серверной части AmneziaWG на Ubuntu/Debian VPS»
📚 Это часть цикла «AmneziaWG: полное руководство». Смотрите все статьи цикла.
- Получить ссылку
- X
- Электронная почта
- Другие приложения
Популярные сообщения
🧬 ChaCha20 и Curve25519: Криптография под капотом WireGuard
Немного о том, зачем это нужно.
🔌 L2TP: протокол, который объединил лучшее от двух миров
⚡ ИИ-помощник (на OpenRouter)
Спросите про VPN, протоколы или настройку серверов.
Комментарии
Отправить комментарий