Что такое AmneziaWG и почему появилась версия 2.0
AmneziaWG — это модифицированная версия протокола WireGuard с открытым исходным кодом, разработанная командой Amnezia VPN. Первая версия появилась в 2023 году и позволяла маскировать трафик за счёт мусорных пакетов, изменения размеров handshake-сообщений и замены стандартных заголовков WireGuard на фиксированные значения. Эти меры помогали против простых DPI-систем, которые ищут сигнатуры известных протоколов.
Однако за последние годы системы глубокого анализа трафика (DPI) стали значительно умнее. Провайдеры научились обнаруживать не только стандартный WireGuard, но и многие обфусцированные протоколы по статистическим паттернам: размерам пакетов, временным характеристикам, последовательности передачи. Простой маскировки заголовков стало недостаточно — нужна была полноценная мимикрия под легитимный трафик.
AmneziaWG 2.0 — это ответ на эти вызовы. Вместо того чтобы просто скрывать признаки VPN, протокол теперь может имитировать поведение обычных UDP-протоколов, таких как DNS, QUIC или SIP. Для DPI-системы такое соединение выглядит как обычный запрос к DNS-серверу или установка QUIC-соединения, поэтому оно не вызывает подозрений и не блокируется.
Важно отметить, что AmneziaWG 2.0 доступен для пользователей self-hosted — тех, кто разворачивает VPN на собственном сервере. В клиентах AmneziaVPN для Free и Premium пока используется версия 1.5, но поддержка 2.0 планируется позже. Для self-hosted достаточно обновить приложение AmneziaVPN до версии 4.8.12.9 или выше и переустановить протокол.
Ключевые нововведения AmneziaWG 2.0
Версия 2.0 привносит несколько значительных улучшений по сравнению с предыдущими версиями. Все они направлены на то, чтобы сделать трафик неотличимым от легитимного для DPI-систем.
Сигнатурные пакеты (Signature Packets) — это, пожалуй, самое заметное нововведение. Перед каждым handshake (установкой соединения) клиент отправляет до пяти специальных пакетов, которые имитируют начало реального протокола — например, DNS-запроса или QUIC-соединения. DPI видит знакомые байты и пропускает трафик, не подозревая, что за ними следует настоящий VPN-handshake.
Расширенный padding — в версии 1.0 можно было менять размеры только handshake-пакетов (параметры S1 и S2). Но handshake происходит редко (раз в 2 минуты), а основной объём трафика — это data-пакеты, которые оставались предсказуемыми по размеру. В 2.0 добавлены параметры S3 (для Cookie Reply) и S4 (для всех транспортных пакетов). Теперь случайные байты добавляются к каждому пакету, что делает размеры непредсказуемыми.
Динамические диапазоны заголовков — вместо фиксированных значений H1-H4, которые DPI мог запомнить, теперь используются диапазоны. Для каждого пакета случайно выбирается значение из указанного диапазона, поэтому каждый пакет имеет уникальный заголовок. Это сильно затрудняет создание сигнатур для блокировки.
Все эти механизмы работают вместе, создавая многоуровневую защиту: сигнатурные пакеты маскируют начало соединения, padding скрывает размеры, а динамические заголовки делают каждый пакет уникальным.
Как работают сигнатурные пакеты (i1-i5)
Сигнатурные пакеты — это ключевая инновация AmneziaWG 2.0. Они позволяют имитировать начало легитимного протокола перед настоящим handshake WireGuard.
Когда клиент устанавливает соединение, он отправляет до пяти специальных пакетов (i1, i2, i3, i4, i5), которые выглядят как начало DNS-запроса, QUIC-соединения или SIP-вызова. DPI-система анализирует первые байты пакета, видит знакомый паттерн и пропускает трафик, считая его легитимным.
Каждый пакет описывается с помощью языка CPS (Custom Protocol Signature) — специального формата, который позволяет задать точные байты, случайные данные, временные метки и другие элементы. Например, сигнатура для имитации QUIC может выглядеть так:
i1 = **Здесь ** вставляет точные байты, характерные для QUIC Initial packet, ` добавляет 8 случайных буквенно-цифровых символов (имитация Connection ID), — текущую временную метку, а ` — 50 случайных байт. В результате пакет выглядит как начало QUIC-соединения, и DPI не может отличить его от настоящего.
Важно, что сигнатурные пакеты отправляются только перед handshake, который происходит раз в 2 минуты. Если параметр i1 не настроен, сигнатурные пакеты не отправляются, что обеспечивает обратную совместимость с версией 1.0. Это позволяет постепенно переходить на новые возможности без потери работоспособности.
CPS: язык мимикрии для создания сигнатур
CPS (Custom Protocol Signature) — это специальный язык, разработанный для AmneziaWG 2.0. Он позволяет описывать, как должны выглядеть сигнатурные пакеты, чтобы имитировать тот или иной протокол.
CPS состоит из тегов — команд, которые определяют, из каких элементов собирается пакет. Основные теги:
**— вставляет точные байты, заданные в шестнадцатеричном виде. Это «скелет» сигнатуры, магические байты протокола.- `` — добавляет текущую временную метку (Unix time, 4 байта). Это делает каждый пакет уникальным.
- `` — вставляет N случайных байт. Используется для создания энтропии и нужного размера.
- `` — генерирует N случайных буквенно-цифровых символов (A-Za-z0-9). Подходит для имитации текстовых полей, например, доменных имён.
- `` — генерирует N случайных цифр (0-9). Полезно для имитации портов или других числовых значений.
Комбинируя эти теги, можно создавать сигнатуры для самых разных протоколов. Например, для имитации DNS-запроса можно использовать теги ** с байтами заголовка DNS, ` для случайного имени домена и ` для дополнительных данных.
CPS — это мощный инструмент, но он требует понимания структуры протоколов, которые вы хотите имитировать. В документации Amnezia приведены примеры готовых сигнатур, которые можно использовать как отправную точку. Главное преимущество CPS — гибкость: вы можете настроить сигнатуру под конкретные условия и типы DPI, с которыми сталкиваетесь.
Padding для всех типов пакетов: S3 и S4
В AmneziaWG 1.0 padding применялся только к handshake-пакетам (параметры S1 и S2). Это позволяло изменять размеры первых пакетов при установке соединения, но data-пакеты, которые составляют основную часть трафика, оставались стандартными. DPI-системы могли анализировать распределение размеров пакетов и выявлять аномалии.
Версия 2.0 добавляет два новых параметра padding:
S3 — Cookie Reply Padding. Cookie Reply — это специальный пакет, который сервер отправляет клиенту при высокой нагрузке (для защиты от DoS-атак). Его стандартный размер — ровно 64 байта, что является отличным индикатором для DPI. Параметр S3 добавляет случайное количество байт к этому пакету, делая его размер непредсказуемым.
S4 — Transport Data Padding. Это самый важный новый параметр. S4 добавляет случайные байты к каждому зашифрованному транспортному пакету, который несёт фактический интернет-трафик. Это работает постоянно, для всех data-пакетов, что делает размеры пакетов случайными и не позволяет DPI выявить закономерности.
Пример конфигурации:
S1 = 68 # Handshake init padding
S2 = 149 # Handshake response padding
S3 = 32 # Cookie reply padding (новое)
S4 = 16 # Data padding (новое)Важно понимать компромисс: увеличение padding повышает маскировку, но добавляет накладные расходы на трафик. Слишком большой S4 может снизить скорость соединения. Рекомендуется подбирать значения, исходя из конкретных условий и требований к скорости.
Динамические диапазоны заголовков H1-H4
В стандартном WireGuard каждый пакет начинается с 4-байтового идентификатора типа: 1 — Handshake Initiation, 2 — Handshake Response, 3 — Cookie Reply, 4 — Transport Data. AmneziaWG 1.0 позволял заменять эти значения на фиксированные через параметры H1-H4. Однако DPI мог запомнить эти фиксированные значения и блокировать трафик по ним.
В AmneziaWG 2.0 вместо фиксированных значений используются диапазоны. Например:
H1 = 471800590-471800690 # 101 возможный вариант
H4 = 1769581055-1869581055 # 100 миллионов вариантовПри отправке каждого пакета случайно выбирается значение из указанного диапазона, а при приёме принимается любое значение из настроенного диапазона. В результате каждый пакет имеет уникальный заголовок, что делает сигнатуру непредсказуемой.
Это можно сравнить с пропуском в охраняемое здание: раньше у всех был одинаковый номер, и охрана быстро его запомнила. Теперь каждый раз выдаётся случайный номер из большого диапазона, и охрана не может запомнить все варианты.
Важное ограничение: диапазоны H1, H2, H3 и H4 не должны пересекаться. Иначе невозможно будет понять, какой тип пакета пришёл. Например, если H1 и H2 пересекаются, DPI может перепутать handshake init и handshake response. Поэтому при настройке нужно тщательно выбирать непересекающиеся диапазоны.
Порядок отправки пакетов в AmneziaWG 2.0
Чтобы понять, как все механизмы работают вместе, рассмотрим полный порядок отправки пакетов при установке соединения.
При каждом handshake (раз в 2 минуты):
- Отправляются сигнатурные пакеты i1 → i2 → i3 → i4 → i5 (если они настроены).
- Затем отправляются junk-пакеты (мусорные) в количестве Jc.
- Отправляется Handshake Initiation с padding S1 и случайным заголовком H1.
- Сервер отвечает Handshake Response с padding S2 и случайным заголовком H2.
При нагрузке на сервер (если происходит):
- Отправляется Cookie Reply с padding S3 и случайным заголовком H3.
Весь data-трафик (постоянно):
- Каждый транспортный пакет получает padding S4 и случайный заголовок H4.
Ключевые моменты:
- Сигнатурные пакеты отправляются только если настроены.
- Junk-пакеты отправляются всегда перед handshake.
- S1/S2 применяются к handshake-пакетам.
- S3 применяется к cookie reply (редко, только под нагрузкой).
- S4 применяется к каждому data-пакету.
- H1-H4 с диапазонами делают каждый пакет уникальным.
Такая многоуровневая схема затрудняет DPI-анализ: даже если система распознает сигнатурные пакеты как подозрительные, дальнейшие пакеты выглядят как обычный трафик.
Как настроить AmneziaWG 2.0 на self-hosted сервере
Установка AmneziaWG 2.0 на собственный сервер не требует специальных знаний. Достаточно следовать простым шагам.
- Обновите приложение AmneziaVPN до версии 4.8.12.9 или выше с официальной страницы загрузки (или зеркала).
- Откройте приложение и выберите подключение к вашему серверу.
- Нажмите на иконку с шестерёнкой справа от подключения — отобразится список протоколов, доступных для установки.
- Нажмите на иконку загрузки справа от пункта AmneziaWG, затем нажмите «Установить».
- Готово! Обновлённый AmneziaWG появится в списке доступных протоколов.
Важно: в версиях AmneziaVPN 4.8.12.9 и новее AmneziaWG 1.0 отображается как AmneziaWG Legacy. Он продолжит работать, но для его настройки понадобятся отдельные файлы конфигурации и ключи. Рекомендуется постепенно переводить пользователей на AWG 2.0.
При этом предыдущие версии протокола несовместимы с AmneziaWG 2.0. Для подключения по нему потребуется сгенерировать новые гостевые конфигурации. Все новые созданные серверы по умолчанию используют AWG 2.0, а установить на них AmneziaWG Legacy уже не получится.
Дополнительная настройка не требуется — протокол автоматически использует оптимальные параметры. Однако вы можете настроить сигнатуры, padding и диапазоны заголовков вручную, если хотите точно имитировать конкретный протокол.
Ограничения и совместимость AmneziaWG 2.0
AmneziaWG 2.0 — это значительный шаг вперёд, но у него есть свои ограничения.
Несовместимость с предыдущими версиями: AmneziaWG 2.0 несовместим с AmneziaWG 1.0 и 1.5. Это означает, что клиенты, использующие старые версии, не смогут подключиться к серверу с AWG 2.0. Необходимо обновить клиентское приложение и сгенерировать новые конфигурации.
Доступность: На момент выхода AWG 2.0 поддерживается только в self-hosted версии AmneziaVPN для десктопов и Android. Пользователи Free и Premium пока используют AWG 1.5, поддержка 2.0 для них появится позже.
Производительность: Padding добавляет накладные расходы, что может снизить скорость соединения. Особенно это заметно при больших значениях S4. Рекомендуется искать баланс между маскировкой и скоростью.
Настройка сигнатур: Создание собственных сигнатур CPS требует понимания структуры протоколов. Неправильно настроенная сигнатура может не только не помочь, но и привлечь внимание DPI. Рекомендуется использовать готовые примеры из документации.
Диапазоны заголовков: Диапазоны H1-H4 не должны пересекаться, иначе протокол не сможет корректно обрабатывать пакеты. Это ограничение нужно учитывать при ручной настройке.
Несмотря на эти ограничения, AmneziaWG 2.0 предоставляет мощные инструменты для обхода DPI и восстановления доступа к свободному интернету.
Будущее AmneziaWG: что дальше?
AmneziaWG 2.0 — это не финальная точка. Команда Amnezia продолжает развивать протокол, адаптируясь к новым методам блокировок. Уже анонсирована версия AmneziaWG 3.1, которая эффективнее справляется с анализом трафика с помощью ИИ-систем.
Версия 3.1 использует тот же контейнер, что и 2.0, поэтому на сервер невозможно установить обе версии одновременно. Для перехода на 3.1 требуется удалить AmneziaWG 2.0 и заново установить протокол из AmneziaVPN 5.0.2.1 или новее. При этом удаляются все созданные пользователи, и их подключения перестают работать — нужно будет создать новых пользователей и выдать им новые ключи.
Разработчики рекомендуют переходить на 3.1, даже если текущее подключение работает стабильно, поскольку 2.0, как и 1.5, стал уязвим к новым механизмам блокировок. Это показывает, что «гонка вооружений» между VPN-протоколами и DPI-системами продолжается, и Amnezia стремится оставаться на шаг впереди.
Для пользователей это означает, что нужно следить за обновлениями и своевременно переходить на новые версии протокола, чтобы сохранять доступ к свободному интернету.
Вопросы и ответы
Чем AmneziaWG 2.0 отличается от AmneziaWG 1.0?
AmneziaWG 2.0 добавляет три ключевых улучшения: сигнатурные пакеты (i1-i5), которые имитируют легитимные протоколы (DNS, QUIC, SIP); расширенный padding для всех типов пакетов (S3 для Cookie Reply и S4 для data-пакетов); динамические диапазоны заголовков H1-H4 вместо фиксированных значений. Это позволяет не просто маскировать трафик, а полностью мимикрировать под обычный UDP-трафик, что значительно затрудняет обнаружение DPI-системами.
Как установить AmneziaWG 2.0 на свой сервер?
Для установки AmneziaWG 2.0 на self-hosted сервер нужно:
- Обновить приложение AmneziaVPN до версии 4.8.12.9 или выше.
- В приложении выбрать подключение к серверу и нажать на шестерёнку.
- В списке протоколов нажать на иконку загрузки рядом с AmneziaWG и выбрать «Установить».
- После установки протокол появится в списке доступных. Дополнительная настройка не требуется, но при желании можно изменить параметры сигнатур, padding и заголовков.
Что такое CPS и зачем он нужен?
CPS (Custom Protocol Signature) — это язык описания сигнатурных пакетов в AmneziaWG 2.0. Он позволяет создавать «поддельные» пакеты, которые имитируют начало легитимных протоколов, таких как DNS, QUIC или SIP. CPS использует теги: ** для вставки точных байтов, ` для временной метки, для случайных байт, для случайных буквенно-цифровых символов и ` для случайных цифр. С помощью CPS можно настроить сигнатуру под конкретный протокол, чтобы DPI-система не распознала VPN-трафик.
Почему диапазоны заголовков H1-H4 не должны пересекаться?
Заголовки H1-H4 идентифицируют тип пакета: H1 — Handshake Initiation, H2 — Handshake Response, H3 — Cookie Reply, H4 — Transport Data. Если диапазоны пересекаются, протокол не сможет однозначно определить тип пакета, что приведёт к ошибкам обработки. Например, если H1 и H2 пересекаются, пакет с заголовком из общей зоны может быть интерпретирован и как init, и как response. Поэтому при настройке необходимо выбирать непересекающиеся диапазоны.
Совместим ли AmneziaWG 2.0 с предыдущими версиями?
Нет, AmneziaWG 2.0 несовместим с AmneziaWG 1.0 и 1.5. Это означает, что клиенты, использующие старые версии, не смогут подключиться к серверу с AWG 2.0. Для подключения необходимо обновить клиентское приложение и сгенерировать новые конфигурации. В приложениях AmneziaVPN версии 4.8.12.9 и новее старая версия отображается как AmneziaWG Legacy и продолжает работать, но для неё нужны отдельные ключи.
Влияет ли padding на скорость соединения?
Да, padding добавляет дополнительные байты к каждому пакету, что увеличивает объём передаваемых данных. Это может незначительно снизить скорость соединения, особенно при больших значениях S4. Однако в большинстве случаев влияние минимально, и преимущества маскировки перевешивают. Рекомендуется подбирать значения padding, исходя из конкретных условий и требований к скорости.