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

239 lines
49 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date: 2026-08-04
tags:
- amneziawg
- wireguard
- обфускация
- обход-блокировок
- dpi
aliases:
- 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 что это
link: https://github.com/amnezia-vpn/amneziawg-go
---
# 🛡️ AmneziaWG 3.0 — шифрование заголовков поверх WireGuard
![[awg3-header.webp]]
> [!info] О чём заметка
> Разбор третьего поколения протокола AmneziaWG (AWG) — обфусцированного WireGuard от команды Amnezia, выпущенного 24 июля 2026 года. Что реально добавили в 3.0, чем это отличается от [[amnezia-2-0/reference|AmneziaWG 2.0]], кому протокол доступен и какие утверждения о нём гуляют по сети, не подтверждаясь исходным кодом. Побайтовая механика — в [[amnezia-3-0/internals|разборе внутреннего устройства]], сопутствующий релиз приложения — в [[amnezia-3-0/client-5-0-0-5|заметке про AmneziaVPN 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 задаются диапазонами, а не константами.
- **Ценой стало требование к паддингу**: при включённой защите заголовков значения `S1``S4` обязаны быть не меньше 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](https://github.com/amnezia-vpn/amneziawg-go) и публикациям команды.
| Поколение | Когда | Что принесло |
|---|---|---|
| **AWG 1.0** | 2023 | Мусорные пакеты `Jc`/`Jmin`/`Jmax`, паддинг рукопожатий `S1`/`S2`, подменяемые фиксированные заголовки `H1``H4` |
| **AWG 1.5** | июль 2025 (теги `v0.2.13``v0.2.14-beta-awg-1.5`, 410 июля 2025) | Сигнатурные пакеты `I1``I5`: до пяти UDP-датаграмм перед рукопожатием, имитирующих QUIC, DNS или SIP |
| **AWG 2.0** | сентябрь 2025 (тег `v0.2.15` «feat: awg 2.0», 1 сентября 2025) | Паддинг `S3`/`S4` для cookie и транспортных пакетов, диапазонные заголовки `H1``H4`, язык CPS для сигнатур |
| **AWG 3.0** | 24 июля 2026 (тег `v3.0.0`, PR [#158](https://github.com/amnezia-vpn/amneziawg-go/pull/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 года](https://amnezia.org/ru/blog/amnezia-vpn-may-june-2026-incident-preliminary-summary), которая затем дополнялась до 16 июля: 20 мая — массовая блокировка IP-адресов серверов, 1 июня — организованная DDoS-атака, 10 июня — отдельная атака на сайт. В обновлении от 16 июля команда прямо назвала AmneziaWG 3.0 одним из главных пунктов плана восстановления: «Один из главных пунктов — релиз очередной версии нашего оригинального протокола, AmneziaWG 3.0».
Смысл смены поколения объясняет [интервью анонимного разработчика Amnezia изданию Meduza от 3 августа 2026 года](https://meduza.io/feature/2026/08/03/teoreticheski-oni-mogut-zablokirovat-lyuboy-servis-tselikom). По его словам, надзорное ведомство перешло от блокировки протокола к блокировке серверов по совокупности признаков: «У них есть 50 критериев, каждый из которых приносит одно очко, и если набралось больше 25 очков, то сервер попадает под блокировку». Отдельно описан автоматизированный стенд: «Они берут приложение, собирают с него испытательный стенд — тестовую сборку, куда автоматически подгружают свежие файлы конфигурации, и смотрят, куда и как они подключаются». Похожая логика подсчёта признаков разбирается в заметке [[DPI/statistical-morphing-concept|о статистическом морфинге трафика]], а свежая волна блокировок — в [[DPI/vpn-blocking-wave-forecast-summer-2026|прогнозе по блокировкам VPN лета 2026]].
Практический вывод из этого контекста: обновление протокола лечит **сигнатурную** часть проблемы — то, по каким байтам трафик опознают как VPN. Блокировку по IP-адресу сервера, который уже попал в списки, новый протокол не отменяет.
> [!warning] Осторожно с цифрой «более 90% серверов»
> Формулировка «заблокировано более 90% российских серверов Amnezia» широко разошлась по пересказам (например, в материале techora.ru от 6 июля 2026 года), но в самом посте Amnezia об инциденте и в интервью Meduza такой цифры нет. Считайте её оценкой из вторых рук, а не заявлением компании.
## Header protection — что это на самом деле
Это единственное по-настоящему новое свойство третьего поколения, и именно оно отличает 3.0 от [[amnezia-2-0/reference|AWG 2.0]].
### Что было открытым до 3.0
В обычном WireGuard каждый транспортный пакет начинается с 16-байтового заголовка: 4 байта типа сообщения, 4 байта индекса получателя и 8 байт счётчика пакетов. Полезная нагрузка зашифрована, а вот заголовок передаётся открытым текстом. AWG 1.0 и 2.0 подменяли в нём только поле типа (параметры `H1``H4`) и добавляли перед пакетом случайный префикс (`S1``S4`), но остальные поля заголовка оставались как есть.
Проще говоря: наблюдателю доставалась готовая структура — постоянный индекс получателя, который не меняется всю сессию, и счётчик, растущий строго на единицу с каждым пакетом. Это удобный материал для статистической сигнатуры даже тогда, когда поле типа рандомизировано диапазоном. Официального объяснения от 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, пишется префикс из криптослучайных байт длиной `S1``S4` (по типу сообщения), и первые 12 байт этого префикса используются одноразовым числом для шифра. Приёмная сторона читает их из того же места.
Красивая часть решения в том, что паддинг из чистого мусора стал функциональным: те же байты, что раньше просто сбивали анализ по длинам, теперь несут nonce, и лишних данных в пакет добавлять не пришлось. Полная схема сборки пакета, приёмный трюк с «хэшем типа» и разбор того, какие следы протокол всё-таки оставляет, — в [[amnezia-3-0/internals|заметке про внутреннее устройство]].
### Ключ и обязательный минимум паддинга
Ключ задаётся параметром `HeaderProtectionKey`, длина 32 байта, в конфигурационном файле записывается в base64 — так же, как обычный ключ WireGuard (шестнадцатеричная форма используется только на внутреннем интерфейсе UAPI). Генерируется командой `awg genkey` из пакета `amneziawg-tools` версии `v3.0.20260730` и новее. Значение обязано совпадать на сервере и на клиенте: сторона без ключа не расшифрует заголовки и молча отбросит пакеты как неопознанные.
Отсюда же вытекает жёсткое требование к паддингу: раз nonce берётся из первых 12 байт префикса, то при включённой защите заголовков **все четыре значения `S1``S4` должны быть не меньше 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`. Скрытых параметров в релизе нет.
## Линия 3.1: случайные хвосты и отключение cookie
12 августа 2026 года внутри третьего поколения вышло обновление 3.1 — тег `v3.1.20260812` появился синхронно в трёх репозиториях: движке [amneziawg-go](https://github.com/amnezia-vpn/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](https://github.com/amnezia-vpn/amnezia-client/discussions/2899)), который активно растащили по чатам. Мейнтейнер проекта ответил на него репликой «Stop writing AI slop» и закрыл обсуждение как устаревшее. Проверка по исходному коду показывает, где текст расходится с релизом.
> [!warning] Что не подтверждается кодом
> **`FallbackPort` и пакет `conceal/`** (проксирование «непохожего» трафика на локальный веб-сервис в духе REALITY) — не входят ни в один тег `v3.0.x`. Соответствующий PR [#124](https://github.com/amnezia-vpn/amneziawg-go/pull/124) смержен 25 марта 2026 года в ветку `experimental`, а не в основную. Заодно и деталь «только TCP» неверна: в экспериментальном коде есть обёртки и для UDP.
>
> **uTLS с отпечатком Chrome и xtls/reality внутри движка** — в репозитории отсутствуют полностью: ни библиотек в зависимостях, ни единого упоминания в коде. Пакет `outline/` действительно есть, но это интеграционный слой для Outline SDK, появившийся ещё в декабре 2025 года (PR [#106](https://github.com/amnezia-vpn/amneziawg-go/pull/106), тег `v0.2.17`), и к третьему поколению протокола он отношения не имеет.
>
> **«Переписанная система тегов обфускации»** — язык CPS с тегами `<b>`, `<r>`, `<rc>`, `<rd>`, `<t>` и тремя недокументированными (`<d>`, `<ds>`, `<dz>`) существует с версии 2.0; подробный разбор всех восьми — в [[amnezia-2-0/reference|справочнике по AmneziaWG 2.0]]. В 3.0 набор тегов не изменился.
Отдельно стоит зафиксировать то, что подтвердилось: криптография WireGuard действительно не тронута. Файл `device/noise-helpers.go` в теге `v3.0.3` побайтно совпадает с оригиналом из `wireguard-go`, рукопожатие Noise IKpsk2 не менялось. Разработчик в интервью Meduza формулирует это как принцип: «Это наше золотое правило — не лезть в криптографию, которую обеспечивают нам ученые, работавшие над ней десятилетие».
## Совместимость с AWG 2.0: что ломается, а что нет
Официальная позиция из [FAQ Amnezia](https://docs.amnezia.org/ru/faq/) однозначна: AmneziaWG 3.0 «не имеет обратной совместимости с AmneziaWG 2.0». Код уточняет, где именно проходит граница.
Все параметры третьего поколения опциональны, а функция выдачи шифра возвращает пустое значение при нулевом ключе. Это значит, что **движок версии 3 без `HeaderProtectionKey` выдаёт в сеть ровно тот же формат, что и 2.0** — те же `S1``S4`, `H1``H4`, `Jc`/`Jmin`/`Jmax`, `I1``I5`. Несовместимость возникает в момент, когда защита заголовков включена: пир без ключа видит вместо знакомой структуры шум и отбрасывает пакеты как пакеты неизвестного типа. Отдельно нужен свежий `amneziawg-tools` — старая версия просто не знает новых ключей конфигурации и не передаст их в ядро.
На практике это даёт такую картину:
- Клиент 5.0.0.5 подключается к **старым серверам** AWG 2.0 без проблем — конфигурация без `HeaderProtectionKey` работает по-прежнему.
- Старый клиент к **серверу с включённой защитой заголовков** не подключится никак.
- Сервер AWG 3.0 **без** ключа защиты обслуживает клиентов 2.0 — совместимость такой связки подтверждена сторонним тестом на стенде (сообщение пользователя bivlked на ntc.party от 1 августа 2026 года).
- Обновить существующую установку протокола «на месте» нельзя: по [FAQ](https://docs.amnezia.org/ru/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](https://github.com/amnezia-vpn/amnezia-client/pull/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` не в тот слот массива сигнатур, молчаливое игнорирование ключа при слишком коротких `S1``S4` и, наконец, сборка на ядрах старше 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](https://github.com/angristan/wireguard-install) от angristan; в июле 2024 года RomikB адаптировал его под AmneziaWG ([RomikB/amneziawg-install](https://github.com/RomikB/amneziawg-install) — в первом коммите первоисточник указан прямо); в августе 2024 появился [Varckin/amneziawg-install](https://github.com/Varckin/amneziawg-install) — перезаливка кода RomikB одним куском, без истории коммитов и упоминания предшественников, заброшенная с сентября 2024; активный сегодня [wiresock/amneziawg-install](https://github.com/wiresock/amneziawg-install) (с января 2026) — технически GitHub-форк репозитория Varckin, но в README честно называет первоисточником RomikB и развил скрипт до поддержки AWG 2.0/3.0. Отдельно стоит [bivlked/amneziawg-installer](https://github.com/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](https://github.com/amnezia-vpn/amnezia-client/issues/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-почерк TLS]] и [[DPI/ru-network-blocklists|обзоре сетевых блокировок]].
## Что делать практически
- [ ] Пользуетесь Amnezia Free или Premium — обновите приложение до 5.0.0.5 (или DefaultVPN 2.0.0 на iOS): на старых версиях третье поколение не заработает, а Free остаётся вовсе без протокола.
- [ ] Держите свой сервер — оставайтесь на [[amnezia-2-0/reference|AWG 2.0]]: поддержка своих серверов смержена в ветку разработки 6 августа 2026 (PR [#2908](https://github.com/amnezia-vpn/amnezia-client/pull/2908)), но ждать нужно релиза приложения новее 5.0.0.5; клиент 5.0.0.5 со старым сервером совместим.
- [ ] Собираете AWG 3.0 вручную — ставьте `S1``S4` не меньше 12 байт, иначе `HeaderProtectionKey` не применится, и обновите `amneziawg-tools` до `v3.0.20260730` или новее.
- [ ] Собираете модуль ядра — берите ревизию не ниже `v3.0.20260805`: в ней исправлен keepalive-дефект с рукопожатиями каждые 15 секунд, а в ревизиях до `v3.0.20260731-04` на Debian 12 и Ubuntu 22.04 вдобавок падала сборка.
- [ ] Пробуете `RandomTrailers` из линии 3.1 — включайте его на сервере и клиенте одновременно: сторона без флага отбрасывает удлинённые пакеты рукопожатия, и туннель не поднимется.
- [ ] Не копируйте значения `I1``I5` из документации и чужих инструкций: повторяющаяся сигнатура работает против вас.
- [ ] Не полагайтесь на один протокол — запасной канал на [[xray/vless|VLESS]] с [[xray/reality|REALITY]] или [[Hysteria/00-overview|Hysteria 2]] стоит держать наготове.
## 📚 См. также
- [[amnezia-3-0/internals|Внутреннее устройство AmneziaWG 3.0]] — побайтовый разбор по коду: сборка пакета, механика защиты заголовков, content padding, тайминги и анализ того, что протокол всё ещё оставляет видимым.
- [[amnezia-3-0/client-5-0-0-5|AmneziaVPN 5.0.0.5]] — что изменилось в самом приложении, какие протоколы оттуда убрали и что сломалось при переходе.
- [[amnezia-2-0/reference|AmneziaWG 2.0: полный справочник параметров]] — детальный разбор `Jc`/`S1``S4`/`H1``H4`, языка CPS и всех восьми тегов сигнатур; база, поверх которой работает третье поколение.
- [[protocols/00-overview|Карта протоколов обхода блокировок]] — где AmneziaWG стоит среди VLESS, Hysteria 2 и остальных.
- [[DPI/vpn-blocking-wave-forecast-summer-2026|Волна блокировок VPN летом 2026]] — обстановка, в которой вышло третье поколение.
- [[DPI/statistical-morphing-concept|Статистический морфинг трафика]] — почему шифрования мало и приходится править длины, тайминги и заголовки.
- 🔗 [amneziawg-go](https://github.com/amnezia-vpn/amneziawg-go) — исходники движка и README, единственная актуальная документация по параметрам 3.0.
- 🔗 [FAQ Amnezia](https://docs.amnezia.org/ru/faq/) — официальные ответы о доступности AWG 3.0 и совместимости с 2.0.
---
> [!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ
> При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: [исходник этой заметки](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main/amnezia-3-0/reference.md) · [весь репозиторий](https://git.zapret.moe/zapretdiscordyoutube/todo/src/branch/main).