todo/amnezia-3-0/reference.md
loop-uh 36c2fb575b
Some checks failed
Published content check / validate (push) Failing after 6s
AmneziaWG 3.x: снятие параметров только пересозданием интерфейса, dynamic debug, статус клиентов
По материалам мейнтейнера amneziawg-installer (проверено по коду и GitHub API):
- internals: AWG-параметр нельзя убрать через awg setconf/syncconf — обе
  реализации обрабатывают только присутствующие ключи; команда включения
  dynamic debug для пояснений к отказам модуля ядра;
- reference: поддержка AWG 3.0 в mihomo v1.19.30 (16 августа), статусы
  официальных клиентов amneziawg-android (3.x — только предрелизы) и
  amneziawg-windows-client (стабильный 2.0.2).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-20 20:19:39 +03:00

49 KiB
Raw Permalink Blame History

date tags aliases link
2026-08-04
amneziawg
wireguard
обфускация
обход-блокировок
dpi
AmneziaWG 3.0
AWG 3
Amnezia 3.0
Амнезия 3.0
Амнезия ВПН новая версия
Что за новая Amnezia 3.0
Чем AmneziaWG 3.0 отличается от 2.0
Амнезия ВПН 3.0 для своего сервера
AmneziaWG 3 self-hosted когда
AmneziaWG 3.1
RandomTrailers и DisableCookies что это
https://github.com/amnezia-vpn/amneziawg-go

🛡️ AmneziaWG 3.0 — шифрование заголовков поверх WireGuard

!

[!info] О чём заметка Разбор третьего поколения протокола AmneziaWG (AWG) — обфусцированного WireGuard от команды Amnezia, выпущенного 24 июля 2026 года. Что реально добавили в 3.0, чем это отличается от amnezia-2-0/reference, кому протокол доступен и какие утверждения о нём гуляют по сети, не подтверждаясь исходным кодом. Побайтовая механика — в amnezia-3-0/internals, сопутствующий релиз приложения — в amnezia-3-0/client-5-0-0-5.

