Дашборд
Дашборд - страница Главная, с которой открывается веб-интерфейс. Она показывает, работает ли движок пакетов и получает ли он пакеты, сколько соединений проверяет b4 и сколько из них совпало с сетами, что каждый включённый сет делал за последний час и что требует внимания. Данные приходят по WebSocket раз в секунду.

Сверху вниз на странице идут строка состояния, строка о живых обновлениях, пока они прерваны, карточка движка пакетов, если движок не запустился, список Требует внимания, если в нём что-то есть, и панели:
| Панель | Когда видна |
|---|---|
| Активность | Всегда |
| Сеты | Всегда |
| Последние изменения | Всегда |
| Активные эскалации | Пока хотя бы один хост в эскалации |
| Блокировки | Пока включён сет блокировки или если что-то было заблокировано после последнего сброса счётчиков |
| Telegram | Пока включён MTProto-прокси или Telegram через WebSocket |
Время на дашборде показывается в часовом поясе браузера. b4 отсчитывает каждое время от собственного времени работы и переводит его в часы роутера в момент отправки, поэтому история остаётся в правильном порядке, когда роутер выставляет часы с опозданием, как роутер без часов на батарейке, который синхронизирует время по NTP после загрузки.
Строка состояния

| Ячейка | Что показывает |
|---|---|
| Состояние | Работает, Запускается, Останавливается или Сбой движка, пока движок пакетов не работает, см. Движок пакетов не запущен |
| Движок | NFQUEUE или TUN и число рабочих потоков, например NFQUEUE x4 |
| Файрвол | Используемый бэкенд файрвола, например iptables или nftables, и когда монитор файрвола последний раз проверял правила b4. не отслеживаются - монитор не работает, например при Интервале мониторинга фаервола, равном 0, в режиме NFQUEUE. Настраивается вне b4 - включено Пропустить настройку IPTables/NFTables, и своих правил b4 не ставит. Строка вида восстановлены 4 раза, последний в 19:30 показывает, сколько раз с запуска b4 монитор вернул правила, которые удалило что-то другое; некоторые прошивки роутеров делают это постоянно, и ошибкой это не считается. См. Настройки, Основные, Файрвол |
| Время работы | Время с запуска b4. Подсказка показывает время запуска, а после сброса счётчиков и время, с которого они считают |
| Память b4 | Резидентная память b4 (RSS) и её доля от памяти роутера. Подсказка даёт пик за последние 24 часа, текущее значение и общий объём памяти роутера |
| CPU | Время CPU, которое b4 занял за последние 10 секунд, в доле от всех ядер роутера. Подсказка показывает самую загруженную минуту последнего часа, в том числе в доле одного ядра |
| Память b4 за 24 ч | Появляется, когда b4 проработал час, и занимает остаток строки: линия пиков RSS за каждые десять минут, от нуля, поэтому устойчивый рост заметен, а мелкие колебания остаются ровными. Подсказка над точкой даёт её десять минут и пик |
Показатели среды выполнения Go (куча Go в использовании и зарезервированная, горутины, потоки ОС, открытые файловые дескрипторы, циклы GC) находятся в разделе Процесс окна Информация о системе в разделе Настройки, Система, Сервис.
Кнопка меню справа в строке содержит Настроить и Сбросить счётчики.
Живые обновления
Страница открывает WebSocket к /api/ws/metrics, получает полный снимок, а затем по одному обновлению в секунду. Когда обновления прекращаются, под строкой состояния появляется строка об этом, строка состояния и панели тускнеют, а на каждой панели появляется метка Не обновляется с со временем последнего обновления.

