Релиз посвящён производительности и стабильности: разговор с роутером ускорился в несколько раз (через объединение запросов и кеши), модуль awg-proxy доведён до идентичности с образцом amnezia-kernel, sing-box получил режим без роутерных прокси связок для тех, кто будет использовать sing-box router, появилось безопасное резервное копирование управляемых серверов.
Производительность
- NDMS-запросы ускорены — средняя задержка запросов к роутеру снижена до 50%, число «медленных» обращений (>1 с) упало.
- Параллельные циклы и кеши — для всех туннелей теперь запрашивается параллельно, некоторые подсистемы переведены на кешированные данные вместо повторных запросов.
- Задержка запросов после сохранения изменний в конфигурации роутера — после
saveдаём роутеру таймаут и сразу инвалидируем кеш. - Метрики — периодический итог работы в логе: (сколько запросов схлопнулось в один HTTP-вызов), среднее время ответа на запрос.
NativeWG / awg-proxy (kmod 1.1.7 → 1.1.9)
- Самостоятельная XChaCha20-Poly1305 реализация (PR #164 автор @AYastrebov) — заменён вызов kernel crypto API на встроенную byte-for-byte реализацию.
- Прозрачный пересчёт MAC2 на cookie-обмене (PR #155 автор @AYastrebov) — при rate-limit сервер присылает encrypted cookie, дальнейшие handshakes должны нести MAC2 поверх своего MAC1. Без этого fix'а под нагрузкой клиент стабильно ломался после первого
cookie reply. Спасибо Андрею. - S4 transport prefix — заполняется случайными байтами, как в reference, а не нулями.
- Жёсткая валидация конфигов — отклоняется неточный hex publickey и пересекающиеся magic headers.
- HR Neo policies отделены от common — теперь в политики созданные HR Neo нельзя добавить устройства, это не требуется для работы этого инструмента.
Для применения нового модуля перезагрузка роутера обязательна.
Sing-box: переключатель NDMS-прокси
- Опция «Создавать NDMS Proxy для sing-box» — в настройках появился toggle, позволяющий выключить создание NDMS Proxy-объектов для sing-box туннелей. Зачем: некоторые сценарии маршрутизации не требуют NDMS-проксей, и их создание добавляло лишнюю нагрузку на роутер при каждом save.
- На странице туннеля бейдж показывает «via sing-box», iperf и другие тесты отключёны.
- Дедупликация туннелей по fingerprint — повторные вызовы с теми же outbound-параметрами больше не создают дубли в конфиге.
Sing-box router: bypass-порты и фильтрация
- Bypass пресеты по портам — на странице sing-box роутера в разделе «Дополнительно» теперь можно выбрать порты, трафик по которым пойдёт мимо sing-box маршрутизатора:
- L2TP / IPsec / IKE / NTP / NetBIOS / SMB — типичные локально-используемые UDP-протоколы, которые иначе подхватывались sing-box'ом и ломались;
- Дополнительные UDP/TCP порты вводятся вручную, валидируются (порт 0 отклоняется), сортируются и стабильно реконсилируются;
- Filtering mode — добавлен режим фильтрации в sing-box; правила можно генерировать на лету (
generating-srs). - Inline наборы правил как .srs файлы — inline-наборы правил больше не интерпретируются на каждый запрос; компилируются в
.srsи переиспользуются. На странице правил появилось каскадное удаление: при удалении rule-set'а очищаются все ссылки на него в зависимостях. - JRS/inline ruleset парсер — несколько итераций улучшений: корректная обработка инлайнового списка при редактировании rule set'ов, лучше UX модалок, цветовая подсветка JSON-схемы.
- DNS — улучшения отображения и UX.
Резервное копирование управляемых серверов
- Полный backup управляемых серверов с приватными ключами — на странице «Серверы» появились кнопки Export/Import:
- При создании сервера приватный ключ теперь сохраняется в storage; для legacy-серверов автоматически подтягивает ключи при первом старте программы;
- ASC-обфускация проходит валидацию и верификацию перед записью.
- Persisted selection — выбранный сервер сохраняется между перезагрузками страницы (localStorage), кнопки Export/Import в одном стиле с туннелями.
NativeWG — стабилизация
- Issue #136: handshake-fail на replace-config (PR #167) — при замене конфига туннеля приватный ключ и DNS не синхронизировались с интерфейсом, и сервер начинал отказывать в handshake. Теперь sync делается явно. Добавлен regression-тест на
replace-config peer-no(PR #163). - Убрана петля ExternalRestart для NWG-туннелей (PR #171) — в редких случаях orchestrator уходил в бесконечный цикл рестарта NWG-туннеля. Триггер устранён. Но роутер по своей логике еще может административно выключить туннель если посчитает что он не работает. Работа в этом направлении еще будет продолжена.
Единое логирование
- Полная унификация на ScopedLogger (PR #170) — все модули пишут в один поток через с подгруппами (
orchestrator,kmod,storage,httpи т. д.).
Изменения работы
- Программа больше не пытается запустить hrneo , если HR Neo не установлен (PR #175).
- Geodata: запрет правки внешних файлов — геофайлы, привязанные к внешним источникам (vernette/v2ray-rules-dat и др.), больше не редактируются вручную. Под капотом — переработана работа со списками (geofile adoption для HR Neo, routed geo downloads, защита от записи пустых конфигов).
- Frontend в Go-бинарнике — статические файлы теперь упакованы прямо в исполняемый файл, отдельная директория не нужна.
- OPKG storage: исправлено отображение свободного места при установке OPKG во внутренюю память.
Frontend / UI
- Иконки — на карточки можно поставить иконки из новой галереи.
- Sync favicon с акцентным цветом — favicon в браузере подстраивается под выбранную тему.
- Тёмная тема: автоопределение системы — отдельный режим «по настройке системы» в выборе темы.
- Компактный «старый» режим — в настройках появился toggle на возврат к классической компактной плотности списков (по запросам пользователей).
- Sing-box: dense mode — более плотный вид списка туннелей sing-box.
- Унифицированная типографика и кнопки в карточках туннелей — singbox и AWG-карточки приведены к одному виду.
- Список туннелей sing-box — переработан UX, лучшие отступы, единые apply-кнопки.
- Селекторы интерфейсов — улучшены панели выбора (sing-box, NWG, маршруты).
- AWG конфиг-анализатор в редакторе туннеля — подсветка проблем прямо в форме редактирования.
- Матрица мониторинга — у туннелей в матрице теперь видны бейджи типа (AWG/NWG/Sing-box) и метка «маршрут по умолчанию».
- Таблицы соединений - теперь корректно подхватывают тему (раньше на тёмной теме оставались светлые элементы).
- Welcome banner больше не мигает при первой загрузке.
- GitHub-ссылка в настройках — быстрый переход в репозиторий.
- Объединённые иконки тестов туннелей — раньше каждый тест имел свою иконку, теперь они визуально согласованы (жаль не поступила рекламный контракт от крупного банка и пришлось отказаться от их логотипа).
- Кнопка «Sing-box Proxy» перенесена в более логичное место.
Диагностика
- Обогащённые и санитизированные отчёты — отчёты диагностики собирают больше системного контекста, при этом чувствительные данные (приватные ключи, токены) фильтруются.
- Чувствительные хосты в логах sing-box скрываются — IP-адреса и доменные имена в журнале sing-box обезличиваются (порт сохраняется). Можно безопасно скидывать кусок лога в чат поддержки.
- Мульти-фильтры в журнале — фильтрация записей сразу по нескольким уровням и источникам; добавлен переключатель показа таймстампов.
- Логи в отчёте — только warn/error — раньше отчёт распухал от info-уровня.
- Журнал: точная пауза при прокрутке вверх + экспорт — лог не «убегает», когда листаешь историю.
- About-tab TXT export — экспортируется с локальным временем.
- Кнопка скачивания отчёта убрана из лога — отчёт качается со страницы Диагностика.
Благодарности
- @AYastrebov — серия фундаментальных правок в
awg-proxy.ko: самостоятельная XChaCha20-Poly1305, MAC2 cookie pipeline. - @miuirussia — filtering mode и generating-srs для sing-box, CI/CD, серию правко и вклад в singbox интеграцию.
- @Dude_47, всем тестировщикам из telegram-чата и тем, кто открывал issues — за репорты, дебаг-логи и терпение.
- @iquibik - за самоотдачу и огромный вклад в правку и устранения техдолга.
- @WareandSoft aka @TorTik59 aka @DevRedOWL - за UI/frontend полировки, исправления и ворох идей, за тесты. За новые функции (поддержка Amnezia Premium конфигов и многое другое)
- Всех кого забыл - простите великодушно, если не указал вас персонально или не указал ваш вклад в проект, я обязательно исправлюсь, ваших заслуг это нисколько не умоляет и ваш вклад очень ценен.
- Всем - за поддержку финансовую и моральную. К следущей версии ваши ники будут перечислены в секции благодарности.