Перейти к содержимому
Список изменений

Список изменений

Что изменилось в каждой версии keen-pbr и что делать при обновлении.

3.4.0

Что нового

  • Обзор.
    Страница «Обзор системы» стала компактнее: вверху состояние сервиса, ниже таблица outbounds, список проблем, перехват DNS, DNS-правила и счётчики. Проверка маршрута открывается в отдельном окне. В строке состояния есть ссылка «Что нового?», она открывает эту страницу.

    Обзор системы — До Обзор системы — После До После
    Обзор системы — До, mobile Обзор системы — После, mobile До После
    Обзор системы
  • Диагностика.
    Все проблемы собраны в одном списке: проверки ядра, маршрутизации, outbounds и DNS-серверов. В шапке сразу видно, всё ли в порядке и сколько проблем. Список строит сам keen-pbr, поэтому он совпадает с keen-pbr status.

    Диагностика
    Диагностика
  • Проверки состояния.
    keen-pbr предупреждает об отсутствии NAT или строгом rp_filter на балансируемых каналах, о чужих fwmark, пересекающихся с fwmark.mask, и об отсутствующих расширениях iptables. keen-pbr status показывает тот же список проблем, что и веб-интерфейс.

  • Предупреждение о DNS-сервере, который не отвечает.
    Если 10 запросов подряд к серверу остались без ответа или закончились ошибкой, на странице состояния появляется предупреждение. См. Решение проблем.

  • Переработана проверка маршрута.
    Проверку маршрута в веб-интерфейсе стало проще читать: по шагам видно, какое решение принимается на каждом этапе: определение адреса по DNS, поиск в списках, выбор правила и проверка firewall. Теперь в проверке можно указать параметры пакета: протокол, порты, адреса и DSCP. Эти же параметры можно указать в CLI для команды keen-pbr test-routing.

    Проверка маршрута
    Проверка маршрута
  • Журнал запросов.
    Новый раздел: живая таблица текущих запросов и журнал запросов с пояснениями к меткам и фильтрами.

    ПК-версия Журнал запросов
    Мобильная версия Журнал запросов — Мобильная версия
    Журнал запросов
  • Страница настроек.
    В пустых полях показаны значения по умолчанию. Раньше при сохранении они записывались в конфиг и закреплялись за вами, теперь в конфиг попадает только то, что вы изменили.

    Настройки — До Настройки — После До После
    Настройки — До, mobile Настройки — После, mobile До После
    Настройки
  • Маршрутизация по доменам больше не требует dnsmasq.
    keen-pbr сам читает DNS-ответы, проходящие через роутер, и заполняет наборы ваших списков. Если устройство получает адрес сайта через обычный DNS, уже первое соединение с сайтом идёт по нужному маршруту. См. DNS.

    Маршрутизация по доменам в настройках
    Маршрутизация по доменам в настройках
  • Перехват L7 (HTTP Host, SNI, QUIC).
    Если устройство использует зашифрованный DNS, keen-pbr узнаёт сайт по имени в начале TLS-, HTTP- или QUIC-соединения. Это первое соединение обрывается, и браузер или приложение подключается заново, уже по нужному маршруту.

  • Если ядру не хватает модулей.
    Отключается только соответствующая часть перехвата (DNS или соединения), а причина видна на странице состояния.

    Проверки ядра в диагностике
    Проверки ядра в диагностике
  • Трафик самого роутера по умолчанию не обрабатывается.
    Правила маршрутизации действуют на устройства в сети. Чтобы включить и роутер, задайте iproute.process_router_traffic: true. См. iproute.

  • Обновлён редактор outbounds.
    Страница редактора стала понятнее и менее перегруженной. Тип outbound выбирается крупными карточками с коротким описанием того, как он работает. Группы (urltest и icmptest) собираются наглядно: видны ярусы приоритета и то, какой из них используется сейчас, у каждого канала задаётся вес, а его доля трафика показывается сразу. Логика выбора дополнительно проговаривается текстом, например: «новые соединения распределяются между работающими каналами первого яруса в соответствии с их весами». Поведение kill-switch тоже выбирается карточками с пояснением, что произойдёт с трафиком, а редко нужные настройки спрятаны в сворачиваемые разделы.

    Редактор outbounds — До Редактор outbounds — После До После
    Редактор outbounds
  • Балансировка нагрузки между несколькими каналами. OpenWrtDebian
    Outbound urltest или icmptest с strategy: "balance" распределяет соединения между каналами, у каждого канала свой вес. Соединение остаётся на канале, через который началось. См. Балансировка нагрузки между несколькими WAN.

  • Автоопределение шлюза.
    У outbound interface можно указать "gateway": "auto", а шлюз по умолчанию теперь редактируется в веб-интерфейсе. См. interface.

    Шлюз auto в редакторе outbound
    Шлюз auto в редакторе outbound
  • Новые списки скачиваются в фоне после применения конфигурации, а не перед ним. Ошибка скачивания больше не отменяет применение, а показывается в предупреждениях. Списки, которые не скачались при запуске, скачиваются повторно так же.

  • Обновлена страница редактирования правила маршрутизации.
    Вместо длинной формы со всеми полями сразу правило собирается как конструктор «ЕСЛИ … И … тогда …». Условия добавляются по одному (списки, протокол, порты, адреса, DSCP), у каждого есть короткое пояснение, что именно оно проверяет, а внизу выбирается outbound для подходящего трафика. Сразу видно, что делает правило, и не приходится прокручивать поля, которые вам не нужны.

    Страница редактирования правила маршрутизации — До Страница редактирования правила маршрутизации — После До После
    Страница редактирования правила маршрутизации
  • Настройка маршрута по умолчанию (для многопутевой передачи или резервирования). OpenWrtDebian
    keen-pbr теперь может управлять маршрутом по умолчанию для устройств в сети. С его помощью можно организовать многопутевую передачу и резервирование каналов наподобие того, как это делает mwan3. Добавьте в конец списка правил маршрутизации правило с типом IPv4 default gateway (default_gateway; для IPv6 отдельное правило) и направьте его на outbound urltest или icmptest. При strategy: "priority" весь интернет-трафик уходит на резервный канал, если основной недоступен, а при strategy: "balance" соединения распределяются между каналами по весам. Адреса локальной сети по-прежнему идут обычным маршрутом. Правило действует на устройства в сети; чтобы оно действовало и на трафик самого роутера, включите Обрабатывать собственный трафик роутера. Доступно на OpenWrt и Debian. См. Правила маршрутизации и Балансировка нагрузки между несколькими WAN.

    Правила маршрутизации — До Правила маршрутизации — После До После
    Правила маршрутизации
  • DNS-over-HTTPS.
    Теперь можно добавить DNS-сервер типа DNS-over-HTTPS и использовать его в DNS-правилах и среди основных DNS-серверов. См. DNS.

    DNS-over-HTTPS сервер
    DNS-over-HTTPS сервер
  • Bootstrap-серверы для DoH.
    DoH-серверу нужен IP-адрес, чтобы к нему подключиться. Укажите bootstrap-серверы, и keen-pbr сам узнает через них адреса DoH-серверов, либо задайте IP-адреса DoH-сервера вручную. См. DNS.

  • Проверка DNS-серверов.
    Кнопка Проверить на странице DNS-серверы спрашивает все серверы о выбранных сайтах и показывает, какие не отвечают и какие подменяют ответы: отвечают, что домена не существует (NXDOMAIN), или отвечают адресом-заглушкой. См. DNS. На результат проверки можно нажать и увидеть подробности по каждому сайту: полученные адреса, время ответа и что именно не так. Сайты для проверки можно менять: отметьте готовые или добавьте свой.

    Проверка DNS-серверов
    Проверка DNS-серверов
    Подробности результата проверки
    Подробности результата проверки
    Сайты для проверки DNS-серверов
    Сайты для проверки DNS-серверов
  • Обновлена страница редактирования DNS-правила.
    Она построена по той же логике, что и правило маршрутизации: сначала выбираете условие (списки доменов), затем DNS-серверы, на которые нужно направлять запросы. Если серверов несколько, страница подсказывает, что запросы уходят на них по очереди.

    Страница редактирования DNS-правила — До Страница редактирования DNS-правила — После До После
    Страница редактирования DNS-правила
  • Несколько DNS-серверов для списка.
    Для списка можно указать несколько DNS-серверов. Запросы уходят на них по очереди, а если сервер не отвечает, его заменяет следующий. В config.json поле server DNS-правила теперь называется servers и содержит массив названий серверов; старые конфиги keen-pbr преобразует сам.
    Запросы к доменам списков с несколькими серверами или с DNS-over-HTTPS dnsmasq отправляет во встроенный DNS-прокси keen-pbr на 127.0.0.89, порты начинаются с 52100. Адрес и первый порт можно сменить в режиме настроек Продвинутый: Адрес DNS-прокси и Первый порт DNS-прокси. См. DNS.

  • На странице DNS-правила основные DNS-серверы и bootstrap-серверы стали свёрнутыми разделами: в свёрнутом виде видно, какие серверы используются. Если основные серверы не выбраны или DoH-серверу нужны bootstrap-серверы, у раздела отображается значок ⚠️, а на странице Обзор системы и в keen-pbr status появляется предупреждение со ссылкой на страницу. В таблице DNS-серверов отмечено, какие из них основные и bootstrap. В новом DNS-правиле сервер больше не выбирается заранее: выберите его сами.

    DNS-правила — До DNS-правила — После До После
    DNS-правила
  • dnsmasq нужен только для split DNS.
    Он нужен, только если вы хотите настроить split DNS, то есть использовать разные DNS-серверы в зависимости от домена, или задать DNS-серверы для всей сети прямо в keen-pbr. См. Нужен ли dnsmasq?. keen-pbr сам выбирает экземпляр dnsmasq, показывает его состояние в веб-интерфейсе и восстанавливает его работу, если dnsmasq потерял конфиг. Новые команды: keen-pbr resolver dnsmasq detect и keen-pbr resolver dnsmasq print-config.

  • Веб-интерфейс на телефоне.
    Формы и конструктор правил подстраиваются под узкий экран, журнал запросов показывается карточками, диалоги выезжают снизу.

  • Обновление в реальном времени.
    Данные обновляются с помощью SSE вместо HTTP polling.

  • Метрики для Prometheus.
    GET /metrics отдаёт задержку проб, выбранный канал, обновления списков, счётчики балансировки и перехвата. Есть и метрики DNS-прокси: запросы к нему, ответы серверов по результатам, время ответа и серверы, которые прокси сейчас пропускает. Для Grafana есть дашборд (с разделом DNS proxy) и примеры алертов. См. REST API и метрики DNS-прокси.

    Дашборд Grafana
    Дашборд Grafana
  • При удалении пакета убираются оставшиеся правила firewall и файлы dnsmasq.

