github yandexru45/netshift 0.9.12

3 hours ago

Что нового в 0.9.12

Релиз собирает 103 коммита: автоматические обновления с откатом, отчёт для поддержки, подмена HWID для подписок, DNS-секции с пулом серверов, аварийный переход напрямую и ускорение интерфейса.

Автообновления с откатом

NetShift и sing-box-extended обновляются сами — после загрузки роутера и/или по расписанию. Перед обновлением и после него проверяется, что связь и секции работают; если после обновления перестало работать, ставится прежняя версия, а сломавший роутер выпуск запоминается и пропускается. Стандартное ядро из прошивки не трогается.

Источник обновлений выбирается: стабильные выпуски или тестовые сборки форка, с зеркалами GitHub для загрузок — на случай, когда GitHub режет адрес роутера.

Отчёт для поддержки

Вкладка «Диагностика» собирает версии, настройки, конфиг и журналы в один текст, из которого убраны пароли, ссылки и адреса серверов: серверы становятся host-N, списки — <N entries>, скрываются подсеть ECS и идентификаторы DNS-провайдера. Отдельная команда get_crash_log достаёт из системного журнала последнее падение sing-box со стеком.

Подписки

  • Подмена HWID и устройства. Панели вроде Remnawave выдают подписку только конкретному приложению и проверяют заголовки X-HWID, X-Device-OS, X-Ver-OS, X-Device-Model и User-Agent. Теперь секция может представиться нужным клиентом, а встроенный генератор заполнит поля так, как их шлёт Happ на Android, iOS, Windows, macOS или Android TV, либо INCY.
  • Предпросмотр фильтров — видно, сколько серверов останется после применения фильтров по словам, протоколу, транспорту и защите, ещё до сохранения.
  • Большие ленты разбираются одним проходом jq, несколько слов фильтра можно писать в одной записи через |.
  • Плановое обновление больше не перезапускает sing-box, если у узлов сменились только имена.

DNS

  • Свой DNS у каждой секции (own_dns_server).
  • Несколько серверов в DNS-секции — dns_pool_server с режимами priority и parallel.
  • Таблица DNS-серверов со своим маршрутом для каждого сервера.

Маршрутизация

  • Аварийный переход напрямую (failover_direct): пока отвечает хоть один сервер секции, всё идёт как обычно; когда не отвечает никто — трафик секции уходит в direct-out, и возвращается, как только сервер ответил.
  • Ссылки TUIC и AnyTLS.
  • Port hopping Hysteria2 из ссылки — mport/ports и hop-interval.
  • Звонки по Wi-Fi напрямую (wifi_calling_direct добавляет UDP 500 и 4500 к прямым портам).

Интерфейс и скорость

Настройки, которые не влияют на работающий сервис (источник обновлений, зеркала, уведомление о версии, плитки дашборда, интервал монитора), применяются без перезапуска. Страница NetShift открывается заметно быстрее: меньше вызовов к роутеру, тест DNS и список соединений запускаются только когда открыта их вкладка, sing-box version спрашивается один раз и кешируется.

Исправления

  • Трафик самого роутера (wget, opkg) для проксируемых доменов не проксировался — mangle_output не имел правил маркировки.
  • block_leaks: изменённые пересылки DNS по зонам не доходили до dnsmasq.
  • Адрес прокси-сервера больше не резолвится через DNS, чей detour — этот же прокси.
  • independent_cache не пишется для sing-box 1.14+ (опция устарела).
  • exclude_ntp действует и на синхронизацию времени самого роутера.
  • Обращение из LAN к собственному адресу роутера не маркируется.
  • Плановые обновления списков и подписок запускают cron на новом роутере.
  • Уведомление о новой версии не залипает после обновления; ответ DNS или GitHub на последней попытке не считается провалом; воркер повторных попыток подписки не копится после сбоев.
  • Обновление сохраняет установленное ядро, а «unsupported links» называет ядро в журнале.
  • Первый запуск без подключения показывает понятную подсказку вместо ошибки.
  • Секции показывают только то, что к ним относится.

Обновление

sh <(wget -O - https://raw.githubusercontent.com/yandexru45/netshift/refs/heads/main/install.sh)

Обновление через пакет сохраняет конфиг и установленное ядро. Если ставите вручную, ставьте все три пакета: netshift, luci-app-netshift и luci-i18n-netshift-ru.


Участники релиза: @yandexru45, @cergo666, @kjljxybr — спасибо за код, тесты и ревью. Полный список — в README, раздел «Участники».

Don't miss a new netshift release

NewReleases is sending notifications on new releases.