Files
AWG2_harness/docs/UPSTREAM_COMPATIBILITY.md
T

7.1 KiB
Raw Blame History

Совместимость с upstream AmneziaWG

Этот документ — канонический источник сведений о версиях AmneziaWG, с которыми сверяется AWG2 Harness. Остальная документация не должна дублировать плавающий набор upstream-версий: она ссылается сюда.

Статус релиза 0.3.1

AWG2 Harness 0.3.1 проверен по официальной документации и исходникам AmneziaWG 3.1 по состоянию на 28 августа 2026 года. Это означает source-validated against AWG 3.1, но не заменяет live-приёмку на production-сервере.

Основной сценарий:

  • self-hosted AmneziaWG 3.1;
  • AmneziaVPN 5.0.1.5 или новее;
  • чистая установка AWG 3.1 через AmneziaVPN;
  • контейнер amnezia-awg2;
  • интерфейс awg0;
  • чтение состояния через awg, с fallback на wg.

AWG 3.0 и 2.x остаются regression compatibility. Контейнер amnezia-awg поддерживается как legacy fallback. Название AWG2 Harness является именем продукта и пакета, а не ограничением на версию протокола.

Зафиксированная upstream-база

Компонент Версия или ревизия Назначение
AmneziaVPN 5.0.1.5, tag 7d4f3e0f5090b74903609179653d1f669d2ad08a Self-hosted deployment AWG 3.1 и container contract
amneziawg-tools v3.1.20260812, commit ee0f0a9aa34ff0a0da4b3433b9512781cfe02843 CLI, awg-quick, формат show all dump
amneziawg-go v3.1.20260814, commit 1b86b2ae0e493e7ea93f8c1a0f0cb6735b1551f1 userspace fallback и reference container image

Официальные источники:

Клиентский Dockerfile AmneziaVPN использует amneziavpn/amneziawg-go:latest. Поэтому перечисленные теги являются воспроизводимой reference/source baseline, но не обещанием, что любой будущий контейнер с тегом latest содержит те же сборки. Фактические версии проверяются во время live-приёмки.

Контракт контейнера и tools

Default discovery имеет такой порядок:

container_names = ["amnezia-awg2", "amnezia-awg"]
wg_binaries = ["awg", "wg"]

Отдельного официального типа или имени amnezia-awg3 в зафиксированной версии клиента нет. Оператор может вручную указать другое корректное имя контейнера в amnezia.container_names.

Reference image содержит /usr/bin/awg, /usr/bin/awg-quick и symlinks /usr/bin/wg -> /usr/bin/awg, /usr/bin/wg-quick -> /usr/bin/awg-quick.

Kernel и userspace

awg-quick сначала выполняет ip link add <interface> type amneziawg. Если kernel implementation недоступна, запускается amneziawg-go.

Harness не выбирает реализацию и не требует конкретную из них. Peer state читается через docker exec официальным awg внутри контейнера. Это единая container-side точка доступа для kernel и userspace вариантов и не создаёт зависимости от версии host-side tools.

Поддерживаемый harness-контракт соответствует официальной self-hosted server topology Amnezia/AWG 3.1: один IPv4 host route /32 на peer. Generic client config может содержать 0.0.0.0/0 и ::/0, а Docker — публиковать AWG UDP port на внешних IPv4 и IPv6 адресах; это не server-side peer addressing. IPv6/mixed/multiple server AllowedIPs harness отвергает до traffic и anti-torrent mutation.

Контракт show all dump

Исторические widths являются диагностикой:

Producer Interface-row Peer-row
WireGuard tools 5 9
AWG 2.x tools 14 9
AWG 3.0 tools 28 9
AWG 3.1 tools v3.1.20260812 30 9

В AWG 3.1 поля RandomTrailers и DisableCookies добавлены перед fwmark. Peer representation осталось девятиполевым.

Количество колонок interface-row никогда не используется harness для определения версии протокола или классификации peer. Версия tools определяет ширину interface-row, а новые tools могут печатать широкую строку и для конфигурации со старыми параметрами. Parser классифицирует peer семантически по allowed IPs и числовым handshake/RX/TX полям.

Полный interface-row нельзя публиковать в отчётах: во второй колонке находится приватный ключ устройства. Для диагностики выводятся только номер строки, число полей и имя интерфейса.

Переход с AWG 2.0

Официальная модель перехода на AWG 3.1 — удалить AmneziaWG с сервера, установить заново новый контейнер, повторно создать пользователей и выпустить новые connection keys/configuration files.

Harness не выполняет эту миграцию, не читает и не меняет awg0.conf, не генерирует ключи и не управляет протокольными параметрами. Основной документированный путь для 0.3.1 — clean installation. Live acceptance выполняется после того, как AmneziaVPN завершила установку AWG 3.1.