| Строка | Что значит |
|---|---|
| Ожидание первых данных от b4 | Снимок ещё не пришёл. Через 5 секунд строка начинает отсчитывать секунды и называет две возможные причины: сервис перезапускается или прокси между браузером и роутером блокирует WebSocket |
| Нет связи с b4 - последнее обновление в 21:37:50, повтор через 5 с | Соединение оборвалось. Браузер повторяет попытку примерно через 1, 2, 4, 8 и 16 секунд, затем каждые 30 секунд, а также сразу, когда вкладка снова становится видимой или возвращается сеть. Повторить пробует немедленно |
| Живые обновления недоступны - данные обновляются раз в 5 с | WebSocket не открывается, а GET /api/metrics отвечает, поэтому страница запрашивает снимок каждые 5 секунд |
| Сессия истекла - войдите снова | Веб-интерфейс требует входа, а сессия больше не действует. Войти открывает страницу входа |
Данные считаются устаревшими, если обновление не приходило 3 секунды, а при запросах раз в 5 секунд - 8 секунд.
Движок пакетов не запущен
Если движок пакетов не запустился, под строкой состояния появляется карточка с причиной и с тем, что b4 сделает дальше, а Состояние показывает Сбой движка. Само это состояние описано в разделе Если движок не запустился.

Карточка показывает ошибку, остановившую движок, в том виде, в каком она записана в лог, и время следующей автоматической попытки с числом оставшихся попыток или сообщение, что попыток больше нет.
| Кнопка | Действие |
|---|---|
| Переключить на TUN / Переключить на NFQUEUE | Сохраняет другой режим движка и открывает окно перезапуска |
| Перезапустить b4 | Открывает окно перезапуска без изменения настроек, например после загрузки недостающего модуля ядра |
| Настройки движка | Открывает Настройки, Основные, Движок пакетов |
Требует внимания

