AmneziaWG VPN: как работает маскировка трафика и защита от DPI

Разбираем протокол AmneziaWG: отличия от WireGuard, механизмы обфускации, версии 1.5, 2.0 и 3.1, настройка self-hosted VPN и ответы на частые вопросы.

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

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

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

Протокол активно используется в странах с высоким уровнем интернет-цензуры, включая Россию, где DPI-системы постоянно совершенствуются. AmneziaWG доступен как в коммерческих сервисах Amnezia Premium и Amnezia Free, так и для самостоятельного развертывания на собственном сервере (self-hosted).

Эволюция версий: от 1.0 до 3.1

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

Версия 1.5 добавила возможность маскировать трафик под популярные UDP-протоколы, такие как QUIC и DNS. Это стало шагом вперед, но все еще оставались уязвимости: фиксированные заголовки и предсказуемые размеры data-пакетов.

Версия 2.0, выпущенная в 2025 году, представила концепцию «мимикрии»: теперь трафик может полностью имитировать легитимный протокол не только в момент установки соединения, но и во время передачи данных. Были добавлены signature packets (i1-i5), расширенный padding (S3, S4) и динамические диапазоны заголовков (H1-H4).

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

Как AmneziaWG маскирует трафик: основные механизмы

AmneziaWG использует несколько уровней обфускации, которые работают вместе, чтобы сделать трафик невидимым для DPI.

Динамические заголовки (H1-H4)

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

Важно: диапазоны H1-H4 не должны пересекаться, иначе невозможно будет определить тип пакета.

Рандомизация размеров пакетов (S1-S4)

Стандартные размеры пакетов WireGuard: Init — 148 байт, Response — 92 байта, Cookie — 64 байта, Data — переменный размер. AmneziaWG добавляет к каждому пакету случайное количество байт (padding): S1 для Init, S2 для Response, S3 для Cookie, S4 для Data. Это скрывает характерные размеры и сдвигает служебные поля глубже внутрь пакета.

Signature packets (i1-i5) и CPS

Перед каждым handshake (который происходит раз в 2 минуты) клиент может отправить до пяти специальных пакетов, которые имитируют начало легитимного протокола. Эти пакеты описываются на языке CPS (Custom Protocol Signature), который позволяет задавать точные байты, случайные данные, временные метки и другие элементы. Например, можно создать пакет, который выглядит как начало QUIC-соединения или DNS-запроса.

Junk-пакеты (Jc)

Сразу после signature packets отправляется Jc псевдослучайных пакетов длиной от Jmin до Jmax. Они размывают начало сессии во времени и по размерам, затрудняя определение handshake.

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

CPS (Custom Protocol Signature) — это формат описания signature-пакетов, которые отправляются перед handshake. Он позволяет создавать «поддельные» пакеты, неотличимые от реальных протоколов.

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

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

Пример сигнатуры QUIC:

i1 = **

Здесь ** — начало QUIC Initial packet (тип 0xc7, версия 1), ` — 8 случайных символов для Connection ID, — временная метка, ` — 50 случайных байт payload. DPI видит характерные байты QUIC и пропускает трафик.

CPS позволяет имитировать не только QUIC, но и DNS, SIP и другие UDP-протоколы. Главное — правильно подобрать сигнатуру, чтобы она соответствовала реальному протоколу.

Нововведения версии 2.0: от маскировки к мимикрии

Версия 2.0 AmneziaWG представила несколько ключевых улучшений, которые сделали протокол значительно более устойчивым к DPI.

Signature packets (i1-i5)

Это главное нововведение. Перед каждым handshake клиент отправляет до пяти пакетов, которые имитируют начало легитимного протокола. Например, если настроить i1 как DNS-запрос, DPI увидит DNS-трафик и пропустит его. Пакеты отправляются в порядке i1, i2, i3, i4, i5, но можно настроить только некоторые из них.

Расширенный padding (S3, S4)

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

Динамические диапазоны заголовков (H1-H4)

В версии 1.0 заголовки заменялись на фиксированные значения, которые DPI мог запомнить. Версия 2.0 позволяет задавать диапазоны значений, из которых случайно выбирается значение для каждого пакета. Это делает заголовки уникальными для каждого пакета, что практически исключает их детекцию по сигнатуре.

Порядок отправки пакетов

При установке соединения сначала отправляются signature packets (если настроены), затем junk-пакеты, затем handshake с padding и динамическими заголовками. После этого data-пакеты отправляются с S4 padding и H4 заголовками.

Версия 3.1: защита от статистического анализа

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

Header Protection

Этот механизм дополнительно скрывает незашифрованные служебные части пакетов WireGuard, которые могут использоваться как статические признаки. Для обфускации используется ChaCha20, ключ задается параметром HeaderProtectionKey. При использовании Header Protection рекомендуется оставлять H1-H4 в стандартных значениях (1, 2, 3, 4), так как скрытие типа сообщения выполняет сам механизм.

Content Padding

WireGuard дополняет транспортные данные до размера, кратного 16 байтам, что создает повторяющийся паттерн. Параметр ContentPaddingAddition добавляет случайное количество байтов в заданном диапазоне, нарушая эту закономерность.

Настраиваемые тайминги

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

Random Trailers

Добавляет случайное количество байтов в конец пакетов, что еще больше рандомизирует их размеры. Для handshake-пакетов добавляются случайные данные, для transport-пакетов — нули в конец внутреннего IP-пакета.

Отключение Cookie Reply

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

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

