82 lines
7.1 KiB
Markdown
82 lines
7.1 KiB
Markdown
# Совместимость с 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 |
|
||
|
||
Официальные источники:
|
||
|
||
- [FAQ: установка AWG 3.1 на self-hosted-сервер](https://docs.amnezia.org/ru/faq/);
|
||
- [поддерживаемые серверные ОС и архитектуры](https://docs.amnezia.org/ru/documentation/supported-linux-os-for-vps/);
|
||
- [отображение `DockerContainer::Awg2` в `amnezia-awg2`](https://github.com/amnezia-vpn/amnezia-client/blob/7d4f3e0f5090b74903609179653d1f669d2ad08a/client/core/utils/containers/containerUtils.cpp);
|
||
- [`show all dump` в tools v3.1.20260812](https://github.com/amnezia-vpn/amneziawg-tools/blob/v3.1.20260812/src/show.c);
|
||
- [kernel-first и userspace fallback в `awg-quick`](https://github.com/amnezia-vpn/amneziawg-tools/blob/v3.1.20260812/src/wg-quick/linux.bash);
|
||
- [Dockerfile `amneziawg-go v3.1.20260814`](https://github.com/amnezia-vpn/amneziawg-go/blob/v3.1.20260814/Dockerfile).
|
||
|
||
Клиентский Dockerfile AmneziaVPN использует `amneziavpn/amneziawg-go:latest`. Поэтому перечисленные теги являются воспроизводимой reference/source baseline, но не обещанием, что любой будущий контейнер с тегом `latest` содержит те же сборки. Фактические версии проверяются во время live-приёмки.
|
||
|
||
## Контракт контейнера и tools
|
||
|
||
Default discovery имеет такой порядок:
|
||
|
||
```toml
|
||
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.
|