AmneziaWG: обфускация WireGuard и настройка на роутере OpenWrt

Разбираем протокол AmneziaWG: отличия версий 1.5, 2.0 и 3.1, механизмы маскировки, настройку на OpenWrt и практические рекомендации по выбору и использованию.

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

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

AmneziaWG сохраняет криптографическое ядро WireGuard (ChaCha20-Poly1305, Curve25519) и его производительность, но добавляет несколько уровней обфускации: модификацию заголовков, рандомизацию размеров пакетов, имитацию легитимных UDP-протоколов и изменение таймингов. В результате трафик становится похож на обычный интернет-трафик (DNS, QUIC, SIP), что затрудняет его детекцию.

Протокол развивается: версия 1.5 появилась в 2023 году, версия 2.0 вышла в 2025-м, а версия 3.1 стала ответом на массовые блокировки в России в июне-июле 2026 года. Каждая новая версия усложняет статистический анализ соединения, делая поведение сессий менее повторяемым.

Эволюция версий: от маскировки к мимикрии

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

Версия 1.5 добавила маскировку под популярные UDP-протоколы (QUIC, DNS), а версия 2.0 сделала шаг к полной мимикрии: появились signature packets (I1-I5), которые отправляются перед каждым handshake и имитируют начало легитимного протокола. Также были добавлены расширенный padding (S3, S4) и динамические диапазоны заголовков вместо фиксированных значений.

Версия 3.1, выпущенная в ответ на блокировки 2026 года, сфокусировалась на поведенческом анализе: теперь меняются размеры, последовательность и интервалы между пакетами, скрываются служебные данные, добавляется случайный padding и настраиваемые тайминги. Это делает протокол устойчивым даже к эвристическому анализу.

Ключевые механизмы обфускации в AmneziaWG

Рассмотрим основные механизмы, которые делают AmneziaWG невидимым для DPI.

Динамические заголовки (H1-H4). В WireGuard каждый пакет начинается с 4-байтового идентификатора типа (1 — Handshake Init, 2 — Response, 3 — Cookie, 4 — Data). AmneziaWG заменяет их на случайные значения из заданных диапазонов. Например, H1 = 471800590-471800690 даёт 101 возможный вариант, а H4 = 1769581055-1869581055 — 100 миллионов вариантов. При отправке каждого пакета значение выбирается случайно, при приёме допускается любое из диапазона. Важно, чтобы диапазоны H1-H4 не пересекались, иначе невозможно определить тип пакета.

Рандомизация длины пакетов (S1-S4). Стандартные размеры пакетов WireGuard: Init — 148 байт, Response — 92, Cookie — 64, Data — переменный. AmneziaWG добавляет к ним случайные префиксы S1-S4 (от 0 до 32/64 байт), скрывая стандартные размеры. В версии 2.0 появился S4, который применяется к каждому data-пакету, делая их размеры непредсказуемыми.

Signature packets (I1-I5) и CPS. Перед каждым handshake (раз в 2 минуты) клиент может отправить до пяти пакетов, описанных в формате CPS (Custom Protocol Signature). Эти пакеты имитируют начало легитимного UDP-протокола, например DNS-запроса или QUIC-соединения. DPI видит знакомые байты и пропускает трафик, не проверяя, что идёт дальше.

Junk-train (Jc). Сразу после I-пакетов отправляется Jc псевдослучайных пакетов длиной от Jmin до Jmax. Они размывают начало сессии во времени и по размерам.

Header Protection и Content Padding (версия 3.1). Header Protection шифрует незашифрованные служебные части пакетов с помощью ChaCha20, а Content Padding добавляет случайное количество байтов к transport-пакетам, скрывая повторяющиеся паттерны.

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

CPS (Custom Protocol Signature) — это язык описания «поддельных» пакетов, которые отправляются перед handshake. Он состоит из тегов, каждый из которых вставляет определённые данные в пакет.

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

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

Пример сигнатуры QUIC: i1 = **. Здесь ** — начало QUIC Initial packet (тип 0xc7, версия 0x00000001), ` — случайный Connection ID, — временная метка, ` — случайный payload. DPI видит первые байты 0xc7 0x00000001 и распознаёт QUIC, пропуская трафик.

Важно: сигнатуры должны быть реалистичными. Если вы имитируете DNS, пакет должен содержать корректный DNS-заголовок (ID, флаги, количество вопросов). Иначе DPI может заподозрить неладное. Для создания сигнатур можно использовать снифферы (Wireshark) или готовые примеры из документации Amnezia.