Список под строкой состояния собирает то, что требует действий: сначала ошибки, затем предупреждения, по одной строке на пункт и со ссылкой туда, где это исправляется. Пока список пуст, его нет на странице; показываются шесть пунктов, остальные - под Показать ещё N.
| Пункт | Когда появляется | Ссылка |
|---|---|---|
| Сет X: прокси хост:порт недоступен | Upstream proxy-сета не ответил на последние попытки подключения. Ошибка, если трафик сета не проходит, и предупреждение, если Прямое подключение при недоступности upstream отправляет его напрямую. В строке - число сбоев подряд и время последнего, в подробностях - ошибка | Маршрутизация - вкладка DNS & Маршрутизация сета |
| Мост Telegram: ... | Включён Telegram через WebSocket, и не запустился его слушатель, не установлено его правило файрвола (предупреждение, если настройка файрвола в b4 выключена), его соединения перехватывает правило другой программы, в ядре нет поддержки TPROXY, не скачался список адресов Telegram (предупреждение) или устройства находятся за сетевым мостом с включённым bridge netfilter (предупреждение). Каждый случай разобран в разделе Устранение неполадок | Настройки Telegram |
| Проверки мониторинга не проходят для сета X, Мониторинг ищет рабочую стратегию для сета X, Мониторинг не может проверить сет X | Отслеживаемый сет в статусе Проблема или Пауза, ждёт восстановления или восстанавливается, либо его нельзя проверить, см. Статусы. В подробностях - причина | Открыть сет - вкладка Дискавери сета |
| Мониторинг прекратил поиск для сета X, его сайты могут не открываться (ошибка) | Три восстановления отслеживаемого сета подряд не удались | Открыть сет |
| Мониторинг выключен, хотя его запрашивают N сетов | У сетов включено Поддерживать работу сета с помощью мониторинга, а сам мониторинг выключен | Мониторинг |
| За последние N мин в b4 не пришло ни одного пакета; если устройствами пользуются, их трафик не доходит до b4 | Движок пакетов работает, но 15 минут или дольше не получал ни одного пакета. В строке - время последнего пакета, а если пакетов не было с запуска, то время запуска b4, и строка начинается со слов С запуска b4 | Настройки, Основные, Движок пакетов |
| Ошибки запуска | Не запустился SOCKS5-сервер, MTProto-прокси или веб-сервер, сертификат и ключ TLS веб-сервера оказались непригодны и вместо HTTPS работает обычный HTTP, или не загрузилась часть целей сетов. В строке - время, в подробностях - ошибка | Настройки: Основные, SOCKS5 для SOCKS5-сервера и Система, Веб-сервер для веб-сервера; Настройки Telegram для MTProto-прокси; Сеты для целей |
| b4 обновлён на диске, перезапустите сервис, чтобы работала новая версия | Файл, из которого запущен b4, изменился; проверяется каждые 10 секунд | Перезапустить открывает окно перезапуска |
| Перегрузка | За последние 10 минут b4 пропускал обход для пакетов, потому что одновременно выполнялось уже 512 инъекций, не смог отправить сформированные им пакеты, или его очередь пакетов переполнялась и ядро отбрасывало пакеты, предназначенные ему. Каждый случай - со своим числом | Настройки, Основные, Движок пакетов |
| Таблица соединений роутера заполнена на N %, новые соединения могут не устанавливаться | nf_conntrack_count достиг 90 % от nf_conntrack_max; значения читаются каждые 10 секунд. В подробностях - оба числа | - |
| b4 держит N потоков ОС, а среда выполнения Go останавливает b4 на 4 000 | b4 держит 2 000 потоков ОС или больше. В этот момент b4 также записывает дамп горутин goroutines.txt в каталог логов, если запись логов в файл включена | Логи |
| Трафик IPv6 обходит все сеты: у роутера есть IPv6, а IPv6 в b4 выключен | У роутера есть глобальный IPv6-адрес, а Поддержка IPv6 в разделе Настройки, Основные, Движок пакетов выключена. В режиме TUN вместо неё показывается Режим TUN не обрабатывает IPv6, поэтому трафик IPv6 идёт мимо b4 | Настройки, Основные, Движок пакетов |
У ошибки запуска и у пункта про IPv6 есть крестик, который скрывает их в этом браузере. Ошибка запуска скрывается только для этого случая, поэтому та же ошибка после следующего запуска появится снова. Скрытый пункт про IPv6 скрывает и предупреждение об IPv6 в разделе Настройки, Основные.
Что учитывается в числе соединений
Активность, числа на панели Сеты и общие счётчики соединений считают соединения, каждое один раз. Соединение - это одно TCP-соединение или один поток UDP, различаемые по адресам и портам. В b4 попадают только первые пакеты соединения, столько, сколько допускают Лимит TCP пакетов соединения и Лимит UDP пакетов соединения в разделе Настройки, Основные (по умолчанию 19 и 8), поэтому соединение учитывается в момент начала, и ничто на дашборде не говорит, сколько оно длилось и сколько данных передало.
Учитываются:
- соединения на порты захвата: TCP и UDP 443, порты из фильтров портов сетов и TCP 80, пока в каком-либо сете включена Пустая строка перед методом HTTP;
- соединения устройств в сети и соединения, которые открывает сам роутер, включая соединения самого b4, например проверки обновлений и проверки мониторинга;
- каждое соединение или UDP-сессия, которые proxy-сет пересылает через свой upstream, и каждая сессия SOCKS5-сервера b4, которая уходит через upstream сета.
Не учитываются:
- соединения на другие порты, кроме тех, что пересылает proxy-сет, DNS-запросы и UDP на частные адреса;
- проверочные соединения Дискавери;
- соединения устройств, которые фильтрация устройств не пускает в очередь пакетов;
- соединения, которые файрвол отбрасывает раньше, чем их увидит b4, см. Блокировки.
Соединение относится к первому сету, с которым оно совпало. Соединение, которое совпадает с сетом только на одном из следующих пакетов, обычно на TLS ClientHello после SYN, переходит из вне сетов в в ваших сетах, пока его минута ещё не закончилась. Эскалация, которая переводит хост в другой сет, его соединения повторно не учитывает.
Активность

