Keenetic
Требования
- Роутер Keenetic с поддержкой OPKG
- Установленный Entware (обязательно)
Установка Entware
Новые модели (со встроенным хранилищем)
- Открывается веб-интерфейс роутера
- Раздел Параметры системы
- Включается компонент Менеджер пакетов OPKG
Старые модели (нужен USB-накопитель)
- USB-накопитель подключается к роутеру
- Entware устанавливается через менеджер пакетов
Подробнее: help.keenetic.com
Компоненты Netfilter
Прошивка Keenetic NDMS не содержит всех модулей netfilter, которые нужны b4, "из коробки". Необходимые компоненты включаются до установки b4:
- В веб-интерфейсе роутера: Параметры системы → Обновление компонентов
- Включается компонент NetFilter - это базовый компонент netfilter
- После включения NetFilter в списке появляется Xtables-addons for Netfilter, его тоже нужно включить (даёт
xt_connbytesи другие расширения, от которых зависит b4) - Изменения применяются, далее следует перезагрузка роутера или применение компонентов

Затем по SSH устанавливается пользовательская часть iptables:
opkg install iptables
Компоненты системы в Keenetic доступны только под учёткой admin
Установка b4
По SSH на роутере:
curl -fsSL https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | sh
Управление сервисом
/opt/etc/init.d/S99b4 start
/opt/etc/init.d/S99b4 stop
/opt/etc/init.d/S99b4 restart
Пути
| Что | Где |
|---|---|
| Бинарник | /opt/sbin/b4 |
| Конфигурация | /opt/etc/b4/b4.json |
| Сервис | /opt/etc/init.d/S99b4 |
Архитектура
- Старые модели (MT7621) -
mipsle_softfloat - Новые модели (aarch64) -
arm64
Установщик определяет архитектуру автоматически.
Без Entware b4 устанавливается в /tmp, который очищается при каждой перезагрузке. Для постоянной работы Entware обязателен.
Перезапись firewall
NDMS перестраивает свои таблицы netfilter по собственным поводам: продление UPnP-проброса, переподключение WAN, изменение политики или компонента. При каждой перестройке пропадают цепочки, которые ей не принадлежат, в том числе цепочки b4, после чего запускаются все скрипты из /opt/etc/ndm/netfilter.d/ с именем таблицы в $table и семейством в $type.
Установщик кладёт в этот каталог 50-b4.sh. Скрипт посылает SIGUSR1 запущенному процессу b4, и тот перепроверяет свои правила, как только перестройка закончится, и восстанавливает недостающие. Без хука правила всё равно вернутся при следующем опросе монитора таблиц, то есть не позже чем через system.tables.monitor_interval секунд (по умолчанию 10).
Правила переключателей Доступ из интернета стоят в таблице filter, которую NDMS тоже перезаписывает, и перепроверяются по тому же сигналу и с тем же интервалом. Возвращённые правила b4 пишет в лог на уровне WARN строкой Expose: the rules opening ... were missing from ..., usually after the firewall was reloaded; restored them, кто бы ни обнаружил пропажу, хук или опрос, поэтому эта строка появляется после перезаписи и при работающем хуке.
После перезаписи, о которой сообщил хук, в логе остаются строки Tables rules missing after a firewall rewrite, restoring... и Tables rules restored successfully уровня INFO. Та же строка уровня WARN и без слов о перезаписи означает, что опрос нашёл правила пропавшими без сигнала от хука: либо хука нет, либо правила убрал не NDMS. Ту же перепроверку можно запросить вручную:
kill -USR1 $(cat /var/run/b4.pid)
В режиме TUN сигнал также заставляет движок TUN сразу перепроверить цепочку захвата B4_TUN и переходы в неё. Восстановленную цепочку движок пишет в лог на уровне WARN строкой TUN: capture chain B4_TUN lost N of M rules (removed outside b4) ..., кто бы ни обнаружил пропажу, хук или опрос, а строки монитора таблиц относятся только к правилам маскарада, MSS clamp, DSCP и сетов маршрутизации. Интервал опроса в этом режиме не меньше 10 секунд.
Диагностика
После запуска сервиса стоит проверить лог:
cat /var/log/b4/errors.log
Строка xt_connbytes kernel module is not available означает, что компоненты Netfilter включены не полностью - см. раздел Компоненты Netfilter выше, где активными должны быть оба компонента: NetFilter и Xtables-addons for Netfilter.
Если лог пустой (или в нём нет ошибок), веб-интерфейс b4 должен быть доступен по LAN-адресу роутера.