AmneziaWG 2.0 и 3.1: как работает обфускация и мимикрия трафика

Разбираем протокол AmneziaWG: от первой версии до 3.1. Механизмы обфускации, CPS-сигнатуры, настройка под DPI, практические рекомендации и ответы на частые вопросы.

Что такое AmneziaWG и зачем он нужен

AmneziaWG — это форк протокола WireGuard, разработанный командой Amnezia для противодействия системам глубокого анализа трафика (DPI). WireGuard известен своей простотой, скоростью и низким энергопотреблением, но его пакеты имеют фиксированные заголовки и предсказуемые размеры, что делает его легко обнаруживаемым. AmneziaWG сохраняет архитектуру и производительность оригинала, но добавляет механизмы обфускации, которые скрывают характерные признаки WireGuard-трафика.

Первая версия AmneziaWG появилась в 2023 году и позволяла изменять статические параметры WireGuard: заголовки пакетов (H1-H4), размеры handshake-пакетов (S1, S2) и добавлять мусорные пакеты перед установкой соединения (Jc, Jmin, Jmax). Этого было достаточно против простых сигнатурных DPI, но с развитием технологий блокировок провайдеры научились обнаруживать и такие обфусцированные протоколы по статистическим паттернам, размерам пакетов и временным характеристикам.

Версия 2.0, вышедшая в 2025 году, стала ответом на эти вызовы. Она добавила возможность полной мимикрии под легитимные UDP-протоколы, такие как DNS, QUIC или SIP. Версия 3.1, появившаяся в 2026 году, ещё больше усложнила статистический анализ соединения, сделав поведение разных сессий менее повторяемым. Сегодня AmneziaWG поддерживается в клиенте AmneziaVPN для десктопов и Android, а также доступен как отдельное приложение AmneziaWG для Android.

Эволюция AmneziaWG: от 1.0 к 3.1

Каждая версия AmneziaWG добавляла новые уровни защиты от DPI. Версия 1.0 позволяла:

  • Отправлять мусорные пакеты перед handshake (Jc, Jmin, Jmax).
  • Изменять размеры handshake-пакетов через padding (S1, S2).
  • Заменять стандартные заголовки WireGuard на фиксированные значения (H1-H4).

Версия 2.0 добавила:

  • Signature packets (i1-i5) — до пяти специальных пакетов перед каждым handshake, которые имитируют начало легитимного протокола.
  • Расширенный padding: S3 для Cookie Reply и S4 для транспортных данных.
  • Диапазоны для заголовков H1-H4 вместо фиксированных значений.

Версия 3.1, выпущенная в ответ на массовые блокировки в России в июне-июле 2026 года, добавила:

  • Header Protection — скрытие незашифрованных служебных частей пакетов с помощью ChaCha20.
  • Content Padding — случайное дополнение транспортных данных.
  • Настраиваемые тайминги для handshake, keepalive и таймаутов.
  • Random Trailers — случайные байты в конце пакетов.
  • Возможность отключения Cookie Reply для снижения fingerprint.

Важно отметить, что криптографическое ядро WireGuard остаётся неизменным, что сохраняет безопасность и производительность.

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

Основная идея AmneziaWG 2.0 — сделать трафик неотличимым от легитимного UDP-трафика. Для этого используются несколько механизмов.

Signature packets (i1-i5) — перед каждым handshake (который происходит раз в 2 минуты) клиент отправляет до пяти пакетов, которые выглядят как начало DNS-запроса, QUIC-соединения или другого протокола. Эти пакеты описываются на языке CPS (Custom Protocol Signature). Например, сигнатура QUIC может выглядеть так: i1 = **. Здесь ** — магические байты QUIC Initial, ` — 8 случайных букв/цифр для Connection ID, — временная метка, ` — 50 случайных байт. DPI видит начало QUIC-пакета и пропускает трафик.

Расширенный padding — в версии 1.0 можно было менять только размеры handshake-пакетов (S1, S2). В 2.0 добавлены S3 (для Cookie Reply) и S4 (для транспортных данных). S4 особенно важен, так как применяется к каждому data-пакету, делая их размеры случайными. Например, S4 = 16 добавит 16 случайных байт к каждому транспортному пакету.

Диапазоны заголовков — вместо фиксированных значений H1-H4 теперь можно задавать диапазоны. Например, H1 = 471800590-471800690 даёт 101 возможное значение. При отправке каждого пакета выбирается случайное значение из диапазона, что делает заголовки непредсказуемыми. Важно, чтобы диапазоны H1-H4 не пересекались, иначе невозможно будет определить тип пакета.

CPS — язык маскировки трафика

CPS (Custom Protocol Signature) — это формат для описания signature packets. Он позволяет создавать "поддельные" пакеты, которые имитируют начало легитимных протоколов. CPS использует теги:

  • ** — вставляет точные байты (например, магические байты протокола).
  • `` — добавляет Unix timestamp (4 байта).
  • `` — добавляет N случайных байт.
  • `` — добавляет N случайных букв/цифр [A-Za-z].
  • `` — добавляет N случайных цифр [0-9].

