Skip to content

2.26.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 15:40

Исправления по аудиту от 5 октября

Большой набор исправлений по аудиту версии 2.25.2: уведомления, TorrServer, перехват DNS, трафик по устройствам, запуск и sing-box, подписки, автоподбор, обновления. Обновление ставится поверх, настройки переносятся сами.

Что нужно знать при обновлении

  • Перехват DNS клиентов теперь выключен по умолчанию, в том числе на уже установленных роутерах. Опция перехватывала любой трафик на порт 53, а не только DNS: ломались VPN-клиенты в LAN, подключённые к серверу на 53-м порту, и собственные резолверы в сети (Pi-hole, unbound). После обновления опция выключается один раз, в «Истории» появляется запись об этом. Если перехват нужен, включите его снова: «Настройки → Сеть». Для включённого перехвата появился список «Не перехватывать» (адреса и подсети, например VPN-сервер или резолвер в LAN). Делегированные IPv6-префиксы теперь тоже считаются локальными. Если dnsmasq не обслуживает интерфейс или его DNS выключен, перехват для него не включается.
  • TorrServer больше не работает от root. Он запускается от отдельного пользователя torrserver, база переезжает в /opt/torrserver/data автоматически при первом запуске. Если вы включали в TorrServer кэш на диск (UseDisk) в каталог, куда может писать только root, дайте пользователю torrserver право записи в этот каталог.

Что изменилось

Уведомления

  • Сообщения о падении sing-box или узла правила, через которое идёт Telegram, теперь доходят. Запасной путь «напрямую» узнаёт адрес сервера у bootstrap DNS из настроек, мимо DNS и FakeIP Prokop. Результат теста называет маршрут: «через правило», «обычным маршрутом роутера» или «напрямую, мимо Prokop». Если адрес не удалось узнать, причина пишется как ошибка DNS.
  • Сообщение «Prokop не запустился» повторяется до 30 минут, даже если при загрузке ещё не было интернета.
  • Фоновая задача уведомлений запускается раз в 5 минут, а раз в минуту только пока есть неотправленные сообщения. Если уведомления выключены, запуск, перезапуск и остановка Prokop их процесс не трогают.
  • Выключение уведомлений больше не стирает chat ID, категории, маршрут и срок предупреждения.
  • Длинное русское имя правила больше не ломает сообщение в Telegram. Скобки [ ] и { } в адресе webhook больше не превращаются в несколько запросов.
  • Предупреждения о подписках не повторяются после каждой перезагрузки. После продления подписки предупреждение о трафике снова придёт, когда трафик кончится.
  • Без сети отправка ограничена 60 секундами за проход и не задерживает проверки узлов.
  • Для webhook по http:// в интернет показывается предупреждение: токен в адресе уйдёт открытым текстом.
  • Пользователь с правом только на чтение видит кнопку «Отправить тест» неактивной с объяснением.

TorrServer

  • Рекомендуемые настройки применяются только при первой установке или по кнопке. Обновление Prokop, «Запустить» и «Обновить» больше не перезаписывают ваши настройки и не сбрасывают торренты. Если значения уже совпадают, настройки не отправляются вовсе.
  • Рекомендуемые настройки выключают UPnP, а окно подтверждения показывает реальный размер кэша в МБ.
  • Состояние TorrServer в карточке обновляется сразу, а не через час, поэтому кнопка «Запустить» появляется, как только TorrServer остановился.
  • Если на роутере стоит чужой TorrServer, Prokop не запускает его и не меняет его настройки, а карточка об этом говорит.
  • Обновление TorrServer требует примерно вдвое меньше места и качается сразу на флеш. Прерванное обновление чинится автоматически.
  • «TorrServer напрямую» больше не ломает трекеры из проксируемых списков (адреса FakeIP уходят в sing-box).
  • База TorrServer сохраняется при sysupgrade. Все ошибки TorrServer переведены. Если рекомендуемые настройки не применились, карточка предупреждает.

Сеть и трафик по устройствам

  • Kill-switch защищает интерфейсы с любыми допустимыми именами (раньше имена с + и : молча оставались без защиты) и быстрее замечает молчащий sing-box (5 секунд вместо 10).
  • Для исключённых устройств со своим DNS kill-switch снова сохраняет исключение.
  • Правила Discord больше не забирают UDP 443 общих диапазонов Cloudflare (QUIC чужих сайтов).
  • Поле EDNS Client Subnet проверяет значение так же, как роутер.
  • Трафик по устройствам: поддельные адреса источника больше не забивают таблицы, IPv6-адреса сводятся к устройству по MAC, широковещательные адреса не считаются устройствами. Список ограничен 200 самыми активными устройствами и предупреждает, когда он неполный. В панели сказано, что именно считается. Сброс счётчика замечается.

