# AmneziaWG 3.1 на NanoPi R3S с FriendlyWrt Эта адаптация основана на [StressOzz/Zapret-Manager](https://github.com/StressOzz/Zapret-Manager), commit `46eb923f414f5ac2b5bba1f79519696ea57f3b9a`, версия панели 4.68. Версия адаптации — 4.68.1. Изменена установка AWG в LuCI/Web; остальные компоненты продолжают использовать прежние источники. **Проверка на устройстве:** 27.10.2026 владелец NanoPi R3S сообщил, что адаптация работает как надо, и разрешил опубликовать результат для других владельцев. Это подтверждение владельца одного устройства; отдельные журналы handshake, проверки после перезагрузки и замеры скорости/температуры не собирались. Проверенный выпуск закреплён тегом [v4.68.1-r3s.1](https://gitea.bvrdo.online/wenil/Zapret-Manager/releases/tag/v4.68.1-r3s.1). ## Поддерживаемый образ - NanoPi R3S / R3S LTS, архитектура `aarch64_generic`, цель `rockchip/armv8`. - `R3S-Series-FriendlyWrt-25.12.img.gz` из выпуска производителя `FriendlyWrt-2026-10-13`. - Пользовательская часть OpenWrt 25.12.5, реально работающее ядро **6.1.141**. - SHA256 образа: `3cf37e2b91f80f51dd54d601efc3af8c9f2c69256488b874f9324aa54c34e74a`. Пакет `kernel` в базе APK этой прошивки сообщает версию 6.12.94. Официальный `kmod-amneziawg` под 6.12.94 на работающем ядре 6.1.141 не загружается. Адаптация проверяет `uname -r`, модель и SHA256 штатных `configs.ko` и `udp_tunnel.ko`. ## Установка панели Сначала сохранить настройки панели её штатной кнопкой резервного копирования. Затем выполнить по SSH две команды по очереди. Скопировать полный URL без сокращения: ```sh curl -fL -o /tmp/zmw.sh https://gitea.bvrdo.online/wenil/Zapret-Manager/raw/tag/v4.68.1-r3s.1/ZapretManager_LuCI.sh sh /tmp/zmw.sh ``` После обновления открыть вкладку **AmneziaWG** и нажать установку или переустановку. Панель скачает только ядровой модуль из фиксированного тега на Gitea и проверит встроенный SHA256. Утилиты `amneziawg-tools`, протокол LuCI, импорт конфигурации и настройка сети проходят через существующий установщик. Зависимость APK удовлетворяется тем же механизмом виртуального `kmod-amneziawg`, который уже был предусмотрен автором панели для вручную установленного модуля. При ошибке загрузки, несовпадении SHA256 или отпечатков прошивки установка прекращается. Перехода к модулю официального ядра 6.12.94 для этого профиля нет. Действующая сборка модуля закреплена: обновление утилит через панель не заменяет её случайным новым kmod. ## Автозагрузка, удаление и обновление Создаётся `/etc/init.d/zm-awg-r3s`, который до запуска сети проверяет ядро и отпечатки файлов, затем загружает штатные зависимости и AWG. Он не меняет маршруты, ключи и firewall. Признак ручной установки хранится в существующем `/etc/zm-awg/kmod-manual`. Удаление AmneziaWG через панель удаляет также этот init-скрипт. При неудачной записи файлов или регистрации виртуального пакета прежние файлы восстанавливаются. Штатная резервная копия панели сохраняет настройки, а не всю прошивку или бинарный модуль; при восстановлении установщик должен заново получить подходящий модуль. Обновления самой панели и команда `zmw` получают адаптированную версию с Gitea, чтобы не потерять эту поддержку при обычном обновлении. Автоматическая синхронизация с GitHub автора не настроена: новые версии автора нужно переносить с сохранением изменений AWG. Старый SSH-менеджер `zms` остаётся исходной версией автора; эта адаптация относится к LuCI/Web. После смены прошивки нужна новая проверка совместимости. Установщик не выбирает модуль только по номеру ядра. ## DoH не удаляется перед установкой Forkozz На проверенном роутере удаление DNS over HTTPS через панель повторялось четыре раза, но пакет оставался. Прямая команда `apk del https-dns-proxy` показала причину: ```text World updated, but the following packages are not removed due to: https-dns-proxy: brb ``` `brb` — отдельный пакет BigRedButton, который объявляет `https-dns-proxy` своей зависимостью. Пока установлен `brb`, APK сохраняет DoH. Перезагрузка эту зависимость не устраняет. Если вы переходите с BigRedButton на Forkozz, сначала посмотрите сведения и план удаления: ```sh apk info -a brb apk del --simulate brb https-dns-proxy ``` На проверенном устройстве план включал только `brb`, `https-dns-proxy`, `libcares` и `libev`. На другом устройстве список может отличаться; если он содержит нужные вам компоненты, сначала разберите зависимости. Для перехода с BigRedButton выполните: ```sh /etc/init.d/brb stop /etc/init.d/brb disable apk del brb https-dns-proxy /etc/init.d/dnsmasq restart ``` Это удаляет и сам BigRedButton с его функцией автоподбора обхода. Затем проверьте отсутствие пакета и работу локального DNS: ```sh apk info -e https-dns-proxy nslookup openwrt.org 127.0.0.1 ``` Первая команда при удалённом пакете ничего не выводит. Вторая должна вернуть IP-адреса. После этого обновите страницу панели и повторите установку Forkozz. При перезапуске dnsmasq сообщение `udhcpc: no lease, failing` само по себе не доказывает сбой интернета: штатный [init-скрипт OpenWrt](https://github.com/openwrt/openwrt/blob/main/package/network/services/dnsmasq/files/dnsmasq.init) использует udhcpc для проверки наличия другого DHCP-сервера. Ориентируйтесь также на результат проверки DNS. Предупреждение `UNTRUSTED signature` о локальном индексе FriendlyWrt в подтверждённом случае не помешало удалению. ## Проверки и ограничения Модуль AWG `3.1.20260906` собран из официального тега с поправкой совместимости `timer_delete` для vendor-ядра. Совпали vermagic и CRC всех 198 импортируемых символов; конфигурация извлечена из точного образа. Исходники для пересборки, конфигурация, таблица CRC и подробности находятся в `vendor/awg/r3s-fw20261013/`. Владелец R3S подтвердил работу адаптации; результаты отдельных измерений скорости и температуры не заявляются. Использован GCC 13.3 вместо GCC 11.3 производителя; точное совпадение commit исходников ядра с commit сборки производителя не подтверждено. Подтверждение относится к указанному образу и устройству. После замены прошивки или ядра требуется повторная проверка. Тесты установщика выполняются без роутера и не загружают ядровые модули: ```sh python3 tests/check_friendlywrt_awg.py ``` Они проверяют установку, повторное обновление закреплённого модуля, удаление, порядок загрузки зависимостей, отказ при повреждённой загрузке или другой прошивке, откат при ошибке APK и сохранение обычного пути для официального OpenWrt. Также проверяется синтаксис сгенерированного backend.