Что нового
-
Правила больше не слетают сами по себе. Когда прошивка пересобирает свои таблицы (правки в вебморде 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Дальше можно обновляться прямо из веб-интерфейса, кнопкой «Обновить».