Запуск, sing-box и подписки

  • Если запуск прервался во время загрузки списков, Prokop больше не остаётся заблокированным до перезагрузки: оставшийся временный sing-box останавливается при следующем запуске или остановке.
  • Расширенные параметры xHTTP, которые установленный sing-box-extended не понимает, отбрасываются с предупреждением, и запуск больше не падает на них.
  • Ручная ссылка, которую sing-box не может собрать (kcp, quic), пропускается с предупреждением, а не ломает всю конфигурацию.
  • Подписки Clash с кавычками и экранированием читаются как YAML, поддерживаются h2-opts и vmess httpupgrade.
  • Проверка новой конфигурации при перезапуске больше не меняет то, что показывает панель, и не удаляет файлы правил, нужные работающему sing-box.
  • Выбор серверов в группах сохраняется при перезагрузке роутера. Группы Priority не сохраняются.
  • Пока Prokop стартует при загрузке, LAN всегда получает DNS от dnsmasq.
  • При холодном старте подписка, которая качается через другое правило, ждёт это правило, а не качается напрямую. Если временный прокси для списков не поднялся, запуск сразу останавливается с понятной причиной.
  • Имя сервера из подписки, похожее на параметр команды, больше не передаётся в dig.
  • Ускорены проверка DNS на вкладке «Диагностика» и проверки при каждом запуске.

Автоподбор

  • Неудачная проверка после применения сначала откатывается, а уже потом выясняется, была ли это потеря интернета. Плохая стратегия не держится в работе лишние минуты.
  • «Нет интернета» требует подтверждения вторым независимым адресом. Контрольная проверка только устанавливает TCP-соединение.
  • Наблюдение судит по доле неудачных проверок: «мигающая» стратегия откатывается, а одна случайная ошибка сразу после применения больше не ставит паузу на сутки.
  • Правка настроек, не касающаяся применённой стратегии, больше не снимает наблюдение. Откат в этом случае возвращает только строку стратегии и сохраняет вашу правку.
  • Наблюдение, закончившееся без результата, записывается в «Историю» и приходит уведомлением.
  • Счётчик ответов считает только пробные соединения самого роутера, занятые порты и умерший nfqws больше не записываются в вину стратегии. Интерфейс различает «проверка без результата» и «проверка не прошла».

Обновления

  • Если обновление через install.sh не удалось, прежний Prokop возвращается со своей конфигурацией. Прерывание обновления (Ctrl-C, SIGTERM) тоже откатывает его, а разрыв SSH больше не обрывает обновление посередине. Пакеты для отката берутся из каталога релизов, без лимита GitHub API.
  • Установка stable и tiny sing-box больше не скачивает пакет второй раз, пока Prokop остановлен.
  • Зависшая загрузка действительно останавливается, коррекция часов после загрузки роутера её не обрывает, а файл больше опубликованного размера не докачивается.
  • В карточке обновления появился этап «Восстановление после ошибки», ошибка показывается у того этапа, где она случилась. Итог «Готово / Ошибка» больше не пропадает и не превращается обратно в «Обновляется…». Время считается по часам роутера, в том числе у пользователя с правом только на чтение. Панель не перерисовывает всю страницу каждую секунду.
  • Ошибки компонентов, предупреждения kill-switch и ошибки загрузки списков показываются по-русски. Незнакомый текст заменяется русской строкой со ссылкой на системный журнал.

Что проверено

  • PASS: полный прогон автоматических тестов бэкенда от root и от непривилегированного пользователя без uci (как в CI); фронтенд (prettier, eslint, tsc, vitest, сборка). На каждое исправление добавлен или расширен тест, который не проходит на 2.25.3 и проходит теперь. Перехват DNS, kill-switch, TorrServer напрямую и счётчик автоподбора проверены на настоящем nft.
  • PASS: русский интерфейс панели «Устройства», окна TorrServer и панели прогресса обновлений отрисован в Chromium на 1440/1024/768 без горизонтальной прокрутки и обрезанных кнопок (без темы LuCI).
  • NOT TESTED: на роутере. В первую очередь стоит проверить: уведомление при убитом sing-box (prokop notify_status), запуск TorrServer от пользователя torrserver и перенос базы, перехват DNS с исключениями, перезагрузку с сохранением выбора серверов, холодный старт с подпиской через правило, откат обновления через install.sh.