Исправления

  • Исправлено применение конфигурации, в которой новый список скачивается через новый outbound: раньше применение завершалось ошибкой «Failed to prepare remote list(s)».
  • В группы urltest и icmptest теперь можно добавить только участников типа interface и table: другие типы не работали, а теперь не проходят проверку конфига. Участник blackhole никогда не выбирался, теперь keen-pbr пропускает его и пишет предупреждение в журнал. Для блокировки он не нужен: если ни один канал не работает, трафик блокируется сам.
  • Исправлена остановка автообновления списков после первого изменения, влияющего на маршрутизацию. Теперь списки обновляются по расписанию.
  • Исправлено получение адреса по DHCP новыми устройствами, если правило маршрутизации ловит весь UDP-трафик.
  • Исправлен обход правил маршрутизации трафиком самого роутера при заданных inbound_interfaces.
  • Если один список указан в нескольких DNS-правилах, список теперь использует серверы всех правил. Раньше использовался сервер только из первого правила.
  • Keenetic/NetCraze Исправлено построение маршрутов по частично обновлённой таблице маршрутов, когда при продлении аренды DHCP на WAN маршруты меняются один за другим.
  • Исправлено обнуление файла кэша списка после пропадания питания.
  • Keenetic/NetCraze Исправлено обновление пакета, при котором старая версия не успевала остановиться: после установки продолжала работать она, а не новая.
  • Исправлена проверка маршрута при выключенном IPv6: раньше она проверяла и IPv6-адреса домена.
  • Исправлена проверка маршрута, которая показывала одно правило маршрутизации несколькими блоками.
  • Исправлено ложное сообщение об ошибке в keen-pbr status у каждого правила urltest и icmptest: теперь команда показывает выбранный канал.
  • Исправлена потеря conntrack_on_switch, strict_enforcement_action и таймаута пробы urltest при сохранении outbound в веб-интерфейсе.
  • Исправлена работа DNS-сервера с detour через туннель: запросы уходили в туннель с адресом провайдера, и ответа не было. Теперь они идут с адресом туннеля (для серверов с IPv4-адресом).
  • iptables Исправлены правила маршрутизации с отрицанием нескольких адресов (!a,b) на iptables: раньше такое правило срабатывало на весь трафик.

