Skip to content

2.28.3

Latest

Choose a tag to compare

@github-actions github-actions released this 06 Oct 16:40

Исключение устройства снова применяется

Срочное исправление. Если в правиле были и «Исключить устройства», и встроенные списки с адресами (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: исправленная сборка на роутере.