TL;DR

  • «Amnezia 3.0» — это версия протокола, а не приложения. Клиент AmneziaVPN версий 3.x — это 2023 год; актуальная нумерация приложения перешла с 4.8.21.0 сразу на 5.0.0.5 (26 июля 2026), и уже в нём появилась поддержка AmneziaWG 3.0.
  • Главная новинка — header protection: потоковым шифром ChaCha20 шифруются заголовки пакетов, то есть те поля, которые в WireGuard и в AWG 2.0 оставались открытыми и предсказуемыми. Криптографию самого WireGuard при этом не трогали.
  • Дополнительно: content padding (случайное удлинение полезной нагрузки) и рандомизация таймингов — интервалы рукопожатий и keepalive задаются диапазонами, а не константами.
  • Ценой стало требование к паддингу: при включённой защите заголовков значения S1S4 обязаны быть не меньше 12 байт, потому что первые 12 байт случайного префикса работают одноразовым числом (nonce) для шифра.
  • 12 августа 2026 внутри третьего поколения вышла линия 3.1 — синхронные теги v3.1.20260812 в движке, модуле ядра и утилитах. Два новых параметра: RandomTrailers (случайный хвост у пакетов рукопожатия; включать строго на обеих сторонах) и DisableCookies (устройство перестаёт слать cookie-ответы; односторонний). Netlink-интерфейс не менялся, утилиты 3.0 работают с модулем 3.1.
  • Self-hosted пока пролетает: AWG 3.0 доступен только подписчикам Amnezia Premium и пользователям Amnezia Free. Поддержка своих серверов смержена в ветку разработки 6 августа 2026 (PR #2908), но в релиз не вошла: последняя версия приложения на 20 августа — 5.0.0.5 от 26 июля.
  • Популярный «разбор под капотом» из GitHub Discussions (FallbackPort, uTLS с отпечатком Chrome, REALITY внутри движка) исходным кодом релиза не подтверждается — это либо экспериментальные ветки, либо выдумка.

Почему путаница с номером версии

Вопрос «что за новая Amnezia 3.0?» возникает регулярно, и почти всегда за ним стоит смешение двух независимых нумераций. В русскоязычных чатах сервис называют как угодно — «амнезия», «амнезия ВПН», «Амнезия 3.0», «АмнезияВГ», — и за всеми этими написаниями скрываются два разных продукта с собственными версиями.

Приложение — AmneziaVPN, графический клиент для Windows, macOS, Linux, Android и iOS. Его версии 3.0.8 и 3.1.0 вышли летом 2023 года (переезд на Qt 6, десктопный WireGuard), после чего нумерация ушла в 4.x, а 26 июля 2026 года прыгнула на 5.0.0.5.

Протокол — AmneziaWG, обфусцированная надстройка над WireGuard, которую делает та же команда. Его поколения нумеруются отдельно: 1.0, 1.5, 2.0 и, с 24 июля 2026 года, 3.0.

Проще говоря: когда в 2026 году пишут «Amnezia 3.0», почти всегда имеют в виду протокол AmneziaWG 3.0 внутри приложения AmneziaVPN 5.0.0.5. Корректная формулировка — «AmneziaWG 3.0», а «Amnezia VPN 3.0» отсылает к трёхлетней давности релизу клиента.

Хронология поколений протокола

Каждое поколение AmneziaWG — ответ на конкретный этап давления DPI (Deep Packet Inspection, глубокая инспекция пакетов). Даты ниже сверены по тегам репозитория amneziawg-go и публикациям команды.

Поколение Когда Что принесло
AWG 1.0 2023 Мусорные пакеты Jc/Jmin/Jmax, паддинг рукопожатий S1/S2, подменяемые фиксированные заголовки H1H4
AWG 1.5 июль 2025 (теги v0.2.13v0.2.14-beta-awg-1.5, 410 июля 2025) Сигнатурные пакеты I1I5: до пяти UDP-датаграмм перед рукопожатием, имитирующих QUIC, DNS или SIP
AWG 2.0 сентябрь 2025 (тег v0.2.15 «feat: awg 2.0», 1 сентября 2025) Паддинг S3/S4 для cookie и транспортных пакетов, диапазонные заголовки H1H4, язык CPS для сигнатур
AWG 3.0 24 июля 2026 (тег v3.0.0, PR #158) Шифрование заголовков, content padding, диапазонные тайминги
AWG 3.1 12 августа 2026 (тег v3.1.20260812 синхронно в go, модуле ядра и утилитах) Случайные хвосты пакетов рукопожатия (RandomTrailers), отключение cookie-ответов (DisableCookies)

Порядок здесь важен, потому что в пересказах его часто переворачивают: версия 1.5 вышла раньше 2.0 и была срочным ответом на блокировки лета 2025, когда, по собственной оценке Amnezia в юбилейной статье на Хабре от 16 октября 2025 года, протокол перестал работать примерно у 10% пользователей. Первой заблокированной оказалась версия 1.0, а не 2.0.

[!note] Версии нумеруются не как теги Git До июля 2026 года движок amneziawg-go жил в нумерации v0.2.x, и «AWG 2.0» соответствовал тегу v0.2.15. С выходом третьего поколения теги привели в соответствие с названием протокола: v3.0.0, v3.0.1 (оба 24 июля 2026), v3.0.2 (28 июля), v3.0.3 (31 июля). Затем схема стала датированной, синхронной с остальными репозиториями: v3.0.20260805 (5 августа, исправление keepalive-дефекта) и линия 3.1 — v3.1.20260812, в go также багфиксы v3.1.20260813 и v3.1.20260814. Полноценных GitHub Releases у репозитория нет — только теги, поэтому «дата релиза» здесь означает дату коммита, на который тег указывает.

Контекст: почему 3.0 появился именно летом 2026

Третье поколение вышло не по плану развития, а по итогам полутора месяцев атаки на инфраструктуру сервиса. Хронология по публикации Amnezia от 5 июня 2026 года, которая затем дополнялась до 16 июля: 20 мая — массовая блокировка IP-адресов серверов, 1 июня — организованная DDoS-атака, 10 июня — отдельная атака на сайт. В обновлении от 16 июля команда прямо назвала AmneziaWG 3.0 одним из главных пунктов плана восстановления: «Один из главных пунктов — релиз очередной версии нашего оригинального протокола, AmneziaWG 3.0».

Смысл смены поколения объясняет интервью анонимного разработчика Amnezia изданию Meduza от 3 августа 2026 года. По его словам, надзорное ведомство перешло от блокировки протокола к блокировке серверов по совокупности признаков: «У них есть 50 критериев, каждый из которых приносит одно очко, и если набралось больше 25 очков, то сервер попадает под блокировку». Отдельно описан автоматизированный стенд: «Они берут приложение, собирают с него испытательный стенд — тестовую сборку, куда автоматически подгружают свежие файлы конфигурации, и смотрят, куда и как они подключаются». Похожая логика подсчёта признаков разбирается в заметке DPI/statistical-morphing-concept, а свежая волна блокировок — в DPI/vpn-blocking-wave-forecast-summer-2026.

Практический вывод из этого контекста: обновление протокола лечит сигнатурную часть проблемы — то, по каким байтам трафик опознают как VPN. Блокировку по IP-адресу сервера, который уже попал в списки, новый протокол не отменяет.

[!warning] Осторожно с цифрой «более 90% серверов» Формулировка «заблокировано более 90% российских серверов Amnezia» широко разошлась по пересказам (например, в материале techora.ru от 6 июля 2026 года), но в самом посте Amnezia об инциденте и в интервью Meduza такой цифры нет. Считайте её оценкой из вторых рук, а не заявлением компании.

Header protection — что это на самом деле

Это единственное по-настоящему новое свойство третьего поколения, и именно оно отличает 3.0 от amnezia-2-0/reference.

Что было открытым до 3.0

В обычном WireGuard каждый транспортный пакет начинается с 16-байтового заголовка: 4 байта типа сообщения, 4 байта индекса получателя и 8 байт счётчика пакетов. Полезная нагрузка зашифрована, а вот заголовок передаётся открытым текстом. AWG 1.0 и 2.0 подменяли в нём только поле типа (параметры H1H4) и добавляли перед пакетом случайный префикс (S1S4), но остальные поля заголовка оставались как есть.

Проще говоря: наблюдателю доставалась готовая структура — постоянный индекс получателя, который не меняется всю сессию, и счётчик, растущий строго на единицу с каждым пакетом. Это удобный материал для статистической сигнатуры даже тогда, когда поле типа рандомизировано диапазоном. Официального объяснения от Amnezia, какие именно признаки они закрывают, пока нет — README говорит обобщённо о «низкоэнтропийных значениях заголовков», — но механика описывается именно так.

Как устроена защита

Проверено по коду тега v3.0.3 (файлы device/noise-protocol.go, device/send.go, device/receive.go):

  • Шифр — ChaCha20 без аутентификации, потоковый, IETF-вариант с 12-байтовым nonce (chacha20.NewUnauthenticatedCipher). Не ChaCha20-Poly1305 и не XChaCha20: аутентификацию здесь дают штатные механизмы WireGuard, задача этого слоя — только скрыть структуру.
  • Рукопожатия и cookie-ответы шифруются целиком, включая поля MAC1 и MAC2.
  • Транспортные пакеты — только 16-байтовый заголовок; полезная нагрузка не трогается, она уже зашифрована штатным ChaCha20-Poly1305, и второй проход по ней был бы бессмысленной тратой процессора.
  • Nonce берётся из паддинга. Перед каждым сообщением, как и в 2.0, пишется префикс из криптослучайных байт длиной S1S4 (по типу сообщения), и первые 12 байт этого префикса используются одноразовым числом для шифра. Приёмная сторона читает их из того же места.

Красивая часть решения в том, что паддинг из чистого мусора стал функциональным: те же байты, что раньше просто сбивали анализ по длинам, теперь несут nonce, и лишних данных в пакет добавлять не пришлось. Полная схема сборки пакета, приёмный трюк с «хэшем типа» и разбор того, какие следы протокол всё-таки оставляет, — в amnezia-3-0/internals.

Ключ и обязательный минимум паддинга

Ключ задаётся параметром HeaderProtectionKey, длина 32 байта, в конфигурационном файле записывается в base64 — так же, как обычный ключ WireGuard (шестнадцатеричная форма используется только на внутреннем интерфейсе UAPI). Генерируется командой awg genkey из пакета amneziawg-tools версии v3.0.20260730 и новее. Значение обязано совпадать на сервере и на клиенте: сторона без ключа не расшифрует заголовки и молча отбросит пакеты как неопознанные.

Отсюда же вытекает жёсткое требование к паддингу: раз nonce берётся из первых 12 байт префикса, то при включённой защите заголовков все четыре значения S1S4 должны быть не меньше 12. Меньшее значение движок отвергает с ошибкой, а модуль ядра возвращает -EINVAL.

[!danger] Миф о «минимуме 8 байт» В пересказах встречается требование «S1S4 не меньше 8» — это ошибка, попавшая в оборот из README самого проекта. В коде порог всегда был 12 (HeaderCipherNonceSize = 12), а вот текст документации и сообщение об ошибке действительно говорили про 8, пока их не исправили 31 июля 2026 года коммитом ce7cf103 («docs: change 8 requirement to 12 in README»). Если вы читали инструкцию до этой даты — перепроверьте свои значения.

Content padding — случайное удлинение пакетов

Параметр ContentPaddingAddition задаётся диапазоном (uint32,range) и помечен в README как клиентский. На каждый исходящий транспортный пакет из диапазона берётся случайное число, и столько нулевых байт дописывается в хвост открытого текста до шифрования — то есть добавка оказывается внутри шифртекста, а не отдельным видимым довеском. Размер обрезается по MTU, чтобы не спровоцировать фрагментацию.

Важная деталь: если параметр задан, он заменяет штатное выравнивание WireGuard до кратности 16 байт. Смысл в том, что предсказуемое выравнивание само по себе — признак: длины пакетов ложатся на сетку из 16 байт, и это видно в статистике потока. Случайная добавка эту сетку размывает.

README при этом заметно мягче, чем пересказы: «It's important to specify content padding on both sides. However, this is not strictly required and could be omitted» — то есть согласовать значения на обеих сторонах желательно, но не обязательно.

Рандомизация таймингов

WireGuard известен своей регулярностью: рукопожатие раз в 120 секунд, keepalive по фиксированному таймеру, повторы по константам. Для анализатора трафика это ритм, который видно даже без разбора содержимого. В третьем поколении шесть таймеров стали настраиваемыми диапазонами:

Параметр Секция Что задаёт
RekeyAfterTime [Interface] Через сколько инициировать новое рукопожатие (в WireGuard — жёстко 120 с)
RekeyTimeout [Interface] Пауза перед повторной попыткой рукопожатия
RejectAfterTime [Interface] Когда сессия считается протухшей
KeepaliveTimeout [Interface] Таймер отправки keepalive
MaxHandshakeAttempts [Interface] Сколько попыток рукопожатия делать
PersistentKeepalive [Peer] Уже существовавший параметр, теперь принимает диапазон

Этим список новых параметров релиза 3.0 и исчерпывается: сравнение полного набора ключей UAPI между v0.2.19 и v3.0.3 даёт ровно эти шесть таймеров плюс content_padding_addition и header_protection_key. Скрытых параметров в релизе нет.

12 августа 2026 года внутри третьего поколения вышло обновление 3.1 — тег v3.1.20260812 появился синхронно в трёх репозиториях: движке amneziawg-go, модуле ядра и amneziawg-tools. В go следом вышли багфиксы v3.1.20260813 и v3.1.20260814 (последний чинит длину случайного хвоста у cookie-ответа). Новых параметров устройства ровно два — это видно по диффу UAPI-интерфейса между линиями.

RandomTrailers (on/off) дописывает к пакетам рукопожатия — инициации, ответу и cookie-ответу — хвост из случайных байт случайной длины. Длина берётся из диапазона от нуля до «окна» за вычетом размера самого пакета; окно стартует с 500 байт и подстраивается под максимальный размер пакетов, реально приходивших от пира. Транспортные пакеты отдельного хвоста не получают: для них тот же механизм даёт случайный паддинг внутри шифртекста, если ContentPaddingAddition не задан. Параметр закрывает признак, который оставался виден в 3.0, — постоянные размеры рукопожатий S1+148 и S2+92 байта, разобранные в amnezia-3-0/internals.

[!danger] RandomTrailers включается строго на обеих сторонах Приёмник принимает удлинённые пакеты рукопожатия только при включённом у себя флаге: проверка в коде — «размер равен ожидаемому, либо включён RandomTrailers и размер больше ожидаемого». Сторона без флага отбрасывает удлинённый пакет как неопознанный, поэтому включение только на одной стороне рвёт рукопожатие. Изредка пакет может проскочить — случайная длина хвоста бывает и нулевой, — но рассчитывать на это нельзя.

DisableCookies (on/off) запрещает устройству отправлять cookie-ответы — служебные сообщения, которыми сервер под нагрузкой просит инициатора подтвердить свой адрес. Параметр односторонний: приём cookie-ответов не меняется, формат пакетов на проводе тоже, поэтому согласовывать его с пиром не нужно. Цена: под настоящей DoS-нагрузкой такое устройство молча отбрасывает рукопожатия без валидной метки, не оставляя легитимному клиенту способа пройти проверку до спада нагрузки.

Совместимость с 3.0 аккуратная: версия netlink-интерфейса модуля ядра (WG_GENL_VERSION) в 3.1 не менялась, поэтому утилиты линии 3.0 работают с модулем 3.1 — просто не умеют задавать два новых параметра.

Как отличить 3.1 в установленной системе

PPA Amnezia для Ubuntu раздаёт линию 3.1 с 13 августа 2026 года (amneziawg-tools и мета-пакет amneziawg) и с 14 августа (amneziawg-dkms). Версии пакетов сбивают с толку: они всегда начинаются с 1.0.0 — это версия debian-упаковки, замороженная с декабря 2023 года, — а линия кода видна только по git-хешу в конце строки. Например, 1.0.0-0~202608140352+4680320 собрана из коммита 46803204e7ec, помеченного тегом v3.1.20260812; отметка времени в середине различается между сериями Ubuntu на минуты. Версию фактически загруженного модуля показывает cat /sys/module/amneziawg/version: у DKMS-сборки там строка тега (3.1.20260812), у модуля, собранного вручную через make, — те же непоказательные 1.0.0.

Чего в AWG 3.0 нет, вопреки популярному разбору

29 июля 2026 года в GitHub Discussions репозитория клиента появился пост «AmneziaVPN 5.0.0.5 — AWG 3.0: что изменилось под капотом» (#2899), который активно растащили по чатам. Мейнтейнер проекта ответил на него репликой «Stop writing AI slop» и закрыл обсуждение как устаревшее. Проверка по исходному коду показывает, где текст расходится с релизом.

[!warning] Что не подтверждается кодом FallbackPort и пакет conceal/ (проксирование «непохожего» трафика на локальный веб-сервис в духе REALITY) — не входят ни в один тег v3.0.x. Соответствующий PR #124 смержен 25 марта 2026 года в ветку experimental, а не в основную. Заодно и деталь «только TCP» неверна: в экспериментальном коде есть обёртки и для UDP.

uTLS с отпечатком Chrome и xtls/reality внутри движка — в репозитории отсутствуют полностью: ни библиотек в зависимостях, ни единого упоминания в коде. Пакет outline/ действительно есть, но это интеграционный слой для Outline SDK, появившийся ещё в декабре 2025 года (PR #106, тег v0.2.17), и к третьему поколению протокола он отношения не имеет.

«Переписанная система тегов обфускации» — язык CPS с тегами <b>, <r>, <rc>, <rd>, <t> и тремя недокументированными (<d>, <ds>, <dz>) существует с версии 2.0; подробный разбор всех восьми — в amnezia-2-0/reference. В 3.0 набор тегов не изменился.

Отдельно стоит зафиксировать то, что подтвердилось: криптография WireGuard действительно не тронута. Файл device/noise-helpers.go в теге v3.0.3 побайтно совпадает с оригиналом из wireguard-go, рукопожатие Noise IKpsk2 не менялось. Разработчик в интервью Meduza формулирует это как принцип: «Это наше золотое правило — не лезть в криптографию, которую обеспечивают нам ученые, работавшие над ней десятилетие».

Совместимость с AWG 2.0: что ломается, а что нет

Официальная позиция из FAQ Amnezia однозначна: AmneziaWG 3.0 «не имеет обратной совместимости с AmneziaWG 2.0». Код уточняет, где именно проходит граница.

Все параметры третьего поколения опциональны, а функция выдачи шифра возвращает пустое значение при нулевом ключе. Это значит, что движок версии 3 без HeaderProtectionKey выдаёт в сеть ровно тот же формат, что и 2.0 — те же S1S4, H1H4, Jc/Jmin/Jmax, I1I5. Несовместимость возникает в момент, когда защита заголовков включена: пир без ключа видит вместо знакомой структуры шум и отбрасывает пакеты как пакеты неизвестного типа. Отдельно нужен свежий amneziawg-tools — старая версия просто не знает новых ключей конфигурации и не передаст их в ядро.

На практике это даёт такую картину:

  • Клиент 5.0.0.5 подключается к старым серверам AWG 2.0 без проблем — конфигурация без HeaderProtectionKey работает по-прежнему.
  • Старый клиент к серверу с включённой защитой заголовков не подключится никак.
  • Сервер AWG 3.0 без ключа защиты обслуживает клиентов 2.0 — совместимость такой связки подтверждена сторонним тестом на стенде (сообщение пользователя bivlked на ntc.party от 1 августа 2026 года).
  • Обновить существующую установку протокола «на месте» нельзя: по FAQ для нового протокола нужны новая конфигурация и новый ключ. Правило то же, что действовало при переходе 1.0 → 2.0, где старые установки в новых клиентах отображаются как «AmneziaWG Legacy».

Кому протокол доступен на 20 августа 2026

Здесь главная практическая новость, и она разочаровывает владельцев своих серверов.

Подписчики Amnezia Premium получают AWG 3.0 как протокол по умолчанию. Пользователи бесплатного Amnezia Free — как единственный доступный протокол. И тем и другим нужен клиент AmneziaVPN 5.0.0.5 или новее либо iOS-приложение DefaultVPN 2.0.0 и новее (версия с пунктом «Added AWG 3 support» появилась в App Store около 31 июля 2026 года).

Self-hosted — пока нет, но дело сдвинулось. FAQ отвечает прямо: «Нет. Сейчас AmneziaWG 3.0 доступен только для Amnezia Premium и Amnezia Free». Поддержка своих серверов — pull request #2908 «feat: awg3 support selfhosted», открытый 30 июля 2026 года: он добавляет генерацию HeaderProtectionKey в серверный скрипт установки контейнера и выводит в интерфейс поля content padding и таймингов. 6 августа 2026 года PR смержен (9 коммитов, 40 файлов) — но в ветку разработки dev, а не в релиз: последней версией приложения на 20 августа остаётся 5.0.0.5 от 26 июля, так что до пользователей смерженная поддержка ещё не доехала.

Документация понемногу догоняет: к 20 августа 2026 года страница docs.amnezia.org об AmneziaWG описывает и версию 3.0 (таблица параметров с допустимыми диапазонами) — с оговоркой, что подробности добавят после выхода self-hosted-поддержки в приложении. Обещанная в анонсе отдельная статья в блоге («расскажем о нем отдельно») по-прежнему не опубликована, механика протокола официально нигде не описана; первоисточниками остаются README репозитория amneziawg-go и сам код.

Из сторонних клиентов поддержку заявил Throne 1.2.2 (форк NekoRay) в релизе от 29 июля 2026 года — «Add Amnezia v3 support». В ядре mihomo поля третьего поколения (version: 3, header-protection-key, content-padding-addition, тайминги в amnezia-wg-option) появились в релизе v1.19.30 от 16 августа 2026 года — более ранние ядра узлы с защитой заголовков не поднимут.

Отдельные официальные AWG-клиенты линии 3.x пока не добрались до стабильных выпусков: у amneziawg-android версии 3.0.1 и 3.1.20260814 помечены как предрелизы (последний — от 14 августа 2026), а последний стабильный релиз amneziawg-windows-client — 2.0.2 от 21 июля 2026, ещё второй линии. Это ещё один довод не включать HeaderProtectionKey на сервере, которым пользуются разношёрстные клиенты: часть устройств отвалится без предупреждения.

Экосистема: инструменты и модуль ядра

Протокол живёт не только в Go-реализации. Сопутствующие компоненты обновились в конце июля 2026 года:

  • amneziawg-tools v3.0.20260730 (30 июля) — пользовательские утилиты, включая awg genkey для ключа защиты заголовков; далее вышли v3.0.20260805 (5 августа) и v3.1.20260812 с параметрами линии 3.1. Это единственный компонент, у которого есть полноценные GitHub Releases.
  • Модуль ядра Linux получил третье поколение 30 июля, и первые сутки ушли на исправления: инвертированная логика проверки RekeyTimeout, запись значений I4/I5 не в тот слот массива сигнатур, молчаливое игнорирование ключа при слишком коротких S1S4 и, наконец, сборка на ядрах старше 6.7 (nla_put_uint отсутствует в Debian 12 и Ubuntu 22.04). Всё это закрыли ревизиями v3.0.20260731-02, -03 и -04 в течение 31 июля. Тег v3.0.20260805 от 5 августа исправил keepalive-дефект с рукопожатиями каждые 15 секунд — разбор в amnezia-3-0/internals, — а 12 августа вышел v3.1.20260812.
  • Клиенты платформ — Apple, Android и Windows — получили синхронные коммиты поддержки 24 июля 2026 года, в течение двух минут друг за другом.

Отдельная путаница живёт вокруг сторонних скриптов-установщиков AmneziaWG для self-hosted: репозиториев с почти одинаковыми именами несколько, и их регулярно принимают друг за друга. Родословная по данным GitHub API на 20 августа 2026 года такая. Основой ветви amneziawg-install послужил популярный скрипт wireguard-install от angristan; в июле 2024 года RomikB адаптировал его под AmneziaWG (RomikB/amneziawg-install — в первом коммите первоисточник указан прямо); в августе 2024 появился Varckin/amneziawg-install — перезаливка кода RomikB одним куском, без истории коммитов и упоминания предшественников, заброшенная с сентября 2024; активный сегодня wiresock/amneziawg-install (с января 2026) — технически GitHub-форк репозитория Varckin, но в README честно называет первоисточником RomikB и развил скрипт до поддержки AWG 2.0/3.0. Отдельно стоит bivlked/amneziawg-installer (с апреля 2025) — независимая разработка, кодом с этой ветвью не связанная; упоминания скрипта wiresock в его README — только сравнительная таблица альтернатив.

[!note] Четвёртое поколение уже в работе В репозитории модуля ядра с 4 ноября 2025 года существует ветка feature/awg4 с коммитами «feat: awg4» и добавлением тега <ds> с base64-кодированием полезной нагрузки. Это не анонс и не обещание сроков — просто признак того, что следующая итерация разрабатывается параллельно.

Помогает ли это против блокировок в России

Честный ответ на 4 августа 2026 года: независимых замеров эффективности нет, а доступных полевых отчётов — единицы.

Наиболее содержательное подтверждение нашлось на форуме ntc.party: 2 августа 2026 года пользователь Dikoz сообщил, что обфускация третьего поколения сработала там, где предыдущая не срабатывала — «Затестил awg 3.0 с протоном. Действительно работает. Сработал фейк, который до этого не работал. Проверял всё в Throne». Контекст важен для правильного понимания: тестировалась клиентская часть AWG (мусорные и сигнатурные пакеты) поверх обычных WireGuard-конфигураций ProtonVPN через клиент Throne, а не полноценный туннель AWG 3.0 с обеих сторон. Оператор связи в сообщении не назван.

[!warning] Один отчёт — не статистика Сообщение выше — наблюдение одного пользователя на неизвестном операторе, без контрольных замеров. Отчётов формата «работает или нет на МТС, Мегафоне, Билайне» по третьему поколению на начало августа 2026 года найти не удалось. Относитесь к оценкам эффективности как к предварительным.

Отдельная иллюстрация того, почему сигнатуры вообще ловятся, — issue #2857 от 22 июля 2026 года. В нём показано, что документация и установщики для self-hosted версии 2.0 разносили одно и то же жёстко заданное значение I1 — корректно сформированный 44-байтовый DNS-ответ для домена icloud.com с адресом 77.88.55.55 в записи. Автор issue отмечает и странность самого содержимого: этот адрес принадлежит публичному резолверу Яндекса, для icloud.com такой ответ неестественен. Практический смысл: если тысячи развёртываний шлют перед рукопожатием байт-в-байт одинаковый пакет, он превращается не в маскировку, а в удобный опознавательный знак. В комментарии от 3 августа пользователь bivlked описывает полевое следствие на Tele2 и Мегафоне: туннель не поднимался двое суток со сгенерированным установщиком значением <r 127>, а замена на QUIC-подобную сигнатуру или полное удаление строки I1 восстанавливали связь мгновенно.

Вывод, который из этого следует для любой версии протокола: значения обфускации имеет смысл делать уникальными для своей установки, а не копировать примеры из документации. Общий разбор того, как DPI строит и применяет такие признаки, — в VLESS/dpi-tls-june-2026 и DPI/ru-network-blocklists.

Что делать практически

  • Пользуетесь Amnezia Free или Premium — обновите приложение до 5.0.0.5 (или DefaultVPN 2.0.0 на iOS): на старых версиях третье поколение не заработает, а Free остаётся вовсе без протокола.
  • Держите свой сервер — оставайтесь на amnezia-2-0/reference: поддержка своих серверов смержена в ветку разработки 6 августа 2026 (PR #2908), но ждать нужно релиза приложения новее 5.0.0.5; клиент 5.0.0.5 со старым сервером совместим.
  • Собираете AWG 3.0 вручную — ставьте S1S4 не меньше 12 байт, иначе HeaderProtectionKey не применится, и обновите amneziawg-tools до v3.0.20260730 или новее.
  • Собираете модуль ядра — берите ревизию не ниже v3.0.20260805: в ней исправлен keepalive-дефект с рукопожатиями каждые 15 секунд, а в ревизиях до v3.0.20260731-04 на Debian 12 и Ubuntu 22.04 вдобавок падала сборка.
  • Пробуете RandomTrailers из линии 3.1 — включайте его на сервере и клиенте одновременно: сторона без флага отбрасывает удлинённые пакеты рукопожатия, и туннель не поднимется.
  • Не копируйте значения I1I5 из документации и чужих инструкций: повторяющаяся сигнатура работает против вас.
  • Не полагайтесь на один протокол — запасной канал на xray/vless с xray/reality или Hysteria/00-overview стоит держать наготове.

📚 См. также

  • amnezia-3-0/internals — побайтовый разбор по коду: сборка пакета, механика защиты заголовков, content padding, тайминги и анализ того, что протокол всё ещё оставляет видимым.
  • amnezia-3-0/client-5-0-0-5 — что изменилось в самом приложении, какие протоколы оттуда убрали и что сломалось при переходе.
  • amnezia-2-0/reference — детальный разбор Jc/S1S4/H1H4, языка CPS и всех восьми тегов сигнатур; база, поверх которой работает третье поколение.
  • protocols/00-overview — где AmneziaWG стоит среди VLESS, Hysteria 2 и остальных.
  • DPI/vpn-blocking-wave-forecast-summer-2026 — обстановка, в которой вышло третье поколение.
  • DPI/statistical-morphing-concept — почему шифрования мало и приходится править длины, тайминги и заголовки.
  • 🔗 amneziawg-go — исходники движка и README, единственная актуальная документация по параметрам 3.0.
  • 🔗 FAQ Amnezia — официальные ответы о доступности AWG 3.0 и совместимости с 2.0.

[!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: исходник этой заметки · весь репозиторий.