Ломающие изменения (Breaking changes)

Перед обновлением. Debian
keen-pbr 3.3.x зависел от dnsmasq, поэтому apt пометил его как установленный автоматически, и apt autoremove может его удалить. Если dnsmasq вам нужен, сначала выполните:

bash
sudo apt-mark manual dnsmasq

Перед обновлением. Keenetic/NetCraze
keen-pbr 3.3.x ставил dnsmasq-full как зависимость, и при обновлении opkg может его удалить. Если dnsmasq вам нужен, сначала снимите с него пометку «установлен автоматически». Выполните по SSH:

bash
cp /opt/lib/opkg/status /opt/lib/opkg/status.bak
sed -i '/^Package: dnsmasq-full$/,/^$/{/^Auto-Installed:/d}' /opt/lib/opkg/status

Keenetic/NetCraze Если пакет уже удалён и вы включали opkg dns-override, устройства в сети останутся без DNS: роутер по-прежнему отдаёт их запросы dnsmasq, а его уже нет. Веб-интерфейс keen-pbr предложит два варианта:

  • Оставить dnsmasq.
    Установите его снова командой opkg install dnsmasq-full.
  • Обойтись без dnsmasq.
    Выключите Управлять конфигурацией dnsmasq. Затем в веб-консоли роутера (http://my.keenetic.net/a) выполните no opkg dns-override и system configuration save и перезагрузите роутер.

После обновления управление dnsmasq остаётся включённым, как в 3.3.x. Если dnsmasq вам не нужен, выключите Управлять конфигурацией dnsmasq в веб-интерфейсе (Общее > Настройки > Управление локальным DNS-сервером) и выполните шаги отката: Keenetic, OpenWrt, Debian. Без dnsmasq не работают DNS-правила и основные DNS-серверы.

Что проверить после обновления:

  • Модули ядра. Keenetic/NetCraze
    IP-адреса доменов для заполнения ipset определяются путём перехвата DNS-ответов, HTTP Host и SNI с помощью NFQUEUE и NFLOG. Если компоненты Модули ядра подсистемы Netfilter и Пакет расширений Xtables-addons для Netfilter ещё не установлены, установите их. Затем откройте страницу состояния в веб-интерфейсе и запустите проверку DNS.
  • Только iptables. Keenetic/NetCraze
    Сборка для Keenetic всегда работает через iptables. Конфиг с daemon.firewall_backend: "nftables" или strategy: "balance" там не пройдёт проверку.
  • Debian 11 (bullseye) больше не поддерживается.
  • ttl_ms списка стал минимальным сроком.
    Раньше он задавал, сколько хранятся адреса доменов списка. Теперь это минимум: если TTL в ответе DNS длиннее, адрес хранится дольше, но не дольше intercept.max_ttl_ms. Если ttl_ms не задан, минимум берётся из intercept.min_ttl_ms (по умолчанию 5 минут).
  • Изменились значения по умолчанию.
    • daemon.clear_dynamic_sets_on_apply теперь false: адреса доменов сохраняются при применении конфига.
    • iproute.process_router_traffic теперь false: правила маршрутизации действуют на устройства в сети, а не на трафик самого роутера.
    • --log-target для всех команд равен both. Init-скрипты из пакета передают --log-target syslog.
  • Поля, которые больше не работают.
    dns.system_resolver, dns.dns_test_server и daemon.resolver_ready_timeout_seconds; если они заданы, журнал предупредит. Вместо dns.dns_test_server используйте intercept.dns.marker. Старые поля outbounds, candidates и weight в outbound_groups заменены на members. Старые конфиги продолжают работать: keen-pbr один раз перепишет их в новый формат (комментарии и порядок ключей при этом не сохранятся).
  • Новое поле version.
    В нём версия keen-pbr, для которой записан конфиг. keen-pbr ставит его, когда вы сохраняете конфиг в веб-интерфейсе. Если правите файл вручную, оставьте его.
  • Домен для проверки DNS.
    Для ручной проверки запускайте nslookup check.keen-pbr.fyi вместо nslookup check.keen.pbr. См. Решение проблем.

Если с keen-pbr работают ваши скрипты или другие программы:

  • Команда keen-pbr resolver-config-hash ничего не делает и всегда завершается успешно.
  • keen-pbr generate-resolver-config принимает dnsmasq вместо dnsmasq-ipset и dnsmasq-nftset.
  • keen-pbr status завершается с кодом 1, если какая-то проверка не прошла или среди проблем есть ошибка.
  • GET /api/dns/test?show=all (и show=full) работает только при включённой аутентификации API.
  • Новые API endpoints: GET /metrics, GET /api/health/issues, GET /api/config/defaults. GET /api/status/events дополнительно присылает проблемы, состояние маршрутизации, состояние аутентификации и изменения конфига.

3.3.1

25 августа 2026

Что нового

  • Куда писать журнал.
    Параметр --log-target stderr|syslog|both. Сервис по умолчанию пишет в syslog, команды в терминале — в stderr.

Исправления

  • Переключение открытых соединений.
    Когда выбранный канал в группе urltest или icmptest перестаёт работать, keen-pbr теперь сбрасывает записи открытых соединений в conntrack, и устройство открывает их заново через новый канал, по IPv4 и по IPv6. Раньше соединения оставались на нерабочем канале. Если старый канал при переключении ещё работает, действует настройка conntrack_on_switch.
  • Исправлено отображение состояния участников групп urltest и icmptest (основной, резервный, работает с перебоями, недоступен).
  • keen-pbr ждёт готовности dnsmasq столько, сколько задано в daemon.resolver_ready_timeout_seconds, а не всегда пять секунд.

3.3.0

21 августа 2026

Что нового

  • Большие списки IP-адресов.
    Размер ipset можно увеличить настройками ipset_hashsize и ipset_maxelem: Общее > Настройки > Расширенные настройки маршрутизации.
  • По сигналу SIGUSR1 keen-pbr больше не загружает списки адресов заново. Старое поведение возвращает daemon.reuse_static_sets_on_runtime_refresh: false.
  • Откат конфига.
    Если конфиг не применился, можно вернуть предыдущий.
  • Веб-интерфейс сам подключается снова, если связь с роутером пропала.
  • RAW отдельно для IPv4 и IPv6. Keenetic/NetCraze
    Значения KEEN_PBR_RAW_PREROUTING: auto, enable, disable, ipv4-only и ipv6-only. См. RAW или mangle.

Исправления

  • Нагрузка на процессор в простое.
    Исправлена: keen-pbr постоянно опрашивал состояние и занимал около 20% процессора (замер на роутере с mipsel). Теперь состояние обновляется по событиям.
  • Устранена одна из причин ошибки Fatal error: control socket timeout waiting for socket ack, из-за которой на слабых роутерах большой конфиг не применялся и не запускался dnsmasq.

Ломающие изменения (Breaking changes)

  • Значение enable для RAW. Keenetic/NetCraze
    KEEN_PBR_RAW_PREROUTING=enable теперь требует поддержки RAW и для IPv4, и для IPv6. Если RAW нужна только для одного из них, укажите ipv4-only или ipv6-only.

3.2.1

15 августа 2026. Версия 3.2.0 не выходила.

Что нового

  • Пароль на веб-интерфейс и API.
    Вход по паролю, Basic Auth для скриптов и список сайтов, которым браузер разрешит обращаться к API (CORS). Всё это на новой странице Безопасность. См. REST API.
  • Outbound icmptest.
    Проверяет каналы ping-ом (ICMP), а не загрузкой URL. См. icmptest.
  • Роутеру можно дать имя, оно показывается в веб-интерфейсе.
  • Проверка маршрута в веб-интерфейсе переделана. keen-pbr test-routing выводит обычный текст вместо JSON.
  • Неприменённые изменения конфига можно отменить в веб-интерфейсе и через API.
  • В веб-интерфейсе появились ссылки на документацию.
  • Порядок правил маршрутизации можно менять перетаскиванием.
  • RAW или mangle. Keenetic/NetCraze
    В файле /opt/etc/keen-pbr/defaults можно выбрать таблицу, в которой помечается IPv4-трафик устройств. RAW не сбрасывается, когда Keenetic пересобирает firewall, и соединения не рвутся, но работает только для устройств с Политикой по умолчанию. mangle подходит для любых политик из Приоритетов подключений, но правила на время пересборки пропадают. См. RAW или mangle.
  • Пакеты для Debian 11 (Bullseye), 12 (Bookworm) и 13 (Trixie).
  • Полный пакет стал меньше.
  • Репозиторий пакетов переехал с GitHub Pages на отдельный платный хостинг

Исправления

  • Запуск после перезагрузки роутера. Keenetic/NetCraze
    Исправлен: keen-pbr стартовал раньше, чем RCI, и мог не запуститься. Теперь сервис ждёт RCI. Подробности
  • Keenetic/NetCraze Исправлены правила с условием DSCP: модуль xt_dscp теперь загружается сам.
  • Исправлена утечка ресурсов в потоке обновлений веб-интерфейса.

3.1.1

26 июля 2026

Что нового

  • В отчёт диагностики, который скачивается из веб-интерфейса, добавлена последняя системная команда, завершившаяся с ошибкой.

Исправления

  • iptables Исправлено применение правил iptables, которое в некоторых случаях не срабатывало.

3.1.0

25 июля 2026

Что нового

  • Безопасное применение конфига.
    keen-pbr сначала проверяет новый конфиг и применяет его, ждёт подтверждения от dnsmasq и только потом сохраняет на диск. Если что-то пошло не так, файл на диске остаётся прежним.
  • Применение без перерывов.
    nftables меняется одной транзакцией, а iptables и ipset заменяются без предварительной очистки, поэтому трафик не уходит мимо правил, пока конфиг применяется. keen-pbr удаляет только свои маршруты и правила и не трогает чужие.
  • Строгий режим.
    Если ни один канал не работает, трафик блокируется маршрутом unreachable или blackhole.
  • DNS-запросы самого роутера тоже идут через detour.
  • Условие dscp в правилах маршрутизации.
    Маршрут по метке DSCP (значения 1–63), которую ставит программа на устройстве. См. пример с DSCP.
  • Настройка conntrack_on_switch.
    Задаёт для urltest, что делать с открытыми соединениями при смене канала: preserve или delete.
  • Строгая проверка списков.
    Списки по URL скачиваются только по HTTP и HTTPS, в том числе после перенаправлений. Локальный список должен быть обычным файлом не больше заданного размера. Некорректные домены отбрасываются. Если один и тот же список скачивается несколько раз одновременно, загрузка идёт одна.
  • Веб-интерфейс обновляется сам.
    Изменения состояния сервиса, outbounds и интерфейсов видны сразу, обновлять страницу не нужно. Диагностика и проверка DNS пока так не умеют.
  • При запуске, остановке, перезапуске и применении конфига видно, на каком этапе сервис.
  • Подробная диагностика.
    Видно, совпадает ли конфиг в памяти с конфигом на диске, получил ли dnsmasq актуальный конфиг и каких файлов кэша не хватает.
  • keen-pbr status берёт данные у запущенного сервиса.
  • Метки в таблице RAW. Keenetic/NetCraze
    IPv4-трафик устройств помечается в таблице RAW. Keenetic её не пересобирает, поэтому в играх и звонках меньше обрывов. Если RAW недоступна, keen-pbr предупредит и будет использовать mangle.
  • Keenetic/NetCraze Рядом с системными именами интерфейсов веб-интерфейс показывает их названия из Keenetic.
  • Пакет теперь зависит от conntrack.
  • В API команды apply, start, stop и restart отвечают кодом 202 и номером операции. Если такая команда уже выполняется, следующая получит 409.

Исправления

  • Ускорена проверка маршрута в веб-интерфейсе: до восьми адресов проверяются одновременно.
  • Исправлено удаление всего правила, когда из правила с несколькими условиями удаляли один список.

3.0.7 (бета)

29 июня 2026

Исправления

  • Keenetic/NetCraze Исправлена проверка поддержки IPv6 в режиме iptables: keen-pbr мог решить, что IPv6 не поддерживается (#139).

3.0.6 (бета)

3 июня 2026. Версия 3.0.5 не выходила: в ней осталась ошибка, из-за которой keen-pbr не устанавливался на OpenWrt 25.x.

Исправления

  • Исправлены проблемы, которые keen-pbr status показывал, когда в веб-интерфейсе всё было в порядке.
  • Канал urltest, выбранный и для IPv4, и для IPv6, больше не считается ошибкой.
  • keen-pbr status отмечает правила, которые пропускают трафик без изменений, как PASS.
  • При выключенном IPv6 keen-pbr status больше не показывает IPv6-наборы.
  • OpenWrt Исправлены пакеты .apk и индекс репозитория для OpenWrt 25.x.
  • Исправлено определение IPv6 со старыми версиями ip6tables-restore (#138).

3.0.4 (бета)

27 мая 2026

Что нового

  • Настройка daemon.ipv6_enabled.
    Для сетей без IPv6: при false keen-pbr не создаёт IPv6-правила. Если IPv6 включён, но система его не поддерживает, keen-pbr пишет об этом в журнал и работает только с IPv4.
  • Проверка ссылок в конфиге.
    До применения keen-pbr находит ссылки в никуда: правило на несуществующий список или outbound, DNS-правило на несуществующий список или сервер, outbound interface без интерфейса, проверку маршрута без адреса.
  • Состояние dnsmasq проверяется каждые 5 секунд вместо 30. Когда меняются списки или DNS, keen-pbr перезагружает dnsmasq и сразу проверяет результат.
  • Массовые действия.
    В таблицах веб-интерфейса можно выделить несколько строк и выполнить действие над всеми сразу.
  • Что изменится при удалении.
    Перед удалением видно, какие правила удалятся и какие DNS-серверы и группы urltest поменяются.
  • Выбор интерфейса.
    Видны все известные интерфейсы, включены ли они и их адреса. Искать можно и по адресу.
  • Подробная проверка маршрута.
    Видно, какое правило сработало, какой outbound и интерфейс выбраны и в какие списки попал адрес.
  • Перед изменением или удалением списка видно, где ещё он используется.
  • Ошибки проверки конфига при сохранении показываются рядом с полями.
  • Keenetic/NetCraze При запуске проверяется поддержка ipset в ядре. Если не хватает компонентов Netfilter, сообщение об ошибке понятнее. Понятнее стали и сообщения о загрузке модуля xt_multiport.

Исправления

  • Список по URL со встроенными записями больше не теряет их, когда загружается из кэша.
  • Исправлена работа веб-интерфейса на iPhone и в Safari на macOS.
  • Исправлено отслеживание интерфейсов: после сетевой ошибки keen-pbr переставал замечать их изменения.
  • Команды перезагрузки и остановки сервиса находят его по PID-файлу и больше не задевают другие запущенные процессы keen-pbr.
  • Исправлены одновременные проверки DNS, которые мешали друг другу.

3.0.3 (бета)

10 мая 2026

Что нового

  • Поле gateway6.
    Задаёт IPv6-шлюз у outbound interface.
  • Ошибки обновления списков.
    Видны в журнале, через API и на странице списков.
  • Автообновление списков раз в неделю.
    Так по умолчанию в новых конфигах, раньше было раз в день. В существующих конфигах расписание не меняется.
  • Тег DNS-сервера нельзя изменить при редактировании.

Исправления

  • Утечка IPv6 мимо VPN.
    Исправлена: добавлены недостающие IPv6-маршруты, а для urltest — маршрут unreachable на случай, когда не работает ни один канал.
  • Исправлена проверка каналов по IPv6.
  • Исправлено падение keen-pbr, когда у роутера нет интернета.
  • Исправлена обработка таймаута проверки urltest и приоритета маршрутов unreachable.
  • nftables Исправлен проброс портов, когда запрос приходит с адреса из списка.
  • Исправлено отображение автообновления списков: веб-интерфейс показывал его включённым, когда оно было выключено.
  • Значок внешней ссылки теперь нажимается.

3.0.2 (бета)

26 апреля 2026

Ломающие изменения (Breaking changes)

  • Новый адрес репозитория. OpenWrt
    Пакеты теперь собираются под архитектуру процессора, а не под модель роутера. Если keen-pbr уже установлен на OpenWrt, замените адрес репозитория в настройках менеджера пакетов. См. Установка на OpenWrt.

Исправления

  • Исправлена кнопка Применить и перезапустить на нижней панели, которая иногда не срабатывала.

3.0.1 (бета)

25 апреля 2026

Что нового

  • Улучшена страница обзора.

Исправления

  • Проверка маршрута не трогает firewall. nftables
    Раньше проверка маршрута в веб-интерфейсе стирала правила firewall.
  • Исправлен запуск dnsmasq после перезагрузки роутера: иногда он не запускался.
  • Проверка маршрута через dnsmasq.
    Адреса узнаются через dnsmasq, а не через DNS провайдера. Раньше проверка могла получить подменённый провайдером ответ и показать неверный маршрут.
  • OpenWrt Исправлено пропадание правил nftables.
  • Поддержка fw4. OpenWrt
    Интеграция с firewall переделана: в новых версиях OpenWrt скрипт /etc/hotplug.d/firewall/70-keen-pbr перестал запускаться.
  • OpenWrt dnsmasq-full добавлен в зависимости пакета. Исправлена запись в системный журнал.
  • Keenetic/NetCraze Исправлен запуск на старых прошивках NDMS 2.x с DNS типа keenetic.
  • Keenetic/NetCraze DNS-серверы DoT из настроек Keenetic теперь используются.
  • Keenetic/NetCraze iptables и ipset добавлены в зависимости пакета.
  • Keenetic/NetCraze Исправлены ошибки opkg update у тех, у кого остался старый адрес репозитория.
  • Исправлена кнопка Сохранить: после ошибки в форме правила она не нажималась до перезагрузки страницы.
  • iptables Список портов проверяется с учётом ограничений iptables.

3.0.0 (бета)

22 апреля 2026

keen-pbr переписан заново. Версия 2.x работала только на Keenetic и Netcraze, версия 3 может работать также на OpenWrt и Debian.

  • Веб-интерфейс и REST API.
    Веб-интерфейс удобен и с телефона.
  • Проверка каналов (urltest).
    keen-pbr сам проверяет, есть ли интернет через канал, и при сбое переключает трафик на другой. Это работает с любым VPN, в том числе установленным через opkg, например AmneziaWG-Go. Версия 2.x узнавала о состоянии канала только из API Keenetic.
  • Новые условия в правилах.
    Порты и адреса источника и назначения, исключения через !, правила без списков. Например, можно исключить из маршрутизации один телевизор или отправить в VPN весь трафик одного устройства.
  • Фильтр входящих интерфейсов.
    Например, правила действуют в основной сети, а гостевую не трогают.
  • Шлюз для outbound interface.
    Его можно указать явно.
  • Автоматические приоритеты.
    Таблицы маршрутизации, fwmark и приоритеты ip rule назначаются по порядку правил.
  • DNS-правила отдельно от маршрутизации.
    Можно задать DNS-сервер для доменов, не меняя их маршрут.
  • Временное отключение правил.
    Правило можно выключить, не удаляя.

Как перейти со 2.x: Обновление с 2.x.

keen-pbr 2.x

Версии для Keenetic и Netcraze. Конфиг в формате TOML, файл keen-pbr.conf.

2.2.1

10 июня 2025

  • Если API Keenetic не вернул данные об интерфейсе, но система видит его включённым, интерфейс считается рабочим.
  • Свой DNS-сервер для ipset.
    Опция override_dns в [ipset.routing] задаёт отдельный DNS-сервер для доменов этого ipset.
  • Если какого-то интерфейса из конфига нет, keen-pbr продолжает работать.
  • keen-pbr self-check теперь правильно находит IPv6-маршруты blackhole.

2.1.4

11 мая 2025

  • Команда keen-pbr dns показывает DNS-серверы из профиля Keenetic.
  • DoH и DoT из Keenetic.
    Опция use_keenetic_dns включает DoH и DoT из настроек Keenetic, fallback_dns задаёт DNS-сервер на случай, если запрос к RCI не удался.
  • Только политика по умолчанию.
    Правило iptables по умолчанию обслуживает только устройства с политикой по умолчанию в разделе Приоритеты подключений.

2.0.3

25 февраля 2025

  • Исправлены скрипты установки и удаления пакета.

2.0.2

17 февраля 2025

  • Исправлена ошибка certificate signed by unknown authority, из-за которой на некоторых роутерах не скачивались списки.

2.0.1

16 февраля 2025

  • Новое название.
    Проект переименован из keenetic-pbr в keen-pbr, адрес репозитория изменился. Как обновиться с 1.x, написано в описании релиза на GitHub.
  • Без файлов в dnsmasq.d.
    keen-pbr больше не пишет файлы в /opt/etc/dnsmasq.d/: dnsmasq получает списки от keen-pbr при запуске. Из-за этого dnsmasq запускается дольше: около 3,5 секунды на 43 тысячи доменов на Keenetic Viva.
  • Отдельная секция для списков.
    Списки задаются в секции [[list]], и один список можно использовать в нескольких ipset.
  • Новые команды: print-dnsmasq-config и upgrade-config. Вторая сама обновляет старый конфиг при обновлении пакета.
  • Опция dnsmasq_lists_dir удалена.

keenetic-pbr 1.x

Первые версии под названием keenetic-pbr.

1.3.0

15 января 2025

  • Меньше записи на флеш-память.
    keenetic-pbr не перезаписывает файлы, если они не изменились. Это бережёт флеш-память роутера и USB-накопитель.
  • Опция summarize удалена: из-за ошибки она удаляла из списка нужные адреса.

1.2.0

8 января 2025

  • Новые команды: interfaces (список интерфейсов), self-check (проверка маршрутов и правил) и undo-routing (убрать всё, что настроил keenetic-pbr).
  • Опция file подключает список из локального файла.
  • Kill switch.
    Опция kill_switch блокирует адреса из списков, если VPN недоступен.
  • Несколько интерфейсов.
    Опция interface заменена на interfaces: можно указать несколько интерфейсов, и выбирается первый включённый.
  • Опция use_keenetic_api (по умолчанию включена) проверяет через RCI, есть ли подключение на интерфейсе.
  • apply каждый раз заново читает списки и настраивает маршруты. Перезапускать OPKG или интерфейсы больше не нужно.

1.0.1

17 ноября 2024

  • ipset создаётся, даже если в списках нет ни одного IP-адреса.
  • Экспериментальная поддержка IPv6.

1.0.0

11–16 ноября 2024

  • Первый выпуск. Следом исправлены сообщения команды download для локальных списков, конфиг dnsmasq по умолчанию и установщик, который теперь не заменяет уже установленный dnsmasq.conf.