AmneziaWG 2.0 и 3.1: как работает мимикрия трафика и что это значит для пользователей VPN

Разбираем протокол AmneziaWG: от первой версии до 3.1. Объясняем, как работает маскировка под DNS, QUIC и SIP, что такое CPS-сигнатуры, динамические заголовки и Header Protection, и как это помогает обходить DPI.

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

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

Первая версия протокола появилась в 2023 году и позволяла менять заголовки пакетов, добавлять случайные байты к handshake-сообщениям и отправлять «мусорные» пакеты перед установкой соединения. Этого хватало против простых сигнатурных DPI, но уже к 2025 году системы анализа научились распознавать такие уловки по статистическим паттернам: размерам пакетов, временным интервалам и поведению соединения в целом.

Версия 2.0, вышедшая в марте 2025 года, стала ответом на эти вызовы. Она добавила возможность имитировать легитимные UDP-протоколы — DNS, QUIC, SIP — с помощью специальных сигнатурных пакетов. А версия 3.1, появившаяся после массовых блокировок в России в июне-июле 2026 года, пошла ещё дальше: теперь протокол скрывает не только отдельные признаки, но и поведение соединения в целом.

Важно понимать: AmneziaWG — это не отдельный VPN-сервис, а протокол, который можно использовать как в приложении AmneziaVPN, так и в виде самостоятельного клиента для Windows, Android и других платформ. Для работы нужен собственный сервер (VPS), на который устанавливается серверная часть.

Почему WireGuard так легко блокируется

WireGuard — один из самых быстрых и надёжных VPN-протоколов, но у него есть фатальный недостаток: его пакеты имеют строго фиксированную структуру. Каждый пакет начинается с 4-байтового идентификатора типа: 1 — Handshake Initiation, 2 — Handshake Response, 3 — Cookie Reply, 4 — Transport Data. Эти значения никогда не меняются, что делает WireGuard лёгкой мишенью для DPI.

Кроме того, размеры handshake-пакетов всегда одинаковы: Init занимает ровно 148 байт, Response — 92 байта, Cookie — 64 байта. DPI-система может просто подсчитать размеры пакетов в потоке и, если они совпадают с известными шаблонами, заблокировать соединение. Даже если трафик зашифрован, метаданные — размеры, тайминги, последовательность — выдают протокол.

AmneziaWG решает эту проблему на нескольких уровнях. Во-первых, он позволяет заменить фиксированные заголовки на случайные значения из заданных диапазонов. Во-вторых, добавляет случайные байты (padding) к каждому пакету, делая их размеры непредсказуемыми. В-третьих, перед реальным handshake отправляет сигнатурные пакеты, которые имитируют начало легитимного протокола — например, DNS-запроса или QUIC-соединения.

В версии 3.1 добавился ещё и Header Protection — механизм, который шифрует служебные части пакетов с помощью ChaCha20, скрывая даже те поля, которые раньше оставались открытыми. Это делает протокол практически невидимым для DPI, основанных на анализе заголовков.

Signature Packets: как AmneziaWG притворяется DNS и QUIC

Ключевое нововведение AmneziaWG 2.0 — сигнатурные пакеты (i1–i5). Перед каждым handshake (который происходит раз в две минуты) клиент отправляет до пяти специальных UDP-пакетов, которые выглядят как начало обычного DNS-запроса, QUIC-соединения или SIP-звонка. DPI видит знакомый паттерн и пропускает трафик, не проверяя, что идёт дальше.

Каждый сигнатурный пакет описывается на языке CPS (Custom Protocol Signature). Это набор тегов, которые определяют, из чего собрать пакет:

  • ** — вставляет точные байты, например, магическое число протокола;
  • `` — добавляет текущий Unix timestamp (4 байта);
  • `` — добавляет N случайных байт;
  • `` — добавляет N случайных букв/цифр (для текстовых протоколов);
  • `` — добавляет N случайных цифр (для числовых полей).

Пример сигнатуры для имитации QUIC: i1 = **. Здесь ** — это начало QUIC Initial packet, ` — имитация Connection ID, — временная метка, ` — случайный payload. В результате пакет выглядит как легитимный QUIC-запрос, и DPI пропускает его.

Важно: сигнатурные пакеты отправляются только перед handshake, а не для каждого data-пакета. Это снижает нагрузку на соединение, но при этом маскирует самый уязвимый момент — установку туннеля. Если i1 не настроен, сигнатурные пакеты не отправляются вовсе, что обеспечивает обратную совместимость с версией 1.0.

Динамические заголовки H1–H4: почему статические значения больше не работают

В версии 1.0 AmneziaWG позволял заменить стандартные заголовки WireGuard (1, 2, 3, 4) на фиксированные значения через параметры H1–H4. Например, можно было задать H1 = 1234567890 для всех handshake init пакетов. Но DPI быстро запоминает такие константы и блокирует трафик снова.

Версия 2.0 ввела диапазоны значений. Теперь H1–H4 можно задавать как интервалы, например: H1 = 471800590-471800690. При отправке каждого пакета из диапазона случайно выбирается одно значение, а при приёме допускается любое значение из указанного диапазона. Это делает заголовки непредсказуемыми даже для одного и того же типа пакета.