График показывает соединения, которые проверил b4, по минутам, в двух частях:
| Часть | Что значит |
|---|---|
| в ваших сетах | Соединение совпало с включённым сетом |
| вне сетов | Ни один включённый сет с ним не совпал |
Строка над графиком суммирует обе части за выбранный период. Числа больше 999 сокращаются, например 3,6 тыс., а подсказка над суммой показывает её полностью.
| Элемент | Действие |
|---|---|
| 1 ч | Столбец на каждую минуту последнего часа |
| 24 ч | Столбец на каждые десять минут последних 24 часов. Высота столбца - среднее за минуту, поэтому у обоих периодов общий масштаб; подсказка даёт сумму за десять минут и среднее в минуту |
| Таблица | Те же интервалы строками: время, по столбцу на каждую часть и итог |
| Живой трафик | Открывает страницу Трафик |
| Домены вне сетов | Открывает страницу Трафик с включённым Только без правил |
Выбранный период запоминается браузером. Крайний правый столбец с пунктирной рамкой - текущая минута или текущие десять минут, и его подсказка говорит, сколько времени прошло. Подсказку со временем интервала, каждой частью и итогом показывает наведение на столбец, касание столбца на сенсорном экране или переход к нему стрелками, когда график в фокусе. Home и End переходят к первому и последнему столбцу, Escape закрывает подсказку. На узком экране два интервала делят один столбец, и подсказка об этом сообщает.
Если b4 запустился внутри выбранного периода, линия отмечает b4 запущен в с временем, и до неё ничего не рисуется: b4 тогда не работал, поэтому этих минут нет, а не ноль. Период без единого соединения подписан За последний час b4 не проверил ни одного соединения или За последние 24 часа b4 не проверил ни одного соединения.
Если после последнего сброса счётчиков защита от RST-инъекций что-то отбросила, строка под графиком показывает, сколько.
История хранится в памяти b4, 60 минут и 24 часа, поэтому после перезапуска b4 она начинается заново. Сброс счётчиков её не трогает.
Сеты

По строке на каждый включённый сет, в порядке списка сетов.
| Элемент | Что показывает |
|---|---|
| Имя | Имя сета, ссылка на его редактор |
| Тип | Обход - маршрутизация в сете выключена, он применяет свои стратегии обхода DPI. Маршрут - сет направляет свой трафик через интерфейс. Прокси - сет пересылает трафик через вышестоящий SOCKS5-прокси или в режиме «Telegram через WebSocket». Блокировка - сет блокирует свои цели. См. Маршрутизация и Блокировка |
| N за последний час | Соединения, совпавшие с сетом за последние 60 минут, включая текущую, каждое учтено один раз, см. Что учитывается в числе соединений. У отслеживаемого сета сюда входят и проверки самого мониторинга: они идут через рабочий движок, как любые другие соединения |
| совпадение | Когда сет последний раз совпал с новым соединением, или совпадений с запуска b4 не было |
| открыто сейчас: N | Proxy-сеты: соединения, открытые через слушатель сета в данный момент |
| прокси недоступен | Proxy-сеты, чей upstream не ответил на последние попытки подключения. Подсказка называет upstream, число сбоев подряд, время последнего и ошибку и говорит, проходит ли трафик сета или идёт напрямую |
| N DNS-запросов заблокировано | Сеты блокировки: DNS-запросы, заблокированные сетом после последнего сброса счётчиков |
| Метка мониторинга | Отслеживаемые сеты: состояние сета в мониторинге |
Метка коротко передаёт статус сета в мониторинге, а подсказка над ней даёт полный статус с причиной:
| Метка | Статус мониторинга |
|---|---|
| Работает | Работает |
| Сбой | Проблема или Пауза |
| Подбор стратегии | Поиск в очереди или Идёт поиск |
| Поиск прекращён | Поиск прекращён |
| Нельзя проверить | Нельзя проверить |
| Ещё не проверен | В очереди или ещё ни одной проверки |
| Мониторинг выкл. | Сет запрашивает мониторинг, но сам мониторинг выключен |
Метка открывает вкладку Дискавери сета, а пока мониторинг выключен - страницу мониторинга.
Под строками N отключённых сетов открывает список сетов. Пока ни один сет не отслеживается и включён хотя бы один сет обхода, строка b4 не проверяет, открываются ли эти сайты - настройте мониторинг ведёт на страницу мониторинга. Без сетов панель показывает Сетов пока нет: b4 ничего не меняет, пока сет не нацелен на сайты со ссылками на создание сета и на Дискавери, а если все сеты отключены - Ни один сет не включён: b4 ничего не меняет, пока сет не включён.
Последние изменения