Для развертывания AmneziaWG на собственном сервере (self-hosted) необходимо:

  1. Приобрести VPS у любого хостинг-провайдера. Amnezia не предоставляет серверы, но есть сервис Amnezia Hosting для упрощения настройки.
  2. Скачать и установить приложение AmneziaVPN с официального сайта или зеркала. Для поддержки AmneziaWG 2.0 требуется версия 4.8.12.9 и выше.
  3. В приложении добавить свой сервер, указав IP-адрес, SSH-доступ и другие параметры.
  4. Выбрать протокол AmneziaWG. Приложение автоматически установит и настроит его на сервере.
  5. Подключиться к VPN.

Дополнительная настройка не требуется — все параметры маскировки заполняются автоматически. Однако опытные пользователи могут вручную редактировать конфигурацию, задавая сигнатуры CPS, диапазоны заголовков и другие параметры.

Важно: для работы в странах с жесткой цензурой рекомендуется включить KillSwitch, AmneziaDNS и использовать раздельное туннелирование (Split-tunneling) для оптимизации трафика.

Сравнение AmneziaWG с другими протоколами

AmneziaWG часто сравнивают с другими протоколами, используемыми для обхода блокировок.

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

OpenVPN — более старый протокол, поддерживает множество шифров, но медленнее и сложнее в настройке. AmneziaWG быстрее и проще.

XRay (VLESS Reality) — современный протокол, который маскирует трафик под TLS. Он также эффективен против DPI, но использует другой подход. AmneziaWG имитирует UDP-протоколы, XRay — TCP/TLS.

ShadowSocks — простой прокси-протокол, но его сигнатуры известны DPI. AmneziaWG более устойчив.

Выбор протокола зависит от конкретных условий: типа блокировок, доступных портов и требуемой скорости. AmneziaVPN поддерживает все эти протоколы, позволяя переключаться между ними.

Ограничения и рекомендации по использованию

Несмотря на высокую эффективность, AmneziaWG не является абсолютной защитой. DPI-системы постоянно развиваются, и некоторые механизмы могут быть скомпрометированы.

Ограничения:

  • Диапазоны H1-H4 не должны пересекаться, иначе протокол не сможет корректно обрабатывать пакеты.
  • При использовании Header Protection значения S1-S4 должны быть не меньше 12 байт, а HeaderProtectionKey должен быть задан.
  • Signature packets (i1-i5) отправляются только перед handshake, который происходит раз в 2 минуты. Если DPI анализирует весь поток, а не только начало, это может быть недостаточно.
  • Некоторые механизмы (например, RandomTrailers) могут увеличивать нагрузку на сеть и снижать скорость.

Рекомендации:

  • Используйте последнюю версию AmneziaWG (3.1), так как она включает защиту от новейших методов анализа.
  • Комбинируйте AmneziaWG с другими инструментами: KillSwitch, AmneziaDNS, раздельное туннелирование.
  • Регулярно обновляйте приложение AmneziaVPN, чтобы получать новые функции и исправления.
  • Если AmneziaWG перестает работать, попробуйте сменить сигнатуру CPS или переключиться на другой протокол, например XRay.

Безопасность и приватность Amnezia

Amnezia уделяет большое внимание безопасности и приватности. Протокол AmneziaWG прошел независимые аудиты безопасности в 2022, 2024 и 2025 годах, проведенные компанией 7ASecurity. Исходный код доступен на GitHub, что позволяет любому проверить его.

При использовании self-hosted VPN через приложение AmneziaVPN данные о пользователе и сервере не собираются. Все данные, вносимые при подключении, хранятся локально на устройстве. При использовании коммерческих сервисов Amnezia Free и Premium собираются только данные, необходимые для работы VPN.

Криптографическое ядро AmneziaWG основано на WireGuard и использует однопроходный AEAD-алгоритм ChaCha20-Poly1305 с SIMD-оптимизацией, что обеспечивает высокую производительность и безопасность. Код на Go исполняется в пользовательском пространстве, что делает протокол энергоэффективным и подходящим для мобильных устройств и роутеров.

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

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

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

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

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

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

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

Что такое CPS и как создать свою сигнатуру?

CPS (Custom Protocol Signature) — это формат описания signature-пакетов, которые имитируют легитимные протоколы. Он использует теги: ** для точных байт, ` для временной метки, для случайных байт, для случайных букв/цифр, для случайных цифр. Пример сигнатуры QUIC: i1 = **`.

Почему AmneziaWG 3.1 считается более устойчивым к DPI?

Версия 3.1 добавляет механизмы против статистического анализа: Header Protection скрывает служебные части пакетов, Content Padding нарушает паттерны размеров, настраиваемые тайминги делают поведение сессий менее предсказуемым, Random Trailers рандомизируют размеры, а отключение Cookie Reply снижает fingerprinting. Это делает протокол значительно сложнее для обнаружения.

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

Диапазоны H1-H4 не должны пересекаться. При использовании Header Protection S1-S4 должны быть не меньше 12 байт. Signature packets отправляются только перед handshake, поэтому если DPI анализирует весь поток, этого может быть недостаточно. Некоторые механизмы могут снижать скорость. Также DPI постоянно развивается, поэтому абсолютной гарантии нет.

Собирает ли Amnezia данные о пользователях?

При использовании self-hosted VPN через приложение AmneziaVPN данные не собираются. Все данные, вносимые при подключении, хранятся локально. При использовании Amnezia Free и Premium собираются только данные, необходимые для работы VPN. Исходный код открыт, что позволяет проверить это.