Настройка AmneziaWG на роутере OpenWrt

AmneziaWG можно настроить на роутере с OpenWrt, чтобы защитить весь домашний трафик. Пакеты AmneziaWG отсутствуют в стандартном репозитории, поэтому их нужно установить вручную.

Установка пакетов. Скачайте три файла под архитектуру вашего процессора: kmod-amneziawg.ipk, amneziawg-tools.ipk, luci-proto-amneziawg.ipk (или luci-app-amneziawg.ipk). Архитектуру можно узнать в LuCi: System → Software → Update lists, в URL репозитория будет строка вида aarch64_cortex-a53. Установите пакеты через LuCi (System → Software → Upload package) или через opkg install.

Настройка через LuCi. Создайте новый интерфейс: Network → Interfaces → Add new interface. Выберите протокол AmneziaWG VPN, имя (например, awg0). Затем можно импортировать конфигурацию из файла (кнопка Load Configuration) или внести параметры вручную. При импорте убедитесь, что данные вкладки AmneziaWG Settings заполнены корректно (в версиях OpenWrt ниже 24.10.1 они могут не подставиться автоматически).

Ручное внесение параметров. В General Settings укажите Private Key и IP Addresses из секции [Interface] конфига. Во вкладке AmneziaWG Settings заполните S1, S2, Jc, Jmin, Jmax, H1-H4. Во вкладке Peers добавьте peer: Public Key, Preshared Key (если есть), Allowed IPs, Endpoint Host и Port, Persistent Keep Alive = 25. Важно снять галочку Route Allowed IPs, если вы не хотите, чтобы весь трафик шёл через туннель (например, при использовании с Podkop).

Настройка через консоль. Отредактируйте файл /etc/config/network, добавив секции interface и amneziawg_awg0. Пример конфигурации приведён в документации Podkop. После перезагрузки проверьте интерфейс командой ip a | grep awg0.

Проверка работы туннеля и устранение неполадок

После настройки AmneziaWG важно убедиться, что туннель работает корректно.

Проверка через LuCi. Перейдите в Status → AmneziaWG. Поле Latest Handshake должно быть меньше двух минут, а Data Received и Data Transmitted — не равны нулю.

Проверка через консоль. Выполните amneziawg show. В выводе найдите строку latest handshake — она должна быть меньше 2 минут, и transfer — значения received/sent не должны быть нулевыми. Также можно пропинговать адрес внутри туннеля, указав интерфейс: ping -I awg0 10.0.0.1.

Типичные проблемы:

  • Туннель не соединяется: проверьте Persistent Keep Alive (должен быть 25), правильность Endpoint и ключей.
  • Нет трафика: убедитесь, что галочка Route Allowed IPs снята, если вы не хотите гнать весь трафик через VPN.
  • Проблемы с импортом конфига: в OpenWrt ниже 24.10.1 параметры AmneziaWG Settings могут не подставиться, вносите их вручную.
  • Если конфиг приходит в виде ссылки vpn://, используйте декодер от AmneziaVPN (для Windows) или попросите владельца сервера выдать конфиг в формате AmneziaWG native.

Использование AmneziaWG с сервером WireGuard

AmneziaWG можно использовать не только с собственным сервером, но и для обфускации существующего WireGuard-сервера. Для этого нужно добавить в конфиг WireGuard параметры Jc, Jmin, Jmax, S1, S2, H1-H4 и заменить протокол с WireGuard на AmneziaWG VPN.

Важно: параметры S1, S2 и H1-H4 должны оставаться равными значениям, указанным в конфиге сервера (обычно S1=0, S2=0, H1=1, H2=2, H3=3, H4=4). Если вы измените их, соединение не установится, так как сервер ожидает стандартные значения.

Этот подход полезен, если у вас уже есть WireGuard-сервер, но его трафик блокируется DPI. AmneziaWG добавит обфускацию без необходимости менять серверную часть. Однако учтите, что для полной мимикрии (signature packets, динамические заголовки) потребуется сервер с поддержкой AmneziaWG 2.0 или выше.

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

AmneziaWG — не единственный протокол для обхода блокировок. Рассмотрим его в сравнении с популярными альтернативами.

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

OpenVPN. Более старый протокол, поддерживает TCP и UDP, может маскироваться под HTTPS (порт 443). Однако он медленнее WireGuard и имеет более сложную настройку. AmneziaWG быстрее и лучше маскируется под UDP-протоколы.