Что происходило с b4 с момента запуска, сначала новое: восемь записей, затем Показать ещё N. У каждой записи - давность с точным временем в подсказке и ссылка, где она уместна. Предупреждения и ошибки помечены уровнем.
| Запись | Когда пишется | Ссылка |
|---|---|---|
| b4 1.84.1 запущен (NFQUEUE, 4 потока) | b4 закончил запуск | - |
| Движок NFQUEUE не запустился (ошибка) | Движок пакетов не запустился; в подробностях - ошибка | Открыть логи |
| Настройки применены: N сетов, N доменов, N IP-адресов | Применено сохранение настроек | Открыть сеты |
| Часть целей сетов не загрузилась, SOCKS5-сервер не запустился, MTProto-сервер не запустился, Ошибка веб-сервера, TLS веб-сервера не работает, вместо него используется обычный HTTP (ошибки) | Эта часть не запустилась при старте, или веб-сервер отказал позже; в подробностях - ошибка | Открыть логи |
| Правила файрвола восстановлены | Монитор файрвола вернул правила b4. Восстановления в пределах одного часа по часам объединяются в одну запись: Правила файрвола восстановлены N раз с ЧЧ:ММ | - |
| Мониторинг переключил X на Y | Восстановление мониторинга записало в сет новую стратегию | Открыть сет |
| Мониторинг прекратил поиск для X (предупреждение) | Мониторинг прекратил поиск для сета; в подробностях - причина | Открыть сет - вкладка Дискавери сета |
| ИИ-агент изменил настройку | ИИ-клиент изменил настройку или отменил изменение через MCP. В подробностях - путь настройки, значение не показывается никогда | Настройки MCP |
Список хранится в памяти b4, не больше 50 записей, поэтому после перезапуска b4 он начинается заново. Сброс счётчиков его не трогает.
Активные эскалации

Панель видна, пока хотя бы один хост в эскалации, то есть переведён в резервный сет, потому что его сет раз за разом не справлялся. В каждой строке - хост, сет, в который он переведён, число эскалаций подряд, если их больше одной, и время до возврата в исходный сет; подсказка над временем показывает его по часам. В заголовке - число эскалаций после последнего сброса счётчиков.
Очистить после подтверждения с числом хостов разом возвращает все хосты в эскалации в их исходные сеты. Заодно b4 забывает сбои RST и DNS, накопленные для эскалации, у всех хостов, поэтому хост снова уйдёт в эскалацию только после новых сбоев. Сброс счётчиков не делает ни того, ни другого.
Блокировки

Панель видна, пока включён сет блокировки или если что-то было заблокировано после последнего сброса счётчиков. Первая строка показывает, что b4 заблокировал за это время: DNS-запросы, на которые он ответил или которые отбросил за сет блокировки, и заблокированные им соединения, каждое один раз.
Домены перечисляют заблокированные имена, а для соединения без имени - адрес, Устройства - устройства, чьи запросы и соединения были заблокированы; сначала новые, у каждой записи число блокировок и время последней. В списках хранятся 100 доменов и 50 устройств, замеченных последними. Устройство открывает страницу Трафик с отбором по нему.
Числа отражают то, что b4 заблокировал сам. Когда адреса заблокированного сайта уже известны сету, файрвол отбрасывает следующие соединения с ними раньше, чем их увидит b4, так же как соединения с адресными целями сета, и такие отбрасывания не учитываются.
Telegram

