github badigit/MagiTrickle_mod_badigit 0.5.2-badigit.16

4 hours ago

Что нового

  • Правила больше не слетают сами по себе. Когда прошивка пересобирает свои таблицы (правки в вебморде Keenetic, переподключение провайдера), МТ раньше пытался восстановиться в тот же момент и иногда проигрывал гонку, оставаясь без правил до перезапуска. Теперь хук netfilter.d только сигналит демону, а восстановлением занимается отдельный коммиттер: складывает частые события в один проход и повторяет попытку при неудаче.

  • Проксирование включается вдвое быстрее: 7 секунд вместо 14 на конфигурации с 38 группами. Все группы применяются одним коммитом вместо пары iptables-save/restore на каждую. Остановка тоже ускорилась, раньше на медленных роутерах она не укладывалась в отведённое init.d время и обрывалась на полпути, оставляя правила в системе.

  • Отдельные устройства можно вывести из-под МТ. В настройках появилось поле для IP-адресов и подсетей: их трафик идёт обычным маршрутом роутера мимо всех групп. Для консолей, телевизоров и всего, чему проксирование мешает. Применяется сразу, без перезапуска.

  • Приоритет direct-групп настраивается. «Всегда выигрывает» (по умолчанию): цепочка direct встаёт первой, поэтому такая группа перебивает остальные независимо от места в списке. «По порядку групп»: прежнее поведение, где группа выше побеждает, а широкое direct-правило внизу работает как catch-all. Переключатель в настройках, перезапуск не нужен.

  • Сайты не проскакивают мимо прокси при первом открытии. Браузеры спрашивают HTTPS-запись DNS (тип 65) параллельно с A и вправе соединяться по адресам из подсказок, не дожидаясь A-ответа. Раньше такой первый запрос уходил напрямую, а ipv6hint провозил IPv6 мимо блокировки AAAA. Теперь адреса из подсказок попадают в ipset.

  • Меньше лишней работы с ipset. Записи /32 и /128 из DNS не пересоздаются на каждой синхронизации, а широкие подсети в правилах больше не порождают мусорные одиночные адреса.

Надёжность

  • Сервис не остаётся выключенным после установки обновления, если остановка затянулась
  • Неудачное поднятие правил откатывается целиком, ошибки снятия не теряются в логе
  • Роутинг не поднимается заново, если демон уже начал выключаться
  • Операции с цепочками ядра идут строго по одной: обновление подписок больше не может вклиниться в перезапуск правил
  • TTL записи в ipset считается от нормализованного значения

Для разработчиков

  • /api/v1/lookup называет победителя арбитража. К списку совпавших правил добавлено поле winner: какая группа реально выигрывает домен или адрес и почему (exact, namespace, wildcard, regex, ipset-first). Флаг pending показывает, что правило пока не применяется, потому что адреса ещё нет в наборе, а routing_active отличает «правил нет» от «роутинг снят»
  • Инструменты диагностики в репозитории: tools/domain-verdict (вердикт «виноват ли роутинг в том, что домен не открывается»: правила, ipset, direct против прокси, съём трафика на WAN), tools/nettrace (исходящие соединения процесса на Windows, TCP и UDP), tools/connwatch (журнал соединений устройства с пометкой покрытия правилами)

Установка / обновление на Keenetic (Entware):

opkg update && opkg install wget-ssl ca-certificates
wget -qO- https://raw.githubusercontent.com/badigit/MagiTrickle_mod_badigit/mod_badigit/scripts/install.sh | sh

Дальше можно обновляться прямо из веб-интерфейса, кнопкой «Обновить».

Don't miss a new MagiTrickle_mod_badigit release

NewReleases is sending notifications on new releases.