Files

94 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AmneziaWG 3.1 на NanoPi R3S с FriendlyWrt
Эта адаптация основана на [StressOzz/Zapret-Manager](https://github.com/StressOzz/Zapret-Manager), commit `46eb923f414f5ac2b5bba1f79519696ea57f3b9a`, версия панели 4.68. Версия адаптации — 4.68.2. Изменена установка AWG в LuCI/Web; остальные компоненты продолжают использовать прежние источники.
**Проверка на устройстве:** 27.10.2026 владелец NanoPi R3S сообщил, что адаптация работает как надо, и разрешил опубликовать результат для других владельцев. Это подтверждение владельца одного устройства; отдельные журналы handshake, проверки после перезагрузки и замеры скорости/температуры не собирались. Публикация закреплена тегом [v4.68.2-r3s.1](https://github.com/Wenil925/Zapret-Manager/releases/tag/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 без сокращения:
```sh
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](https://github.com/Wenil925/Zapret-Manager/tree/friendlywrt-r3s), чтобы не потерять эту поддержку при обычном обновлении. Автоматическая синхронизация с 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.