Перейти к основному содержимому

AmneziaWG

AmneziaWG — это форк [WireGuard-Go], который унаследовал простоту архитектуры и высокую производительность оригинала, но избавился от характерных сетевых «подписей», благодаря которым WireGuard легко определяется системами DPI (Deep Packet Inspection). 

Версия 1.5 выводит маскировку на новый уровень: теперь трафик можно маскировать под наиболее распространённые UDP‑протоколы (QUIC, DNS и др.), полностью сливаясь с обычным интернет‑трафиком.

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

AmneziaWG 1.5 решает эту проблему через многоуровневую обфускацию на транспортном уровне: модифицирует заголовки пакетов, рандомизирует размеры handshake-сообщений и позволяет маскировать трафик под популярные UDP‑протоколы. При этом базовое криптографическое ядро WireGuard остается неизменным, сохраняя его производительность и безопасность.


Ключевые преимущества

  • Невидимость для DPI — динамические заголовки и рандомизация размеров пакетов.
  • Маскировка протоколов — имитация QUIC, DNS, SIP и других UDP-протоколов.
  • Высокая производительность — работает как модуль ядра Linux, а шифрование использует однопроходный AEAD-алгоритм ChaCha20‑Poly1305 с SIMD‑оптимизацией, что и у WireGuard.
  • Энергоэффективность — код на Go исполняется в пользовательском пространстве без тяжёлых шифров, то есть подходит для мобильных устройств и роутеров.
  • Кроссплатформенность — поддержка всех основных операционных систем.
  • UDP‑транспорт — весь трафик передаётся поверх UDP, что упрощает обход блокировок и снижает задержку.
  • Простота настроек — настроек — достаточно указать сигнатуру маскировочного протокола; остальные параметры заполняются автоматически.
  • Обратная совместимость — при отключенных механизмах маскировки клиент полностью совместим с обычным WireGuard.

Как это работает

Ниже — шаг за шагом о том, как AmneziaWG 1.5 превращает классический WireGuard‑трафик в неуловимый поток UDP‑пакетов.

  1. Динамические заголовки всех типов пакетов

    При инициализации туннеля библиотека генерирует набор случайных констант, который применяется к каждому из четырёх форматов пакета WireGuard: Init, Response, Data и Under‑Load. Эти значения:

    • подставляются вместо предсказуемых идентификаторов пакетов WireGuard;
    • сдвигают оффсеты полей Version/Type;
    • изменяют зарезервированные биты.

    Таким образом, у двух разных клиентов не бывает совпадающих заголовков — универсальное DPI‑правило написать невозможно.

  2. Рандомизация длины handshake

    В WireGuard пакет Init занимает ровно 148 байт, Response — 92 байта. AmneziaWG добавляет к ним псевдослучайные префиксы S1 и S2 (0–64 байта по умолчанию):

    len(init) = 148 + S1
    len(resp) = 92  + S2

    Смещение остальных полей корректируется автоматически, MAC‑теги пересчитываются.

  3. Маскировочные пакеты I1–I5 (Signature Chain) и CPS (Custom Protocol Signature)

    Перед «специальным» рукопожатием (каждые 120 секунд) клиент может послать до пяти разных UDP‑пакетов, полностью описанных пользователем в формате CPS. Главный элемент — I1 — содержит hex‑снимок реального протокола (например, QUIC Initial handshake), который также можно рандомизировать. Остальные I2–I5 наращивают энтропию за счёт счётчика, метки времени и случайных данных.

    Данный формат мы назвали CPS — Custom Protocol Signature:

    i{n} = <tag1><tag2><tag3>...<tagN>

    Типы тегов

    ТегФорматОписаниеОграничения
    b<b hex_data>Статические байты для имитации протоколовПроизвольная длина
    c<c>Счетчик пакетов (32-bit, network byte order)Уникален в рамках последовательности
    t<t>Unix timestamp (32-bit, network byte order)Уникален в рамках последовательности
    r<r length>Криптостойкие случайные байтыlength ≤ 1000

    Пример CPS-пакета

    i1 = <b 0xf6ab3267fa><c><b 0xf6ab><t><r 10>

    Важно: Если параметр I1 отсутствует, то вся цепочка (I2-I5) пропускается и AmneziaWG ведёт себя как AmneziaWG 1.0 — это упрощает совместимость.

  4. Junk‑train (Jc)

    Сразу после цепочки I‑пакетов отправляется Jc псевдослучайных пакетов длиной от Jmin до Jmax. Они размывают начало сессии во времени и по габаритам, ещё сильнее затрудняя определение handshake.

  5. Пакет Under‑Load

    В WireGuard специальный keep‑alive‑пакет («Under-Load») используется для обхода NAT‑тайм‑аутов. AmneziaWG заменяет его фиксированный header на рандомный, причём значение можно задать вручную в GUI. Это не позволяет DPI фильтровать короткие ping‑пакет, сохраняя стабильность туннеля в мобильных сетях.

  6. UDP‑транспорт без изменений шифрования

    На уровне криптографии AmneziaWG идентичен WireGuard: Curve25519, ChaCha20‑Poly1305 и двусторонний key‑rotation. Обфускация работает строго на транспортном уровне; payload остаётся полностью совместимым с оригинальным протоколом. В AmneziaWG изменены заголовки всех пакетов.

    Итого: DPI видит хаотичную последовательность UDP‑пакетов с непредсказуемыми заголовками, размазанным handshake и уникальной сигнатурой пользователя. При этом по скорости и надёжности туннель практически не отличается от WireGuard.


Параметры конфигурации

ПараметрДиапазонНазначение
I1-I5arbitrary hex‑blobСигнатурные пакеты для имитации протоколов
S1, S20-64 байтаСлучайные префиксы для Init/Response пакетов
Jc0-10Количество junk-пакетов после I1‑I5
Jmin, Jmax64-1024 байтаДиапазон случайного размера junk‑пакетов

При нулевых значениях всех параметров поведение идентично WireGuard — это облегчает «мягкий» переход.


Безопасность

AmneziaWG 1.5 не меняет криптографию WireGuard, а значит наследует его доказанную безопасность (протокол обмена ключами Noise_IK с Curve25519, AEAD ChaCha20‑Poly1305). Маскировочные поля подписываются теми же MAC‑тегами, что и основные заголовки.

Аудит безопасности: Поскольку криптографическое ядро не изменено, применимы все существующие анализы безопасности WireGuard.


Дальнейшие шаги

Подробные инструкции по развертыванию и настройке:


Дополнительные ресурсы

Нативные клиенты AmneziaWG

Конфигурации можно использовать не только в AmneziaVPN, но и в специализированных клиентах:

Установка AmneziaWG через консоль

Обращайтесь в чат за помощью, если что-то не получается