github hoaxisr/awg-manager v2.16.4

4 hours ago

Новые возможности

  • AmneziaWG 3.0 в режиме kernel — протокол получил семь параметров устройства: HeaderProtectionKey (шифрование заголовка WireGuard, ChaCha20 в обе стороны), ContentPaddingAddition и пять таймингов (RekeyAfterTime, RekeyTimeout, RejectAfterTime, KeepaliveTimeout, MaxHandshakeAttempts). Тайминги и паддинг задаются одиночным значением или диапазоном min-max, из которого устройство берёт случайное число на каждый взвод таймера. Параметры редактируются в обфускации туннеля, попадают в .conf, распознаются классификатором версий (бейдж awg3) и анализатором конфигов, где header protection оценивается как самая сильная защита от DPI. NativeWG их не получает: прошивка их не понимает, поэтому режим остаётся на AWG 2.0.

    Секция awg3 в редакторе открывается только тогда, когда в ядре загружен модуль версии 3.x. Причина не косметическая: модуль 1.x не отвергает новые атрибуты netlink, а молча их игнорирует, и настройки выглядели бы применёнными при работающем AWG 2.0. Поэтому проверяется версия реально загруженного модуля, а не маркер поставки: после обновления пакета они расходятся до перезагрузки роутера.

    При заданном HeaderProtectionKey требуются значения S1-S4 не меньше 12. Модуль берёт из начала Sx-паддинга 12-байтный nonce, и при более коротком паддинге стороны используют разный nonce, отчего отбрасывается весь трафик. Само ядро проверяет только те S, что пришли в том же запросе, поэтому конфиг вообще без S-ключей оно принимает, оставляя туннель мёртвым: теперь такая связка отклоняется на входе.

  • Модули AmneziaWG 3.0 и обновлённый awg в поставке — модули собраны из тега v3.0.20260731-02 для 28 актуальных моделей, инструмент awg из amneziawg-tools v3.0.20260730, статической сборкой на все три архитектуры. Пакет при этом похудел: одинаковые по содержимому модули больше не дублируются под каждую модель, в поставке 10 файлов вместо 46, и mipsel-пакет потерял около четырёх мегабайт.

  • Диапазоны в PersistentKeepalive — в AWG 3.0 keepalive тоже стал диапазоном. Значение вида 22-30 теперь принимается для kernel-туннелей и для endpoint-ов на вкладке AWG3, где уходит в sing-box как есть. NativeWG диапазон отклоняет с подсказкой перейти на kernel-режим: в NDMS keepalive передаётся числом.

  • Резервное копирование настроек AWG Manager — в «Настройках» появились создание и восстановление полной копии каталога данных: туннели, правила маршрутизации, конфигурация sing-box, FreeTurn и WDTT одним архивом tar.gz. Перед снятием копии состояние замирает, после восстановления пересчитываются порты связанных прокси-клиентов и демон перезапускается сам. Прежняя копия каталога сохраняется рядом на случай отката — теперь только последняя, а не по одной на каждое восстановление.

  • WDTT-сервер работает как обычный туннель роутера — сервер регистрируется в NDMS собственным интерфейсом OpkgTun и получает NAT и доступ из локальной сети тем же способом, что и managed WireGuard-серверы: клиенты видны из LAN, а трафик наружу ходит без ручных правил. Там, где NDMS-путь недоступен, работает независимый режим на iptables с периодической сверкой правил — sing-box, перестраивая свои цепочки, их больше не роняет.

  • FreeTurn: режим DNS и список DNS-серверов в UI клиента — флаги -dns-mode/-dns-servers бэкенд пробрасывал и раньше, теперь они редактируются в мастере и в рабочем режиме рядом с платформой. Для роутера рекомендуется plain (UDP/53).

  • QR-код увеличивается по клику — в FreeTurn и WDTT.

  • Переименование клиента переносится на связанный туннель — имя AWG-туннеля, созданного из клиента FreeTurn или WDTT, синхронизируется с новым именем клиента; сохранение по карандашу перестало требовать лишних нажатий.