Пример из жизни: представьте пропуск в охраняемое здание. Раньше у всех был пропуск с номером 1234567890 — охрана быстро запомнила и начала проверять. Теперь каждый раз вы получаете пропуск со случайным номером из диапазона 1000000000–1000000100. У охраны нет шансов запомнить все 101 вариант.

Важное ограничение: диапазоны H1, H2, H3 и H4 не должны пересекаться. Иначе невозможно будет понять, какой тип пакета пришёл. Например, если H1 = 1000-2000, а H2 = 1500-2500, то пакет с заголовком 1700 может быть интерпретирован и как Init, и как Response, что приведёт к ошибкам соединения.

Padding S1–S4: рандомизация размеров всех пакетов

Ещё один способ, которым DPI распознаёт WireGuard, — это фиксированные размеры пакетов. Handshake Init всегда 148 байт, Response — 92, Cookie — 64. Data-пакеты имеют переменный размер, но их распределение тоже предсказуемо. AmneziaWG добавляет к каждому типу пакета случайный префикс (padding), который меняет размер.

В версии 1.0 были доступны только S1 и S2 — для handshake-пакетов. Но handshake происходит редко (раз в 2 минуты), а основной трафик — это data-пакеты, которые оставались с предсказуемыми размерами. Версия 2.0 добавила S3 (для Cookie Reply) и S4 (для Transport Data).

S4 — самый важный параметр, потому что он применяется к каждому data-пакету. Например, S4 = 16 добавляет от 0 до 16 случайных байт к каждому пакету. Это делает размеры пакетов непредсказуемыми, что затрудняет статистический анализ.

Однако у padding есть компромисс: чем больше случайных байт, тем выше накладные расходы и ниже скорость. Поэтому параметры S1–S4 нужно настраивать с умом. Для большинства случаев рекомендуются значения от 0 до 32 байт, но точные цифры зависят от конкретной сети и требований к скорости.

CPS: язык описания сигнатур для маскировки

CPS (Custom Protocol Signature) — это формат, с помощью которого пользователь описывает, как должны выглядеть сигнатурные пакеты i1–i5. По сути, это конструктор для создания «поддельных» пакетов, которые имитируют легитимные протоколы.

Основные теги CPS:

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

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

CPS позволяет создавать сигнатуры для любых UDP-протоколов: DNS, QUIC, SIP, NTP и других. Главное — правильно подобрать магические байты и структуру пакета. Для популярных протоколов готовые сигнатуры можно найти в документации Amnezia или в сообществе.

Важно: сигнатурные пакеты отправляются только перед handshake, а не для каждого data-пакета. Это снижает нагрузку на соединение, но при этом маскирует самый уязвимый момент — установку туннеля. Если i1 не настроен, сигнатурные пакеты не отправляются вовсе, что обеспечивает обратную совместимость с версией 1.0.

Header Protection в версии 3.1: скрытие служебных данных

Версия 3.1 AmneziaWG, выпущенная после массовых блокировок в России в 2026 году, добавила механизм Header Protection. Он шифрует незашифрованные служебные части WireGuard-пакетов, которые могут использоваться как статические признаки протокола.

Для шифрования используется ChaCha20. Nonce берётся из первых 12 байт соответствующего префикса S1–S4, а ключ задаётся параметром HeaderProtectionKey. Это скрывает такие поля, как тип пакета, версия и зарезервированные биты, которые раньше были открыты.

При использовании Header Protection рекомендуется оставлять H1–H4 в стандартных значениях (H1 = 1, H2 = 2, H3 = 3, H4 = 4), потому что механизм пользовательских заголовков отключается. Вместо этого скрытие типа сообщения выполняет Header Protection.

Header Protection применяется к следующим частям пакетов после Sx: Init — 148 байт, Response — 92 байта, Cookie — 64 байта, Data — 16 байт. Это делает пакеты невидимыми для DPI, которые анализируют заголовки, но при этом сохраняет производительность WireGuard.

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

Для использования AmneziaWG нужен собственный VPS-сервер. Процесс установки описан в документации Amnezia и включает несколько шагов.

  1. Выбор VPS: подойдёт любой сервер с Ubuntu или Debian, минимальные требования — 1 ГБ RAM и 10 ГБ диска. Важно, чтобы провайдер не блокировал VPN-трафик.
  1. Установка AmneziaVPN: скачайте приложение AmneziaVPN с официального сайта или зеркала (версия 4.8.12.9 и выше для поддержки AWG 2.0). Установите его на компьютер или Android-устройство.
  1. Добавление сервера: в приложении укажите IP-адрес вашего VPS, логин и пароль (или SSH-ключ). AmneziaVPN автоматически установит все необходимые компоненты, включая AmneziaWG.
  1. Выбор протокола: в настройках сервера выберите AmneziaWG. Приложение автоматически сгенерирует конфигурацию с параметрами маскировки.
  1. Настройка сигнатур: если вы хотите использовать собственные CPS-сигнатуры, отредактируйте конфигурацию вручную. Например, добавьте параметры i1–i5 и H1–H4.
  1. Подключение: после сохранения конфигурации нажмите «Подключить». Если всё настроено правильно, статус изменится на «Подключен».

