Repository navigation
Исключение устройства снова применяется
Срочное исправление. Если в правиле были и «Исключить устройства», и встроенные списки с адресами (Telegram, Cloudflare, Discord, Meta, Twitter и подобные), Prokop собирал конфигурацию, которую sing-box 1.14 отвергал. Перезагрузка прерывалась, на роутере оставалась старая конфигурация, и устройство продолжало ходить через туннель, хотя в настройках уже было исключено. Обновление ставится поверх, настройки не меняются, ничего делать вручную не нужно.
Что изменилось
-
Исключение устройства больше не ломает конфигурацию sing-box. Для списков с адресами sing-box 1.14 сначала получает ответ DNS (шаг
evaluate), а уже потом сверяет адреса из ответа со списком. У этого шага нет собственных условий. Когда в правиле было исключённое устройство, Prokop оборачивал шаг в условие «и» с пустым первым условием, и sing-box отвечалparse dns rule[N]: missing conditions. В журнале это выглядело как[fatal] Generated sing-box configuration is invalid ... Aborted.сразу после сохранения правила, а nft и sing-box продолжали работать по старым правилам без исключения.Теперь у такого шага условием становится само исключение: «источник не исключённое устройство». Остальные правила с исключением не изменились.
Что проверено
- PASS: автоматические тесты бэкенда (полный прогон). Новая проверка
tests/sing_box_excluded_source_dns_rules.sh: ни одно правило DNS и маршрутизации не остаётся без условий, шагevaluateпропускает исключённое устройство. Без исправления она падает на том же правилеdns rule[5]. - PASS:
sing-box check(сборка 1.14.1 из исходников) на конфигурации, собранной по отчёту пользователя: до исправления та же ошибкаparse dns rule[5]: missing conditions, после исправления конфигурация принимается. - NOT TESTED: исправленная сборка на роутере.