Главное
Вкладка «Настройки» с глобальным тумблером. Pause/resume без перезапуска процесса — снимаются iptables MT-цепи, ipset, ip rule/route и DNS-overrider. Трафик идёт мимо MT. Состояние переживает перезагрузку: при старте с выключенным MT поднимается только HTTP API, чтобы тумблер можно было вернуть. Там же кнопка перезапуска сервиса и аптайм.
Защита от петли через loopback. Битый CIDR в ipset мог накрывать 127.0.0.0/8 и уводить локальные DNS-запросы магитрикла обратно в TPROXY. Все PREROUTING-jump'ы MT-цепей теперь идут с ! -i lo.
Исправления
- Auto-sync подписок больше не воскрешает группы на паузе. Проверка шла на «процесс жив» вместо «routing активен» — через минуту после паузы подписки возвращались. Заодно чинит холодный старт с выключенным MT и
AddGroup/ImportConfigна паузе. - Подписка на link-events до старта маршрутизации. Иначе интерфейс, поднявшийся между Enable группы и подпиской, не триггерил хук и маршрут на нём не устанавливался.
- Игнор
NEWLINKдля DOWN-интерфейсов. Раньше любойRTM_NEWLINKдёргал хук и засорял лог ошибками. - Шлюз в маршруте для broadcast-интерфейсов (eth, wifi, v4+v6). Без явного gateway default-маршрут через физический интерфейс не работал на части конфигураций.
- Подписочные группы не перестраиваются при неизменном фиде. Сохраняет накопленный в ipset DNS-кэш и убирает периодическую запись
config.yamlна флешку.
Маршрутизация правил
Exact и namespace правила сосуществуют в одном узле trie. Правило Domain и Wildcard/Namespace на одну и ту же строку больше не перезаписывают друг друга: на самом домене побеждает exact, на поддомене — namespace. Внутри слота — first-insert-wins. Следствие: обычные группы теперь приоритетнее подписок.
Стабильность
- Защита от nil RR в фильтре AAAA-ответов. Случались паники на пустых RR-секциях апстрима.
- Ограничение размера карты доменов в DNS-capture (10 000). Защита от OOM при включённом захвате на долго работающем роутере.
- Подписочный fetch: лимит редиректов (5) + детекция петель. Битый источник с циклом
301-ов больше не вешает обновление подписки. recordsCache: сравнение IP черезnet.IP.Equal. Корректная работа со смешанными представлениями v4/v6.
Установка / обновление на 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