Пример сигнатуры DNS: i1 = **. Здесь ** — начало DNS-запроса, ` — временная метка, ` — 15 случайных байт.

CPS позволяет создавать сигнатуры для любых UDP-протоколов. Главное — чтобы первые байты пакета совпадали с ожидаемыми DPI-системой. Например, для QUIC это 0xc700000001, для DNS — 0x1a2d (Transaction ID) и т.д.

Важно: примеры сигнатур в документации не являются готовыми для использования — их нужно адаптировать под конкретный протокол и проверять.

Нововведения AmneziaWG 3.1: защита от поведенческого анализа

Версия 3.1 появилась после массовых блокировок в России в 2026 году, когда стало ясно, что одной маскировки отдельных признаков недостаточно. DPI-системы начали анализировать поведение соединения: размеры пакетов, интервалы между ними, последовательность. AmneziaWG 3.1 добавляет механизмы, которые делают поведение каждой сессии уникальным.

Header Protection — скрывает незашифрованные служебные части WireGuard-пакетов (Init, Response, Cookie, Data) с помощью шифрования ChaCha20. Nonce берётся из первых 12 байт префикса S1-S4, а ключ задаётся параметром HeaderProtectionKey. При использовании этой функции рекомендуется оставлять H1-H4 стандартными (1, 2, 3, 4), так как скрытие типа сообщения выполняет Header Protection.

Content Padding — добавляет случайное количество байт к транспортным данным в заданном диапазоне. Это скрывает повторяющийся паттерн дополнения до размера, кратного 16 байтам.

Настраиваемые тайминги — WireGuard использует фиксированные интервалы для повторного handshake, keepalive и таймаутов. В 3.1 эти значения можно задавать диапазонами, и протокол выбирает случайное значение из диапазона при каждом событии.

Random Trailers — добавляет случайные байты в конец пакетов. Для handshake-пакетов — случайные данные, для transport-пакетов — нули в конец внутреннего IP-пакета. Размер trailer выбирается с учётом текущего UDP-окна, чтобы не нарушать MTU.

Отключение Cookie Reply — механизм Cookie Reply используется для защиты от DoS-атак, но его поведение может быть fingerprint. Параметр DisableCookies отключает отправку Cookie Reply, сохраняя обработку входящих cookie-сообщений.

Как настроить AmneziaWG на своём сервере

Для использования AmneziaWG 2.0 на собственном сервере достаточно скачать или обновить приложение AmneziaVPN до версии 4.8.12.9 и выше, затем заново установить протокол. Дополнительная настройка не требуется — все параметры обфускации заполняются автоматически.

Для AmneziaWG 3.1 потребуется более свежая версия приложения. Подробные инструкции доступны в официальной документации Amnezia. Также можно использовать отдельное приложение AmneziaWG для Android, которое позволяет импортировать конфигурации из файлов или QR-кодов.

При настройке важно учитывать:

  • Диапазоны H1-H4 не должны пересекаться.
  • При использовании Header Protection значения S1-S4 должны быть не меньше 12 байт, а HeaderProtectionKey должен быть задан.
  • При использовании RandomTrailers рекомендуется задавать одинаковые значения S1-S4, чтобы снизить риск неправильного определения типа пакета.

Для генерации конфигураций можно использовать встроенные инструменты AmneziaVPN или сторонние генераторы, например, для Cloudflare WARP. Однако стоит помнить, что WARP не скрывает местоположение, а только подменяет IP-адрес.

Практические примеры конфигураций

Пример конфигурации для AmneziaWG 2.0 с имитацией DNS:

i1 = **
S1 = 68
S2 = 149
S3 = 32
S4 = 16
H1 = 471800590-471800690
H2 = 1246894907-1246895000
H3 = 923637689-923637690
H4 = 1769581055-1869581055

Пример для имитации QUIC:

i1 = **
S1 = 68
S2 = 149
S3 = 32
S4 = 16
H1 = 471800590-471800690
H2 = 1246894907-1246895000
H3 = 923637689-923637690
H4 = 1769581055-1869581055

Важно: эти примеры приведены для иллюстрации синтаксиса и не являются готовыми сигнатурами. Рекомендуется использовать сигнатуры из официальной документации или проверенные сообществом.

Для AmneziaWG 3.1 добавляются параметры HeaderProtectionKey, ContentPaddingAddition, RandomTrailers и настраиваемые тайминги. Например:

HeaderProtectionKey = <ключ>
S1 = 16
S2 = 16
S3 = 16
S4 = 16
ContentPaddingAddition = 0-32
RandomTrailers = 0-16

Совместимость и ограничения

AmneziaWG сохраняет обратную совместимость с WireGuard: если параметры обфускации отключены (значения по умолчанию), протокол работает как стандартный WireGuard. Это позволяет использовать одни и те же конфигурации на разных устройствах.

Однако есть ограничения:

  • AmneziaWG работает только поверх UDP, что может быть проблемой в сетях, где UDP блокируется.
  • Некоторые параметры, такие как S4, увеличивают размер пакетов, что может снижать скорость при слабом соединении.
  • Использование сложных сигнатур CPS требует понимания структуры протоколов, которые вы имитируете.
  • Версия 3.1 пока доступна только для self-hosted пользователей; для Free и Premium используется AWG 1.5.