XRay (VLESS, Trojan). Современные прокси-протоколы, которые маскируются под TLS. Они эффективны против DPI, но требуют отдельного сервера и настройки. AmneziaWG проще в установке через приложение AmneziaVPN.

Shadowsocks. Простой прокси-протокол, но его трафик может быть распознан по статистическим паттернам. AmneziaWG с версией 3.1 более устойчив к поведенческому анализу.

Выбор зависит от ваших задач: если нужен максимальный обход блокировок, AmneziaWG 2.0/3.1 — хороший выбор; если важна скорость и нет цензуры, подойдёт обычный WireGuard.

Практические рекомендации по выбору и настройке

При выборе AmneziaWG учитывайте следующие моменты.

Версия протокола. AmneziaWG 1.5 доступна в бесплатной и премиум-версиях AmneziaVPN, но 2.0 пока поддерживается только для self-hosted серверов (в клиенте версии 4.8.12.9 и выше). Версия 3.1 — самая свежая, но требует обновления клиента и сервера. Если вы используете готовый VPN-сервис, уточните, какая версия протокола используется.

Настройка на роутере. Если вам нужно защитить все устройства в доме, настройте AmneziaWG на роутере с OpenWrt. Это потребует некоторых технических навыков, но даст полный контроль. Альтернатива — использовать приложение AmneziaVPN на каждом устройстве.

Безопасность. AmneziaWG использует те же криптографические алгоритмы, что и WireGuard, поэтому безопасность не страдает. Однако помните, что обфускация не защищает от активного зондирования: если DPI-система специально проверяет ваш трафик, она может обнаружить аномалии. Для максимальной защиты комбинируйте AmneziaWG с другими инструментами, например, с прокси-серверами.

Производительность. Padding и signature packets увеличивают объём трафика, что может снизить скорость. Настройте параметры S4 и Content Padding умеренно, чтобы балансировать между маскировкой и скоростью.

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

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

AmneziaWG — это форк WireGuard, который добавляет обфускацию трафика. WireGuard имеет фиксированные заголовки и размеры пакетов, что позволяет DPI-системам легко его обнаруживать. AmneziaWG модифицирует заголовки (H1-H4), рандомизирует размеры пакетов (S1-S4), добавляет signature packets (I1-I5) для имитации легитимных UDP-протоколов и изменяет тайминги. Криптографическое ядро остаётся тем же, поэтому скорость и безопасность сохраняются.

Какую версию AmneziaWG выбрать: 1.5, 2.0 или 3.1?

Версия 1.5 доступна в бесплатных и премиум-версиях AmneziaVPN и подходит для базовой маскировки. Версия 2.0 добавляет signature packets и динамические заголовки, но поддерживается только для self-hosted серверов. Версия 3.1 — самая новая, она устойчива к поведенческому анализу и рекомендуется для регионов с жёсткой цензурой, но требует обновления клиента и сервера. Если вы используете готовый VPN-сервис, уточните, какая версия используется.

Как настроить AmneziaWG на роутере OpenWrt?

Скачайте пакеты kmod-amneziawg, amneziawg-tools и luci-proto-amneziawg под архитектуру вашего роутера и установите их через LuCi или opkg. Затем создайте новый интерфейс с протоколом AmneziaWG VPN, импортируйте конфигурацию или внесите параметры вручную (Private Key, Address, S1-S4, Jc, Jmin, Jmax, H1-H4, Public Key, Endpoint, Allowed IPs). Установите Persistent Keep Alive = 25 и снимите галочку Route Allowed IPs, если не хотите гнать весь трафик через VPN.

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

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

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

Да, можно. Добавьте в конфиг WireGuard параметры Jc, Jmin, Jmax, S1, S2, H1-H4 и замените протокол на AmneziaWG. Важно, чтобы S1, S2 и H1-H4 оставались стандартными (S1=0, S2=0, H1=1, H2=2, H3=3, H4=4), иначе сервер не примет соединение. Этот способ подходит для обфускации существующего WireGuard-сервера без его изменения.

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

AmneziaWG не защищает от активного зондирования: если DPI-система специально анализирует ваш трафик, она может обнаружить аномалии. Также обфускация увеличивает объём трафика (padding, signature packets), что может снизить скорость. Диапазоны H1-H4 не должны пересекаться, иначе протокол не сможет определить тип пакета. Для максимальной защиты комбинируйте AmneziaWG с другими инструментами.