Панель видна, пока включён MTProto-прокси или Telegram через WebSocket. Настройки Telegram открывают раздел Настройки, Telegram.
Для MTProto-прокси первая строка даёт его порт, число сетей клиентов, которые пользуются им сейчас, открытые подключения и объём отправленного и полученного. Строка на каждый секрет повторяет эти числа для него, а подсказка над числом сетей перечисляет адреса. Устройства с одним подключением к интернету считаются одной сетью. Данные сессии добавляются, когда сессия заканчивается, поэтому долгая сессия показывает свой трафик только после закрытия. Числа хранятся в памяти с запуска прокси, и сброс счётчиков их не трогает.
Для Telegram через WebSocket одна строка даёт число переправленных сессий, время последней и число неудачных подключений к дата-центрам Telegram, а за ними не работает, пока у моста нет правила или слушателя, его соединения перехватывает правило другой программы или в ядре нет поддержки TPROXY. Это состояние страница запрашивает раз в минуту. Те же числа есть на карточке моста в разделе Настройки, Telegram, а объяснены они в разделе Устранение неполадок.
Настройка главной страницы

Настроить в меню строки состояния переводит панели в режим правки, Готово выходит из него.
| Действие | Как |
|---|---|
| Переместить панель | Перетащить за ручку в заголовке, или поставить фокус на ручку, нажать пробел или Enter, передвинуть стрелками и снова нажать пробел или Enter. Escape отменяет |
| Изменить ширину | Кнопки минус и плюс меняют её на одну колонку из двенадцати, от 3 до 12. Перетаскивание правого края делает то же |
| Скрыть | Кнопка с глазом. Скрытые панели перечислены в полосе правки, щелчок по панели возвращает её; панель, которой сейчас нечего показать, помечена нет данных |
| Начать заново | Сбросить раскладку, появляется, когда раскладка отличается от исходной |
По умолчанию Активность занимает всю ширину, Сеты (8 колонок) стоят рядом с Последними изменениями (4), Активные эскалации и Блокировки занимают по 6 колонок, а Telegram - всю ширину. Ширина действует, пока область панелей не уже 960 пикселей; на более узкой панели идут друг под другом в своём порядке. Панель, которой нечего показать, не оставляет пустого места.
Раскладка сохраняется в конфигурации b4, в ui.dashboard, поэтому все браузеры, открывающие веб-интерфейс, получают одну и ту же. Браузер хранит копию и пользуется ею, пока b4 недоступен.
Сброс счётчиков

Сбросить счётчики в меню строки состояния после подтверждения со списком того, что сбрасывается и что сохраняется, запускает счётчики ниже заново с этого момента. Подсказка Время работы после этого показывает время, с которого они считают.
Сбрасываются:
- заблокированные DNS-запросы и соединения, списки заблокированных доменов и устройств и число DNS-запросов заблокировано у сетов блокировки;
- пакеты RST, отброшенные защитой от RST-инъекций;
- число эскалаций в заголовке Активные эскалации;
- общие счётчики соединений, те, что отдают
b4_status,b4_metricsи/api/metrics/summary.
Сохраняются:
- история Активности, а вместе с ней числа на панели Сеты;
- время работы;
- Последние изменения;
- хосты, которые сейчас в эскалации: их возвращает Очистить на панели Активные эскалации;
- числа Telegram.
До версии 1.84.0 включительно кнопка называлась Сброс статистики и заодно возвращала все хосты в эскалации в их исходные сеты.
GET /api/metrics отдаёт снимок, который страница первым получает через /api/ws/metrics, а GET /api/metrics/summary - его краткую сводку. POST /api/metrics/reset и POST /api/escalations/clear - это Сбросить счётчики и Очистить. Через MCP те же счётчики отдают b4_status и b4_metrics.