Skip to content

0.5.2-badigit.13

Choose a tag to compare

@badigit badigit released this 26 May 20:52
· 9 commits to mod_badigit since this release

Главное

Вкладка «Настройки» с глобальным тумблером. 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