Для пользователей, которые не хотят возиться с настройкой, AmneziaVPN предлагает готовые конфигурации для Free и Premium. Однако в них используется версия AWG 1.5, а поддержка 2.0 и 3.1 появится позже.

AmneziaWG на Windows и Android: клиенты и особенности

AmneziaWG доступен не только через AmneziaVPN, но и как отдельное приложение. Например, для Windows есть клиент AmneziaWG, который можно скачать с GitHub. Он позволяет импортировать конфигурации вручную и подключаться к серверу.

Для Android также существует приложение AmneziaWG, которое работает аналогично. Оно поддерживает импорт конфигураций через файл, текст или QR-код.

Основные шаги для Windows:

  1. Скачайте установщик с GitHub (репозиторий amnezia-vpn/amneziawg-windows-client).
  2. Установите приложение и запустите его.
  3. Нажмите «Добавить туннель» и импортируйте конфигурацию.
  4. Нажмите «Подключить» — статус должен измениться на «Подключен».

Для Android процесс аналогичен: установите APK, добавьте конфигурацию и подключитесь.

Важно: отдельные клиенты AmneziaWG могут не поддерживать все функции версии 3.1, такие как Header Protection. Для полной функциональности рекомендуется использовать AmneziaVPN.

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

Несмотря на все преимущества, у AmneziaWG есть ограничения.

Совместимость с WireGuard: если отключить все параметры маскировки (H1–H4, S1–S4, i1–i5), конфигурация AmneziaWG полностью совместима с оригинальным WireGuard. Это позволяет использовать одни и те же ключи для обоих протоколов.

Пересечение диапазонов H1–H4: диапазоны не должны пересекаться, иначе протокол не сможет корректно определить тип пакета. Это критическое ограничение, которое нужно учитывать при настройке.

Производительность: добавление padding и сигнатурных пакетов увеличивает накладные расходы. Для большинства случаев это незаметно, но на медленных соединениях может снизить скорость.

Версии протокола: AmneziaVPN Free и Premium пока используют AWG 1.5, а поддержка 2.0 и 3.1 доступна только для self-hosted пользователей. Это значит, что пользователи бесплатных серверов не получат все новые функции.

Блокировки: даже с AmneziaWG 3.1 нет 100% гарантии, что трафик не будет заблокирован. DPI-системы постоянно развиваются, и возможно, что в будущем появятся новые методы детекции.

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

Чем AmneziaWG отличается от обычного WireGuard?

AmneziaWG — это форк WireGuard, который добавляет несколько уровней обфускации: динамические заголовки (H1–H4), случайный padding (S1–S4), сигнатурные пакеты (i1–i5) и Header Protection. Это делает трафик невидимым для DPI, в то время как обычный WireGuard легко блокируется из-за фиксированных заголовков и размеров пакетов.

Как работает маскировка под DNS или QUIC?

Перед каждым handshake (раз в 2 минуты) клиент отправляет до пяти сигнатурных пакетов, которые имитируют начало легитимного протокола — например, DNS-запроса или QUIC-соединения. Эти пакеты описываются на языке CPS и содержат магические байты, временные метки и случайные данные. DPI видит знакомый паттерн и пропускает трафик.

Нужен ли свой сервер для использования AmneziaWG?

Да, для AmneziaWG нужен собственный VPS-сервер. Вы можете установить AmneziaVPN на сервер, и он автоматически настроит AmneziaWG. Альтернативно можно использовать отдельные клиенты AmneziaWG для Windows или Android, но для них всё равно потребуется серверная часть.

Какие версии AmneziaWG сейчас актуальны?

Актуальные версии: 1.5 (используется в AmneziaVPN Free и Premium), 2.0 (доступна для self-hosted, добавляет сигнатурные пакеты и динамические заголовки) и 3.1 (вышла в 2026 году, добавляет Header Protection и защиту от поведенческого анализа). Рекомендуется использовать последнюю версию для максимальной защиты.

Можно ли использовать AmneziaWG с обычным WireGuard-клиентом?

Нет, обычный WireGuard-клиент не поддерживает обфускацию AmneziaWG. Однако если отключить все параметры маскировки, конфигурация AmneziaWG становится совместимой с WireGuard. Для полной функциональности используйте клиент AmneziaVPN или отдельное приложение AmneziaWG.

Какие ограничения у AmneziaWG?

Основные ограничения: диапазоны H1–H4 не должны пересекаться, добавление padding увеличивает накладные расходы, а версии Free/Premium пока не поддерживают AWG 2.0 и 3.1. Кроме того, нет 100% гарантии защиты от DPI — системы анализа постоянно развиваются.

Как настроить собственные сигнатуры CPS?

Сигнатуры CPS задаются в конфигурации через параметры i1–i5. Каждый параметр описывается с помощью тегов: ** для точных байт, ` для временной метки, для случайных байт, для букв/цифр, для цифр. Пример: i1 = **` имитирует QUIC-пакет.