Что такое AmneziaWG и зачем он нужен
AmneziaWG — это форк популярного протокола WireGuard, разработанный для обхода систем глубокого анализа трафика (DPI). В отличие от оригинального WireGuard, который имеет фиксированные заголовки пакетов и предсказуемые размеры, AmneziaWG модифицирует эти параметры, делая трафик неотличимым от легитимных UDP-протоколов, таких как DNS, QUIC или SIP.
Основная проблема WireGuard в том, что его пакеты легко идентифицируются DPI-системами по статическим сигнатурам: размер handshake-пакета (148 байт), фиксированные 4-байтовые идентификаторы типа (Type=1,2,3,4) и регулярные интервалы переподключения. AmneziaWG решает эту проблему, добавляя случайные префиксы, динамические заголовки и цепочки маскировочных пакетов перед каждым рукопожатием.
Протокол доступен в нескольких версиях: 1.5 (базовая маскировка), 2.0 (полная мимикрия с CPS) и 3.1 (защита от поведенческого анализа). Все версии сохраняют криптографическое ядро WireGuard (ChaCha20-Poly1305) и высокую производительность.
Эволюция версий: от маскировки к мимикрии
Первая версия AmneziaWG (1.0) умела отправлять мусорные пакеты перед handshake (параметры Jc, Jmin, Jmax), изменять размеры handshake-пакетов через padding (S1, S2) и заменять стандартные заголовки на фиксированные значения (H1-H4). Этого было достаточно против простых signature-based DPI.
Версия 1.5 добавила возможность маскировать трафик под популярные UDP-протоколы, но всё ещё использовала статические заголовки. Версия 2.0, выпущенная в 2025 году, стала революционным шагом: она ввела динамические диапазоны для заголовков (H1-H4 теперь выбираются случайно из заданного интервала), расширенный padding для всех типов пакетов (S3 для Cookie Reply и S4 для Transport Data) и, самое главное, систему CPS (Custom Protocol Signature) для создания поддельных пакетов, имитирующих начало легитимных протоколов.
Версия 3.1, появившаяся в 2026 году как ответ на массовые блокировки, добавила защиту от поведенческого анализа: меняются не только заголовки и размеры, но и последовательность, интервалы между пакетами, а также часть служебных данных. Также был введён механизм Header Protection, который шифрует незашифрованные служебные части пакетов с помощью ChaCha20.
Как работает CPS: язык создания сигнатур
CPS (Custom Protocol Signature) — это специальный формат для описания поддельных пакетов, которые отправляются перед каждым настоящим WireGuard handshake. DPI-система видит начало пакета, распознаёт в нём, например, DNS-запрос, и пропускает трафик, не проверяя, что идёт дальше.
Формат CPS состоит из тегов:
**— вставляет точные байты (скелет сигнатуры, магические байты протокола).- `` — вставляет текущий Unix timestamp (4 байта), что делает каждый пакет уникальным.
- `` — вставляет N криптостойких случайных байт (до 1000).
- `` — вставляет N случайных букв латинского алфавита (A-Z, a-z), полезно для имитации текстовых протоколов.
- `` — вставляет N случайных цифр (0-9), полезно для имитации числовых полей.
Пример сигнатуры, имитирующей QUIC Initial packet:
i1 = **Здесь ** — это начало QUIC Initial handshake, ` — 8 случайных букв (имитация Connection ID), — метка времени, ` — 50 случайных байт payload. DPI видит это как начало QUIC-соединения и пропускает.
Можно настроить до 5 таких пакетов (i1-i5), которые отправляются последовательно перед каждым handshake (раз в 2 минуты). Если i1 не настроен, CPS-пакеты не отправляются.
Динамические заголовки и расширенный padding
В WireGuard каждый пакет начинается с 4-байтового идентификатора типа. AmneziaWG 2.0 позволяет задавать для каждого типа пакета не фиксированное значение, а диапазон. Например:
H1 = 471800590-471800690 # 101 возможный вариант для Handshake Init
H4 = 1769581055-1869581055 # 100 миллионов вариантов для DataПри отправке каждого пакета из диапазона выбирается случайное значение, при приёме допускается любое значение из диапазона. Это делает заголовки непредсказуемыми даже для одного и того же типа пакета. Важно: диапазоны H1-H4 не должны пересекаться, иначе невозможно будет определить тип пакета.
Расширенный padding добавляет случайные байты к пакетам:
- S1 — к Handshake Init (было в 1.0)
- S2 — к Handshake Response (было в 1.0)
- S3 — к Cookie Reply (новое в 2.0, применяется только когда сервер под нагрузкой)
- S4 — к Transport Data (новое в 2.0, применяется ко всем data-пакетам постоянно)
Например, стандартный Data-пакет WireGuard имеет размер payload + 16 байт заголовка. С S4=16 к каждому data-пакету добавляется 16 случайных байт, что делает размеры пакетов непредсказуемыми.
Полный порядок отправки пакетов в AmneziaWG 2.0
При установке соединения последовательность выглядит так:
- Если настроены, отправляются CPS-пакеты i1 → i2 → i3 → i4 → i5 (до 5 пакетов, имитирующих легитимный протокол).
- Отправляется Jc мусорных пакетов (junk train) длиной от Jmin до Jmax — они размывают начало сессии.
- Отправляется Handshake Init: [S1 padding | H1(random) 4 bytes | Handshake Initiation 144 bytes].
- Сервер отвечает Handshake Response: [S2 padding | H2(random) 4 bytes | Handshake Response 88 bytes].
- Если сервер под нагрузкой, может отправить Cookie Reply: [S3 padding | H3(random) 4 bytes | Cookie Reply 60 bytes].
- Весь последующий data-трафик: [S4 padding | H4(random) 4 bytes | Transport Data payload].
Ключевые моменты:
- CPS-пакеты отправляются только если настроены.
- Junk packets отправляются всегда перед handshake.
- S1/S2 применяются только к handshake-пакетам.
- S3 применяется редко (только под нагрузкой).
- S4 применяется к каждому data-пакету — это основной механизм маскировки постоянного трафика.
- H1-H4 с диапазонами делают каждый пакет уникальным.
AmneziaWG 3.1: защита от поведенческого анализа
Версия 3.1 появилась как ответ на массовые блокировки в России в июне-июле 2026 года, которые показали, что одной маскировки отдельных признаков трафика уже недостаточно. DPI-системы начали использовать поведенческий анализ: они анализируют не только заголовки и размеры пакетов, но и последовательность, интервалы между пакетами, cookie-поведение и другие статистические паттерны.
Основные нововведения 3.1:
- Header Protection — шифрование незашифрованных служебных частей WireGuard-пакетов с помощью ChaCha20. Nonce берётся из первых 12 байт соответствующего префикса S1-S4, а ключ задаётся параметром HeaderProtectionKey. При использовании этого механизма рекомендуется оставлять H1-H4 в стандартных значениях (H1=1, H2=2, H3=3, H4=4), так как скрытие типа сообщения теперь выполняет Header Protection.
- Изменение таймингов — интервалы между служебными событиями (handshake, cookie reply) варьируются, что делает поведение разных сессий менее повторяемым.
- Скрытие cookie-поведения — WireGuard имеет характерное поведение при отправке cookie reply, которое может использоваться для активного зондирования. В 3.1 это поведение маскируется.
Важно: криптографическое ядро WireGuard остаётся неизменным, сохраняя производительность и безопасность.
Как настроить AmneziaWG на собственном сервере
Для использования AmneziaWG 2.0 на собственном сервере (self-hosted) необходимо:
- Скачать или обновить приложение AmneziaVPN до версии 4.8.12.9 и выше (доступно на официальном сайте или зеркалах).
- Установить протокол AmneziaWG 2.0 через приложение — дополнительная настройка не требуется, все параметры заполняются автоматически.
- Для тонкой настройки можно отредактировать конфигурацию вручную, указав параметры H1-H4, S1-S4, i1-i5 и Jc/Jmin/Jmax.
Для Windows существует отдельное приложение AmneziaWG Client, доступное на GitHub. После установки нужно добавить туннель (импортировать конфигурацию) и нажать "Подключить".
Важные ограничения:
- Диапазоны H1-H4 не должны пересекаться.
- CPS-пакеты (i1-i5) должны быть корректно составлены — неправильная сигнатура может не пройти DPI или вызвать ошибки.
- S4 padding увеличивает объём трафика, что может незначительно снизить скорость (компромисс между маскировкой и производительностью).
- Версия 3.1 пока доступна только для self-hosted пользователей; поддержка в Free и Premium версиях будет добавлена позже.
Практические примеры конфигураций
Пример конфигурации для имитации DNS-трафика:
i1 = **Здесь ** — это начало DNS-запроса (Transaction ID, флаги, вопросы). ` добавляет уникальную метку времени, ` — 15 случайных байт для имитации остальной части запроса.
Пример конфигурации с диапазонами заголовков и padding:
H1 = 471800590-471800690
H2 = 1246894907-1246895000
H3 = 923637689-923637690
H4 = 1769581055-1869581055
S1 = 68
S2 = 149
S3 = 32
S4 = 16
Jc = 5
Jmin = 50
Jmax = 100Для версии 3.1 с Header Protection:
H1 = 1
H2 = 2
H3 = 3
H4 = 4
HeaderProtectionKey = <32-байтовый ключ в hex>
S1 = 32
S2 = 32
S3 = 16
S4 = 8Важно: не используйте примеры сигнатур из документации напрямую — они могут быть уже известны DPI-системам. Рекомендуется создавать собственные сигнатуры на основе реального трафика легитимных протоколов.
Ограничения и рекомендации
AmneziaWG — мощный инструмент, но он не даёт 100% гарантии обхода блокировок. DPI-системы постоянно эволюционируют, и то, что работает сегодня, может быть заблокировано завтра.
Основные ограничения:
- CPS-пакеты добавляют задержку при установке соединения (до 5 дополнительных пакетов перед handshake).
- S4 padding увеличивает объём трафика на 8-64 байта на каждый data-пакет, что может быть заметно при большом объёме передачи.
- Неправильно настроенные диапазоны H1-H4 (пересечение) приведут к неработоспособности туннеля.
- Header Protection в 3.1 требует генерации и безопасного хранения ключа.
Рекомендации:
- Используйте разные сигнатуры для разных серверов, чтобы DPI не могла создать универсальное правило.
- Регулярно обновляйте приложение AmneziaVPN до последней версии.
- Комбинируйте AmneziaWG с другими методами обфускации (например, XRay) для повышения надёжности.
- Для максимальной защиты используйте версию 3.1 с Header Protection и динамическими таймингами.
Вопросы и ответы
Чем AmneziaWG отличается от обычного WireGuard?
WireGuard имеет фиксированные заголовки пакетов (4 байта типа) и предсказуемые размеры (handshake 148 байт, response 92 байта и т.д.), что позволяет DPI-системам легко его идентифицировать. AmneziaWG модифицирует эти параметры: добавляет случайные префиксы (padding), динамические заголовки из диапазонов, цепочки маскировочных CPS-пакетов перед handshake, а в версии 3.1 — ещё и шифрует служебные части пакетов (Header Protection) и меняет тайминги. При этом криптографическое ядро (ChaCha20-Poly1305) остаётся неизменным.
Что такое CPS и как создать свою сигнатуру?
CPS (Custom Protocol Signature) — это формат для описания поддельных пакетов, которые имитируют начало легитимных UDP-протоколов. Сигнатура состоит из тегов: ** (точные байты), ` (timestamp), (случайные байты), (случайные буквы), (случайные цифры). Чтобы создать свою сигнатуру, нужно захватить реальный пакет нужного протокола (например, DNS-запрос) с помощью Wireshark, взять первые 50-200 байт, заменить динамические поля (ID, timestamp) на соответствующие теги и добавить случайные данные в конец. Пример для QUIC: i1 = **`.
Какие версии AmneziaWG сейчас актуальны?
На данный момент актуальны три версии: 1.5 (базовая маскировка, используется в Free и Premium версиях AmneziaVPN), 2.0 (полная мимикрия с CPS и динамическими заголовками, доступна для self-hosted) и 3.1 (защита от поведенческого анализа, также для self-hosted). Версия 2.0 поддерживается в клиенте AmneziaVPN для десктопов и Android начиная с версии 4.8.12.9. Версия 3.1 появилась в 2026 году и пока доступна только для self-hosted пользователей.
Как настроить AmneziaWG на Windows?
Для Windows нужно скачать приложение AmneziaWG Client с GitHub (релизы), установить его, затем добавить туннель, импортировав конфигурационный файл (например, полученный от self-hosted сервера). После этого нажать "Подключить". Приложение автоматически применит все настройки маскировки, указанные в конфигурации. Если вы используете AmneziaVPN (основное приложение), то протокол устанавливается автоматически при выборе сервера.
Может ли AmneziaWG полностью гарантировать обход блокировок?
Нет, ни один VPN-протокол не может дать 100% гарантии. DPI-системы постоянно совершенствуются, и методы обфускации, которые работают сегодня, могут быть скомпрометированы завтра. AmneziaWG значительно усложняет детекцию за счёт мимикрии под легитимные протоколы и динамических параметров, но для максимальной надёжности рекомендуется комбинировать его с другими методами (например, XRay, Shadowsocks) и регулярно обновлять конфигурации.
Что такое Header Protection в AmneziaWG 3.1?
Header Protection — это механизм шифрования незашифрованных служебных частей WireGuard-пакетов (Init, Response, Cookie, первые 16 байт Data) с помощью алгоритма ChaCha20. Nonce берётся из первых 12 байт соответствующего префикса S1-S4, а ключ задаётся параметром HeaderProtectionKey. При использовании этого механизма рекомендуется отключать пользовательские заголовки H1-H4 (оставить стандартные значения 1,2,3,4), так как скрытие типа сообщения теперь выполняет шифрование. Это защищает от DPI, которые анализируют не только заголовки, но и содержимое служебных полей.
Какие параметры padding влияют на скорость соединения?
Основное влияние на скорость оказывает параметр S4 (Transport Data padding), так как он применяется к каждому data-пакету. Добавление 8-64 случайных байт к каждому пакету увеличивает объём трафика и может незначительно снизить пропускную способность, особенно на медленных соединениях. Параметры S1, S2, S3 применяются только к служебным пакетам (handshake, cookie reply), которые отправляются редко (раз в 2 минуты), поэтому их влияние на скорость минимально. Junk train (Jc) также отправляется только перед handshake и не влияет на постоянный трафик.