Files
Zapret-Manager/docs/friendlywrt-awg.md
T

6.6 KiB
Raw Blame History

AmneziaWG 3.1 на NanoPi R3S с FriendlyWrt

Эта адаптация основана на StressOzz/Zapret-Manager, commit 46eb923f414f5ac2b5bba1f79519696ea57f3b9a, версия панели 4.68. Версия адаптации — 4.68.1. Изменена установка AWG в LuCI/Web; остальные компоненты продолжают использовать прежние источники.

Поддерживаемый образ

  • 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:

curl -fL -o /tmp/ZapretManager_LuCI.sh https://gitea.bvrdo.online/wenil/Zapret-Manager/raw/branch/main/ZapretManager_LuCI.sh &&
sh /tmp/ZapretManager_LuCI.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.

После смены прошивки нужна новая проверка совместимости. Установщик не выбирает модуль только по номеру ядра.

Проверки и ограничения

Модуль AWG 3.1.20260906 собран из официального тега с поправкой совместимости timer_delete для vendor-ядра. Совпали vermagic и CRC всех 198 импортируемых символов; конфигурация извлечена из точного образа. Исходники для пересборки, конфигурация, таблица CRC и подробности находятся в vendor/awg/r3s-fw20261013/.

На настоящем R3S загрузка, handshake, скорость и температура пока не проверены. Использован GCC 13.3 вместо GCC 11.3 производителя; точное совпадение commit исходников ядра с commit сборки производителя не подтверждено. Проверки CRC не заменяют испытание на устройстве. Первый тест проводить с возможностью локального восстановления роутера.

Тесты установщика выполняются без роутера и не загружают ядровые модули:

python3 tests/check_friendlywrt_awg.py

Они проверяют установку, повторное обновление закреплённого модуля, удаление, порядок загрузки зависимостей, отказ при повреждённой загрузке или другой прошивке, откат при ошибке APK и сохранение обычного пути для официального OpenWrt. Также проверяется синтаксис сгенерированного backend.