Что такое AmneziaWG и зачем он нужен
AmneziaWG (AWG) — это форк протокола WireGuard, дополненный механизмами обфускации трафика. В отличие от классического WireGuard, который передаёт пакеты в открытом виде и легко детектируется DPI-системами, AmneziaWG маскирует VPN-соединение под обычный интернет-трафик. Это достигается за счёт добавления «мусорных» пакетов перед рукопожатием, изменения размеров служебных сообщений и использования дополнительных параметров хеширования.
AmneziaWG особенно актуален в странах с жёсткой интернет-цензурой, где WireGuard блокируется по сигнатуре. Протокол совместим с существующей инфраструктурой WireGuard: можно использовать те же ключи и адресацию, но с дополнительными опциями обфускации. На момент написания статьи актуальная версия модуля ядра — 3.1 (сборка от августа 2026 года).
Установка AmneziaWG на Arch Linux
На Arch Linux AmneziaWG доступен в виде DKMS-модуля или предварительно собранного пакета для стандартного ядра. В AUR присутствует пакет amneziawg-linux, который собирает модуль под текущую версию ядра. Установка выполняется через AUR-помощник, например yay:
yay -S amneziawg-linuxПакет зависит от linux и linux-headers. Важно: при обновлении ядра модуль нужно пересобрать, иначе AWG перестанет работать. Разработчики рекомендуют использовать LTS-версию ядра (linux-lts), чтобы избежать частых пересборок. Если после обновления ядра awg-quick не использует новый модуль, потребуется переустановить пакеты amneziawg-tools и amneziawg-go.
Для пользователей, которые не хотят возиться с DKMS, существует пакет amneziawg-dkms — он автоматически пересобирает модуль при каждом обновлении ядра. Однако на момент написания статьи в AUR доступен только предварительно собранный вариант.
Проблемы сборки модуля на новых ядрах
При сборке amneziawg-linux на ядрах версии 6.19 и выше могут возникать ошибки компиляции. Типичная проблема — несовместимость с обновлённым API криптографической библиотеки blake2s. В файле noise.c компилятор сообщает об ошибке «размер «blake» в памяти неизвестен» и несоответствии типов аргументов функции blake2s.
Решение — применить патч, исправляющий вызовы blake2s для нового ядра. Патч доступен в комментариях к пакету на AUR. Для ручного применения:
- Скачайте патч с GitHub-коммита AmneziaWG.
- Поместите его в директорию сборки.
- Добавьте в PKGBUILD в секцию
source()и примените черезpatch -Np1.
Если вы не хотите патчить вручную, используйте LTS-ядро (linux-lts), где API blake2s остаётся стабильным. Также можно временно откатиться на ядро 6.18.x, но это не рекомендуется с точки зрения безопасности.
Установка AmneziaWG на OpenWRT
На OpenWRT пакеты AmneziaWG отсутствуют в официальном репозитории, поэтому установка выполняется через скрипт или вручную. Рекомендуемый способ — автоматический скрипт:
sh <(wget -O - https://raw.githubusercontent.com/Slava-Shchipunov/awg-openwrt/refs/heads/master/amneziawg-install.sh)Скрипт устанавливает три пакета: kmod-amneziawg (модуль ядра), amneziawg-tools (утилиты) и luci-proto-amneziawg (интерфейс LuCi). На вопрос о настройке интерфейса отвечайте N, если планируете настраивать вручную.
Для ручной установки скачайте файлы под архитектуру вашего роутера. Узнать архитектуру можно в LuCi: System → Software, нажать Update lists и посмотреть строку вида aarch64_cortex-a53. Затем загрузите три .ipk-файла через Upload package или установите через консоль:
opkg install kmod-amneziawg.ipk amneziawg-tools.ipk luci-proto-amneziawg.ipkПосле установки перезагрузите роутер.
Настройка AmneziaWG через LuCi (веб-интерфейс)
В LuCi настройка выполняется в разделе Network → Interfaces. Нажмите Add new interface, выберите протокол AmneziaWG VPN, задайте имя (например, awg0).
Импорт конфигурации:
- Нажмите Load Configuration, перетащите файл конфигурации или вставьте его содержимое.
- Нажмите Import Settings.
- Важно: в OpenWRT ниже 24.10.1 данные на вкладке AmneziaWG Settings могут вставиться некорректно — проверьте их вручную.
- Перейдите на вкладку Peers, нажмите Edit и установите Persistent Keep Alive = 25. Без этого туннель не установит соединение.
- Если в конфиге были DNS-серверы, на вкладке Advanced Settings очистите поле Use custom DNS servers.
- Нажмите Save → Save & Apply, затем Restart рядом с интерфейсом. Убедитесь, что значения RX и TX не равны нулю.
Ручной ввод:
- В General Settings укажите Private Key и IP Addresses из секции
[Interface]. - На вкладке AmneziaWG Settings заполните поля
S1,S2,Jc,Jmin,Jmax,H1–H4. - На вкладке Peers добавьте пир, укажите Public Key, Allowed IPs (обычно
0.0.0.0/0), Endpoint Host, Endpoint Port и Persistent Keep Alive = 25. - Снимите галочку с опции Route Allowed IPs, если не хотите, чтобы весь трафик шёл через VPN.
- Сохраните и перезапустите интерфейс.
Настройка AmneziaWG через консоль OpenWRT
Редактируйте файл /etc/config/network. Пример конфигурации:
config interface 'awg0'
option proto 'amneziawg'
option listen_port '51820'
option private_key 'YOUR_PRIVATE_KEY'
list addresses '172.16.0.2/32'
option awg_s1 '0'
option awg_s2 '0'
option awg_jc '3'
option awg_jmin '10'
option awg_jmax '50'
option awg_h1 '904321824'
option awg_h2 '245411986'
option awg_h3 '663334667'
option awg_h4 '1944657114'
config amneziawg_awg0
option name 'awg0_client'
option route_allowed_ips '0'
option persistent_keepalive '25'
list allowed_ips '0.0.0.0/0'
option endpoint_host 'YOUR_SERVER_IP'
option endpoint_port '51820'
option public_key 'SERVER_PUBLIC_KEY'
option preshared_key 'YOUR_PRESHARED_KEY'Замените значения, начинающиеся с YOUR_, на свои. Параметры обфускации (awg_*) обязательны — без них AmneziaWG не будет работать. После редактирования выполните:
/etc/init.d/network restartПроверьте появление интерфейса:
ip a | grep awg0Должна отобразиться строка с адресом и статусом UP.
Параметры обфускации AmneziaWG: что они значат
AmneziaWG использует несколько дополнительных параметров, которых нет в WireGuard:
- Jc, Jmin, Jmax — управляют «мусорными» пакетами, отправляемыми перед началом VPN-сессии.
Jc— количество пакетов,JminиJmax— минимальный и максимальный размер каждого пакета. Это затрудняет DPI-анализ, так как трафик выглядит как случайный шум. - S1, S2 — изменяют размер пакетов рукопожатия, добавляя «мусор» в служебные сообщения. Это делает рукопожатие непохожим на стандартное WireGuard.
- H1–H4 — дополнительные хеш-параметры, используемые для обфускации пакетов. Их точное назначение не раскрывается разработчиками, но они обязательны для работы протокола.
Все эти параметры генерируются сервером и передаются клиенту в конфигурационном файле. При ручной настройке их нужно скопировать из конфига без изменений. Неправильные значения приведут к невозможности установить соединение.
Использование AmneziaWG с WARP и другими сервисами
AmneziaWG можно комбинировать с Cloudflare WARP для дополнительной анонимизации. Если вы используете WARP и список подсетей Cloudflare, необходимо указать Firewall Mark в дополнительных настройках интерфейса. Это предотвращает конфликты маршрутизации и гарантирует, что трафик WARP не будет зациклен через AWG.
На OpenWRT настройка Firewall Mark выполняется в LuCi на вкладке Advanced Settings интерфейса AWG. Значение должно совпадать с тем, что используется в конфигурации WARP. Обычно это число от 1 до 255, например 0x01.
Также можно настроить AmneziaWG как клиент для сервера WireGuard. Для этого достаточно указать публичный ключ WireGuard-сервера и стандартные параметры, опустив AWG-специфичные опции (они будут проигнорированы). Однако в этом случае обфускация работать не будет.
Диагностика и проверка работы туннеля
После настройки важно убедиться, что туннель работает корректно.
Через LuCi:
- Перейдите в Status → AmneziaWG.
- В строке Latest Handshake должно быть значение менее 2 минут.
- Data Received и Data Transmitted не должны быть равны 0.
Через консоль:
- Выполните
amneziawg show. Вывод должен содержать информацию о пире, времени последнего рукопожатия и объёме переданных данных. - Пример успешного вывода:
peer: bmXOC+F1FxEM...
endpoint: 1.2.3.4:51820
allowed ips: 0.0.0.0/0
latest handshake: 1 minute, 49 seconds ago
transfer: 1.08 KiB received, 340.04 KiB sent
persistent keepalive: every 25 secondsЕсли рукопожатие отсутствует или данные не передаются, проверьте:
- Правильность параметров обфускации (особенно H1–H4).
- Наличие
Persistent Keep Alive = 25. - Отсутствие блокировок на файрволе (порт UDP 51820 должен быть открыт).
- Совпадение версий модуля ядра и утилит.
Частые ошибки и их решение
1. Ошибка сборки модуля на Arch Linux Симптом: при установке amneziawg-linux возникает ошибка компиляции noise.c. Решение: используйте LTS-ядро или примените патч из AUR-комментариев.
2. Туннель не поднимается на OpenWRT Симптом: интерфейс создан, но RX/TX равны 0. Решение: убедитесь, что в настройках пира указан Persistent Keep Alive = 25. Также проверьте, что параметры обфускации скопированы без ошибок.
3. После обновления ядра AWG перестал работать Симптом: amneziawg show не выводит информацию. Решение: переустановите пакеты amneziawg-linux и amneziawg-tools. Если используется DKMS, проверьте, что модуль пересобрался.
4. Конфигурация не импортируется в LuCi Симптом: после импорта поля на вкладке AmneziaWG Settings пустые. Решение: в OpenWRT ниже 24.10.1 импорт работает некорректно — введите параметры вручную.
5. Не удаётся подключиться к серверу WireGuard через AWG Симптом: рукопожатие не происходит. Решение: убедитесь, что сервер поддерживает AmneziaWG. Если сервер использует обычный WireGuard, AWG-клиент не сможет подключиться из-за различий в протоколе.
Вопросы и ответы
Чем AmneziaWG отличается от обычного WireGuard?
AmneziaWG добавляет обфускацию трафика: мусорные пакеты, изменение размеров рукопожатия и дополнительные хеш-параметры. Это делает VPN-соединение неотличимым от обычного интернет-трафика для DPI-систем. WireGuard же передаёт пакеты в открытом виде и легко детектируется.
Можно ли использовать AmneziaWG с сервером WireGuard?
Нет, напрямую — нельзя. AmneziaWG использует модифицированный протокол, несовместимый с WireGuard. Однако можно настроить AmneziaWG как клиент для сервера WireGuard, опустив AWG-специфичные параметры, но в этом случае обфускация работать не будет.
Какие параметры обфускации обязательны для AmneziaWG?
Обязательны все параметры: Jc, Jmin, Jmax, S1, S2, H1, H2, H3, H4. Они генерируются сервером и передаются в конфигурационном файле. Без них или с неверными значениями соединение не установится.
Почему на OpenWRT не импортируются параметры AmneziaWG через LuCi?
В версиях OpenWRT ниже 24.10.1 импорт конфигурации работает некорректно — данные на вкладке AmneziaWG Settings могут не заполниться. Рекомендуется вводить параметры вручную или обновить прошивку.
Как проверить, что AmneziaWG работает на OpenWRT?
В LuCi перейдите в Status → AmneziaWG — значение Latest Handshake должно быть менее 2 минут, а Data Received/Transmitted не равны нулю. В консоли выполните amneziawg show — должна отобразиться информация о пире и переданных данных.
Что делать, если после обновления ядра на Arch Linux AmneziaWG перестал работать?
Переустановите пакет amneziawg-linux — он соберётся под новое ядро. Если используется DKMS, модуль должен пересобраться автоматически. Также может потребоваться переустановка amneziawg-tools и amneziawg-go.
Можно ли использовать AmneziaWG вместе с Cloudflare WARP?
Да, можно. Для этого необходимо указать Firewall Mark в настройках интерфейса AmneziaWG, чтобы избежать конфликтов маршрутизации. Значение должно совпадать с тем, что используется в конфигурации WARP.