Перейти к основному содержимому

Keenetic

Требования​

  • Роутер Keenetic с поддержкой OPKG
  • Установленный Entware (обязательно)

Установка Entware​

Новые модели (со встроенным хранилищем)​

  1. Открывается веб-интерфейс роутера
  2. Раздел Параметры системы
  3. Включается компонент Менеджер пакетов OPKG

Старые модели (нужен USB-накопитель)​

  1. USB-накопитель подключается к роутеру
  2. Entware устанавливается через менеджер пакетов

Подробнее: help.keenetic.com

Компоненты Netfilter​

Прошивка Keenetic NDMS не содержит всех модулей netfilter, которые нужны b4, "из коробки". Необходимые компоненты включаются до установки b4:

  1. В веб-интерфейсе роутера: Параметры системы → Обновление компонентов
  2. Включается компонент NetFilter - это базовый компонент netfilter
  3. После включения NetFilter в списке появляется Xtables-addons for Netfilter, его тоже нужно включить (даёт xt_connbytes и другие расширения, от которых зависит b4)
  4. Изменения применяются, далее следует перезагрузка роутера или применение компонентов

20260423140614 20260423140726

Затем по 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

Без 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-адресу роутера.