Исправления

  • Импорт AWG 3.0 конфига больше не падает на диапазоне keepalive — конфиг с PersistentKeepalive = 22-30 отвергался с ошибкой разбора, потому что поле ожидало целое число. Тот же конфиг, импортированный как kernel-туннель, вёл себя хуже: значение молча не присваивалось, и туннель поднимался вообще без keepalive.

  • Нули из awg showconf больше не превращают AWG 2.0 в awg3 — инструмент печатает ContentPaddingAddition = 0 и остальные незаданные параметры нулями, и при импорте такого вывода обычный туннель выглядел как awg3. Одиночный ноль теперь читается как «не задано», диапазон вида 0-80 сохраняется.

  • Политики доступа снова работают на KeeneticOS 4.x — в 2.16.3 вкладка перестала прятаться, но ручки /api/access-policies* регистрировались только на 5.x: вкладка была пустой, а любое действие давало «Некорректный ответ сервера (200)» — запрос уходил в незарегистрированный путь и попадал в обработчик SPA, отдающий index.html с кодом 200. Гейт снят: команда ip policy есть с прошивки 2.12, устройства и глобальные интерфейсы на 4.x читаются. Заодно условная регистрация была ловушкой сама по себе — определение версии отдаёт 4.x, пока не заполнены данные NDMS, а маршруты ставятся один раз при старте, поэтому медленный NDMS на загрузке выключил бы вкладку и на 5.x. Отдельно: незарегистрированный путь под /api/ теперь отвечает JSON-ошибкой 404, а не страницей, — «загадочная ошибка 200» на стороне клиента больше не появится.

  • Панель эксперта sb-router в компактном режиме (#655) — компактный режим держит колонку контента в 960 пикселей при любой ширине окна, поэтому вёрстка панели, разложенная по ширине окна, не перестраивалась: заголовок наезжал на кнопки, а бейджи DNS-правил вылезали за свою колонку. Сетка теперь считается по контейнеру.

  • Порт связанного туннеля не расходится с портом прокси-клиента — при импорте конфига и в UI подставлялся порт из шаблона ссылки вместо реального listen клиента FreeTurn/WDTT; связка сверяется на загрузке роутера и после автостарта.

  • Автостарт FreeTurn и WDTT дожидается сети — подъём клиентов перенесён с ранней фазы старта на холодную загрузку с паузой на настройку DNS, перезапуск демона и событие поднятия WAN. WDTT в режиме vkcalls больше не бьётся о мёртвый 127.0.0.1:53 после перезагрузки роутера.

  • WDTT-сервер больше не оставляет OpkgTun с адресом, но без интерфейса — адрес выставлялся до того, как сервер поднимет интерфейс, и ndm уходил в цикл перегенерации конфигурации nginx (около одного reload в секунду, четверть процессора и подвисания запросов к роутеру на секунды) — та же поломка, что разбиралась для FakeIP в 2.15. Адрес теперь появляется после интерфейса, снятие идёт в безопасном порядке, а осиротевшие интерфейсы (падение сервера, SIGKILL демона, перезагрузка, восстановление из копии) убираются фоновой сверкой.

  • Периодическая сверка правил NAT для WDTT работала вхолостую — наличие правила проверялось по ненормализованной сети, совпадения не было никогда, и каждые 15 секунд правила пересобирались заново.

  • Длинные кириллические имена клиентов не рвутся — имя туннеля обрезалось по 60 байтам, то есть посреди символа; теперь по символам.

  • Резервное копирование не съедает память роутера — экспорт собирал весь архив в памяти, а импорт целиком оседал в куче: на mipsel/mips со 128-256 МБ и каталогом данных в десятки мегабайт это заканчивалось предсказуемо. Теперь экспорт пишется потоком, у импорта есть предел размера и файл на диске. Отдельно: маркер восстановления снимался только при перезапуске демона, и если после восстановления роутер перезагружался, FreeTurn и WDTT не поднимались уже никогда.

  • wdtt-server доставляется с зеркала, а не пакетом — бинарь на 12 МБ убран из репозитория и из aarch64-пакета, установка идёт закреплённой версией 0.1.6-awgm с проверкой контрольной суммы (та же модель, что у sing-box и FreeTurn). Раньше уже установленный файл считался достаточным без проверки версии и хеша, из-за чего обновление сервера не доехало бы ни до одного роутера.

  • Причина отсутствия модуля ядра видна в журнале — если для модели роутера нет модуля в поставке, обновление молча ничего не делало; теперь пишет об этом строку.

  • Ошибки iptables в журнале показывают текст, а не exit status 1 — по прежней строке причину сбоя установить было нельзя.

Изменения работы

  • Древние модели больше не получают модуль ядра — из поставки убраны KN-1110, KN-1111, KN-1112, KN-1121, KN-1210, KN-1211, KN-1213, KN-1221, KN-1310, KN-1311, KN-1510, KN-1511, KN-1610, KN-1611, KN-1613, KN-1621 и экспериментальный KN-1810-ndm4. На роутерах, где модуль уже установлен, он остаётся на месте и продолжает работать на AWG 2.0: обновление не находит файла под модель, ничего не копирует и не трогает маркер версии. Чистая установка на такой модели окажется без kernel-режима, доступным останется NativeWG.

  • sing-box обновлён до 1.14.0-beta.4-awgm.5 — сборка форка с поддержкой диапазона в persistent_keepalive_interval, перенесённая на upstream v1.14.0-beta.4 (в апстриме с beta.1 — JSON Schema для конфигурации плюс исправления).

Don't miss a new awg-manager release

NewReleases is sending notifications on new releases.