10 KiB
AmneziaWG 3.1 на NanoPi R3S с FriendlyWrt
Эта адаптация основана на StressOzz/Zapret-Manager, commit 46eb923f414f5ac2b5bba1f79519696ea57f3b9a, версия панели 4.68. Версия адаптации — 4.68.2. Изменена установка AWG в LuCI/Web; остальные компоненты продолжают использовать прежние источники.
Проверка на устройстве: 27.10.2026 владелец NanoPi R3S сообщил, что адаптация работает как надо, и разрешил опубликовать результат для других владельцев. Это подтверждение владельца одного устройства; отдельные журналы handshake, проверки после перезагрузки и замеры скорости/температуры не собирались. Публикация закреплена тегом v4.68.2-r3s.1. В версии 4.68.2 изменены адреса скачивания и самообновления: все файлы теперь размещены на GitHub. Бинарник модуля и логика установки сохранены из проверенной версии 4.68.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 без сокращения:
curl -fL -o /tmp/zmw.sh https://raw.githubusercontent.com/Wenil925/Zapret-Manager/v4.68.2-r3s.1/ZapretManager_LuCI.sh
sh /tmp/zmw.sh
После обновления открыть вкладку AmneziaWG и нажать установку или переустановку.
Панель скачает только ядровой модуль из фиксированного тега на GitHub и проверит встроенный 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 получают адаптированную версию из ветки friendlywrt-r3s GitHub-форка Wenil925/Zapret-Manager, чтобы не потерять эту поддержку при обычном обновлении. Автоматическая синхронизация с GitHub автора не настроена: новые версии автора нужно переносить с сохранением изменений AWG. Старый SSH-менеджер zms остаётся исходной версией автора; эта адаптация относится к LuCI/Web.
После смены прошивки нужна новая проверка совместимости. Установщик не выбирает модуль только по номеру ядра.
DoH не удаляется перед установкой Forkozz
На проверенном роутере удаление DNS over HTTPS через панель повторялось четыре раза, но пакет оставался. Прямая команда apk del https-dns-proxy показала причину:
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, сначала посмотрите сведения и план удаления:
apk info -a brb
apk del --simulate brb https-dns-proxy
На проверенном устройстве план включал только brb, https-dns-proxy, libcares и libev. На другом устройстве список может отличаться; если он содержит нужные вам компоненты, сначала разберите зависимости.
Для перехода с BigRedButton выполните:
/etc/init.d/brb stop
/etc/init.d/brb disable
apk del brb https-dns-proxy
/etc/init.d/dnsmasq restart
Это удаляет и сам BigRedButton с его функцией автоподбора обхода. Затем проверьте отсутствие пакета и работу локального DNS:
apk info -e https-dns-proxy
nslookup openwrt.org 127.0.0.1
Первая команда при удалённом пакете ничего не выводит. Вторая должна вернуть IP-адреса. После этого обновите страницу панели и повторите установку Forkozz.
При перезапуске dnsmasq сообщение udhcpc: no lease, failing само по себе не доказывает сбой интернета: штатный init-скрипт OpenWrt использует 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 сборки производителя не подтверждено. Подтверждение относится к указанному образу и устройству. После замены прошивки или ядра требуется повторная проверка.
Тесты установщика выполняются без роутера и не загружают ядровые модули:
python3 tests/check_friendlywrt_awg.py
Они проверяют установку, повторное обновление закреплённого модуля, удаление, порядок загрузки зависимостей, отказ при повреждённой загрузке или другой прошивке, откат при ошибке APK и сохранение обычного пути для официального OpenWrt. Также проверяется синтаксис сгенерированного backend.