Также стоит учитывать, что AmneziaWG не проходил независимый аудит безопасности, поэтому при использовании модифицированных версий приложений (например, с встроенным генератором WARP) есть риск, что автор мода добавил вредоносный код. Рекомендуется использовать только официальные версии из Google Play или GitHub.

Как выбрать между AmneziaWG и другими протоколами

AmneziaWG — не единственный протокол с обфускацией. Существуют OpenVPN over Cloak, XRay, Shadowsocks и другие. Выбор зависит от конкретных условий:

  • Если DPI в вашей сети простой (сигнатурный), достаточно AmneziaWG 1.5.
  • Если DPI использует статистический анализ, нужен AmneziaWG 2.0 или 3.1.
  • Если UDP блокируется, возможно, стоит рассмотреть XRay с WebSocket или OpenVPN over Cloak.

AmneziaWG отличается высокой производительностью и низким энергопотреблением, что делает его хорошим выбором для мобильных устройств и роутеров. Он поддерживается на всех основных платформах, включая Android, iOS, Windows, macOS, Linux, а также на роутерах Keenetic и OpenWrt.

Для пользователей, которые не хотят самостоятельно настраивать сервер, доступны сервисы Amnezia Free и Premium, но они пока используют AWG 1.5. Для максимальной защиты от DPI рекомендуется развернуть собственный сервер с AWG 2.0 или 3.1.

Частые проблемы и их решение

При использовании AmneziaWG пользователи часто сталкиваются с проблемами:

  • Не работает WARP на Android TV — возможно, Cloudflare заблокирован в вашем регионе. Попробуйте сгенерировать новые конфиги или использовать другие протоколы (например, ProtonVPN).
  • Приложение не подключается — проверьте, что конфигурация корректна, и что параметры H1-H4 не пересекаются. Также убедитесь, что версия приложения поддерживает используемую версию протокола.
  • Ошибка установки на Windows — может потребоваться установка библиотек MSVCP140.dll или MSVCP141.dll.
  • Проблемы с импортом конфигов на Android TV — используйте файловый менеджер или импортируйте через QR-код.

Если конфиг не работает, попробуйте:

  • Сгенерировать новый конфиг.
  • Изменить параметры обфускации (например, увеличить S4 или использовать другую сигнатуру).
  • Проверить, не блокирует ли провайдер UDP-трафик.

В официальной документации Amnezia есть раздел с кодами ошибок и решениями.

Вопросы и ответы

Чем AmneziaWG отличается от WireGuard?

AmneziaWG — это форк WireGuard, который добавляет обфускацию трафика. WireGuard имеет фиксированные заголовки и размеры пакетов, что позволяет DPI легко его обнаруживать. AmneziaWG изменяет заголовки, добавляет случайные байты к пакетам и может имитировать легитимные UDP-протоколы, сохраняя при этом производительность и безопасность оригинала.

Что такое CPS и как его использовать?

CPS (Custom Protocol Signature) — это язык для описания signature packets, которые имитируют начало легитимных протоколов. Он использует теги **, `, , , . Например, i1 = **` создаёт пакет, похожий на QUIC. CPS позволяет настраивать до пяти таких пакетов (i1-i5) перед каждым handshake.

Какие версии AmneziaWG существуют и чем они отличаются?

Существуют версии 1.0, 1.5, 2.0 и 3.1. Версия 1.0 добавляла базовую обфускацию (мусорные пакеты, padding, фиксированные заголовки). Версия 1.5 улучшила маскировку под UDP-протоколы. Версия 2.0 добавила signature packets, диапазоны заголовков и padding для всех типов пакетов. Версия 3.1 добавила защиту от поведенческого анализа: Header Protection, Content Padding, настраиваемые тайминги и Random Trailers.

Как установить AmneziaWG на свой сервер?

Для AmneziaWG 2.0 достаточно скачать AmneziaVPN версии 4.8.12.9 или выше, установить протокол на сервер и подключиться. Для AmneziaWG 3.1 нужна более свежая версия. Подробные инструкции есть в официальной документации Amnezia. Также можно использовать отдельное приложение AmneziaWG для Android.

Безопасен ли AmneziaWG?

AmneziaWG использует криптографическое ядро WireGuard (ChaCha20-Poly1305), которое считается безопасным. Однако сам протокол не проходил независимый аудит. При использовании модифицированных версий приложений есть риск вредоносного кода, поэтому рекомендуется использовать официальные версии.

Почему AmneziaWG может не работать в моей сети?

Возможные причины: блокировка UDP-трафика, устаревшая версия приложения, неправильная конфигурация (пересекающиеся H1-H4, некорректные сигнатуры), блокировка Cloudflare в регионе. Попробуйте обновить приложение, сгенерировать новые конфиги или использовать другой протокол.

Можно ли использовать AmneziaWG на роутере?

Да, AmneziaWG поддерживается на роутерах Keenetic и OpenWrt. Для установки следуйте инструкциям в документации Amnezia. Это позволяет защитить все устройства в сети, включая Smart TV и игровые консоли.