Система
Вкладка Система содержит настройки самого b4. Они разложены по подвкладкам Сервис (процесс сервиса и его лог), Веб-сервер (веб-интерфейс) и Бэкап (бэкапы конфигурации).
Изменения сохраняются кнопкой Сохранить в заголовке страницы, см. Сохранение и перезапуск. Каждое поле начинает действовать либо при сохранении, либо после перезапуска сервиса:
| Подвкладка | Применяется при сохранении | Применяется после перезапуска |
|---|---|---|
| Сервис | Язык, Часовой пояс, Зеркала обновления, Уровень логирования, Папка логов | Лимит памяти, Мгновенный сброс, Syslog |
| Веб-сервер | Имя пользователя, Пароль, Доступ из интернета | Адрес привязки, Порт, TLS Сертификат, TLS Ключ |
| Бэкап | Полей нет: каждая кнопка действует сразу | - |
Сервис
Подвкладка Сервис состоит из двух карточек: Сервис и Логирование.

Перезапустить сервис
Кнопка Перезапустить сервис после подтверждения перезапускает b4. Способ перезапуска зависит от менеджера сервисов, который находит b4. Менеджеры проверяются в таком порядке:
| Менеджер сервисов | Признак | Перезапуск |
|---|---|---|
systemd | /etc/systemd/system/b4.service и команда systemctl | systemctl restart --no-block b4 |
entware | /opt/etc/init.d/S99b4 | /opt/etc/init.d/S99b4 restart |
init | /etc/init.d/b4 | /etc/init.d/b4 restart |
docker | Признаки контейнера: /.dockerenv, /run/.containerenv, переменная окружения container или cgroup процесса 1 от Docker, containerd, LXC или Kubernetes | На месте |
standalone | Ничего из перечисленного | На месте |
При перезапуске на месте b4 останавливается так же, как по сигналу остановки, и запускается снова с той же командной строкой, перечитывая файл конфигурации. Идентификатор процесса не меняется, и среда выполнения контейнера или супервизор не видят завершения процесса.
После команды на перезапуск окно каждые 2 секунды, но не дольше минуты, проверяет, отвечает ли b4, и через 5 секунд после ответа перезагружает страницу. Какой менеджер нашёл b4, показывает строка Менеджер сервиса в окне Диагностика системы, см. Информация о системе.
Информация о системе
Кнопка Информация о системе открывает окно Диагностика системы с отчётом, который b4 собирает при открытии окна:
| Раздел | Содержимое |
|---|---|
| Система | Имя хоста, дистрибутив, ОС и архитектура, ядро, число ядер CPU, свободная и общая память, а если b4 работает в контейнере, ещё строка Контейнер |
| B4 | Версия и коммит, дата сборки, менеджер сервисов, идентификатор процесса, потребление памяти, время работы |
| Процесс | Куча Go в использовании и зарезервированная, горутины, потоки ОС, открытые файловые дескрипторы и циклы GC на момент открытия окна |
| Пути | Бинарник b4, файл конфигурации, каталог данных, errors.log, geosite.dat и geoip.dat |
| Геоданные | Размер каждой базы, общее число доменов и IP, кэш ASN и ASN, которые ещё не загружены |
| Движок | NFQUEUE или TUN, ошибка запуска, если движок не запустился, а при TUN ещё его устройство, адреса, захват, счётчики пакетов и правила захвата |
| Firewall | Backend, проверка NFQUEUE, сколько сетов маршрутизации установлено и, пока они не ставятся, ошибка и время следующей попытки (см. Маршрутизация, если правила не ставятся), flow offloading, bridge netfilter, восстановления правил монитором файрвола и собственные правила b4 |
| Сеть | Все интерфейсы, кроме loopback, с состоянием, MAC-адресом, MTU и адресами |
| Модули ядра, Возможности ядра | Состояние каждого модуля, который использует b4 (загружен или встроен в ядро), и доступность перехвата пакетов, прозрачного прокси и обхода обратного трафика вместе с пакетами, которые дают недостающую возможность |
| Firewall (нужна хотя бы одна), Необходимые утилиты, Опциональные утилиты | Какие команды найдены: iptables, iptables-legacy и nft, из которых нужна хотя бы одна; tar и curl; необязательные, например ipset и wget |
| Хранилище | Свободное место и режим (rw или ro) для /, /opt, /tmp, /jffs, /mnt/sda1 и /etc/storage, если такие пути есть |
Копировать JSON копирует весь отчёт в буфер обмена в формате JSON. Отчёт не маскируется. В нём есть имя хоста, адреса и MAC-адрес каждого интерфейса и правила файрвола b4. Тот же отчёт возвращает MCP-инструмент b4_diagnostics.
Настройки сервиса
Остальные поля карточки Сервис:
| Поле | Описание | По умолчанию |
|---|---|---|
| Язык | Язык веб-интерфейса, English или Русский. Интерфейс переключается сразу после выбора, а Отменить изменения возвращает прежний язык. Страница настроек применяет сохранённый язык в любом браузере, в котором её открывают | English |
| Часовой пояс | Часовой пояс временных меток в логе b4, выбирается из списка часовых поясов. Авто (система) оставляет часовой пояс системы или тот, что задан переменной окружения TZ при запуске b4 | Авто (система) |
| Лимит памяти | Мягкий лимит потребления памяти b4, значения в таблице ниже | auto |
| Зеркала обновления | Адреса https через запятую, к которым b4 обращается раньше встроенных зеркал, если с GitHub не удалось загрузить релизы b4, установщик или базы GeoSite и GeoIP. См. Зеркала обновления | - |
| Лимит памяти | Ограничение |
|---|---|
auto или пусто | Половина памяти системы |
Размер, например 128MiB, 256m или 1g | Этот размер; k, m и g означают кратные 1024 |
off, disabled или 0 | Без ограничения |
Лимит передаётся среде выполнения Go как её лимит памяти: по мере приближения к нему сборка мусора запускается чаще, а превышение лимита не останавливает b4. Лимит меньше 32 МиБ поднимается до 32 МиБ. Переменная окружения GOMEMLIMIT имеет приоритет над полем. Значение, которое не удаётся разобрать, отклоняется при сохранении.
Логирование
Карточка Логирование задаёт, сколько b4 пишет в лог и куда этот лог уходит.
| Поле | Описание | По умолчанию |
|---|---|---|
| Уровень логирования | Подробность лога, см. уровни ниже | Инфо |
| Папка логов | Абсолютный путь к папке для errors.log и update.log; отсутствующая папка создаётся. Пустое поле выключает запись логов в файлы | /var/log/b4 |
| Мгновенный сброс | Каждая строка лога записывается сразу. Когда переключатель выключен, строки копятся в буфере 16 КиБ, который записывается каждые 2 секунды и при заполнении | Вкл |
| Syslog | Каждая строка лога отправляется ещё и в системный журнал с тегом b4. Если при запуске системный журнал недоступен, b4 пишет предупреждение и работает без него | Выкл |
| Уровень | Что пишется в лог |
|---|---|
| Ошибка | Ошибки и предупреждения |
| Инфо | Добавляет основные события и строку на каждую запись страницы Трафик |
| Трассировка | Добавляет подробности обработки пакетов и DNS |
| Отладка | Добавляет отладочный вывод |
На уровне Ошибка страница Логи, которая показывает лог, содержит только ошибки и предупреждения. Страница Трафик получает данные отдельным потоком и от уровня не зависит.
Инфо - обычный уровень для повседневной работы, а Трассировка или Отладка - для диагностики проблем.
Каждая строка лога уходит в стандартный поток ошибок, с которым запущен b4, и на страницу Логи, а при включённом Syslog ещё и в системный журнал. В папке логов лежат два файла:
errors.log- строки ошибок, предупреждения при запуске и всё остальное, что после открытия файла попадает в стандартный поток ошибок процесса, например вывод аварийного завершения. Файл больше 1 МиБ переименовывается вerrors.log.1и заменяет предыдущий.update.log- последнее обновление, запущенное из веб-интерфейса.
Флаги командной строки --log-dir, -i/--instaflush и --syslog имеют приоритет над этими полями в том запуске, где они указаны, см. CLI-параметры.
Веб-сервер
Подвкладка Веб-сервер настраивает слушатель, который отдаёт веб-интерфейс, его API и MCP-эндпоинт. Сами настройки MCP находятся на вкладке Интеграции.

| Поле | Описание | По умолчанию |
|---|---|---|
| Адрес привязки | Адрес, на котором слушает веб-сервер. 0.0.0.0 или :: - все адреса, IPv4 и IPv6; 127.0.0.1 - только сам хост | 0.0.0.0 |
| Порт | Порт веб-интерфейса, от 1 до 65535. Порт, который использует другой слушатель b4, отклоняется при сохранении, как и новый порт, занятый другим процессом. Значение 0, заданное в файле конфигурации или флагом --web-port 0, выключает веб-сервер вместе с API и MCP-эндпоинтом | 7000 |
| Доступ из интернета | Добавляет правило файрвола, которое принимает TCP-соединения на этот порт с любого адреса, по IPv4 и IPv6, и возвращает его после перезагрузки файрвола. Включается только при заданных имени пользователя и пароле и не применяется, пока включён режим Пропустить настройку IPTables/NFTables. Правило следует за портом, который слушает работающий сервер, и смена порта переносит его при следующем перезапуске | Выкл |
| TLS Сертификат | Путь к файлу сертификата, .crt или .pem | - |
| TLS Ключ | Путь к файлу закрытого ключа, .key или .pem, без пароля | - |
Сертификат и ключ задаются вместе: одно поле без другого отклоняется при сохранении. Если оба поля пусты, веб-интерфейс работает по обычному HTTP. Файлы читаются при запуске веб-сервера, и обновлённый сертификат начинает действовать после перезапуска.
Аутентификация
| Поле | Описание | По умолчанию |
|---|---|---|
| Имя пользователя | Логин веб-интерфейса. Пустое поле выключает аутентификацию и удаляет сохранённый пароль | - |
| Пароль | Хранится в виде bcrypt-хеша, а не открытым текстом. Пустое поле оставляет сохранённый пароль; пока пароль сохранён, пустое поле в фокусе показывает подсказку Без изменений (оставьте пустым) | - |
Когда заданы оба поля, веб-интерфейс запрашивает их, а успешный вход выдаёт токен сессии. Токен действует, пока им пользуются хотя бы раз в 24 часа, и перестаёт действовать при перезапуске b4. Смена имени пользователя или пароля не завершает уже открытые сессии. После 5 неудачных попыток входа за 15 минут вход с этого адреса блокируется на 5 минут.
Аутентификация действует, только когда заполнены оба поля. Если задано только одно из них, веб-интерфейс остаётся открытым без входа, а карточка показывает предупреждение.
Без TLS-сертификата имя пользователя, пароль и каждый токен сессии передаются по сети без шифрования. Пока имя пользователя и пароль заданы без сертификата, карточка показывает предупреждение.
Сертификат, требования к ключу и поведение b4, когда файлы становятся непригодными, описаны в разделе HTTPS. Правило переключателя Доступ из интернета и то, чего он не может открыть, описаны в разделе Доступ из интернета.
Бэкап
Адрес /settings/backup из прежних версий открывает эту подвкладку.

Скачать бэкап
Кнопка Скачать бэкап сохраняет файл b4-backup-<дата>-<время>.tar.gz, архив tar со сжатием gzip. В архив входит каталог конфигурации, где лежит b4.json, вместе с подкаталогами. Кроме b4.json, в этом каталоге лежат история Дискавери (discovery_history.json) и DPI Детектора (detector_history.json) и пэйлоады (captures), и они тоже попадают в архив. Из архива исключаются:
- базы GeoSite и GeoIP (файлы
.dat) и незавершённые загрузки (файлы.dat.newи.part); oui.txt, база производителей для фильтрации устройств;- скрытые каталоги, в том числе
.hubс авторским ключом хаба сообщества, скрытые файлы.tmp, каталоги с именемoutи рабочие каталоги обновленияb4update-<n>; - символические ссылки и всё остальное, что не является ни обычным файлом, ни каталогом;
- бинарник b4, если он лежит в этом каталоге.
b4.json попадает в архив как есть, с хешем пароля, токенами и секретами, а вместе с ним и ai_secrets.json с API-ключами AI-помощника, если ключ сохранён. Для передачи другим предназначена безопасная копия.
Восстановить из бэкапа
Кнопка Загрузить и восстановить принимает архив .tar.gz размером до 50 МиБ и записывает его файлы в каталог конфигурации:
- файл из архива заменяет файл с тем же именем, а файл, которого в архиве нет, остаётся как есть;
- записи с абсолютным путём или с путём, который ведёт за пределы каталога конфигурации, пропускаются, как и записи, которые не являются ни файлом, ни каталогом;
- ничего не записывается за пределами каталога конфигурации или через символическую ссылку внутри него.
Архив, в котором нет ни одного файла для восстановления, отклоняется. После восстановления открывается окно Перезапуск сервиса B4. До перезапуска b4 работает с той конфигурацией, которую загрузил раньше, и сохранение в это время записывает её поверх восстановленного b4.json.
Восстановленный b4.json заменяет текущий, и копия текущего не сохраняется. Текущие настройки сохраняет бэкап, скачанный перед восстановлением.
Скачать конфигурацию
Карточка Скачать конфигурацию сохраняет конфигурацию, с которой работает b4, одним файлом JSON в том виде, в каком b4 записывает b4.json: настройки со значениями по умолчанию в нём не хранятся. Значения, заданные флагами командной строки, например --web-port или --log-dir, попадают в файл такими, какими они записаны в b4.json.
| Кнопка | Файл | Содержимое |
|---|---|---|
| Скачать безопасную копию | b4-config-safe-<дата>-<время>.json | Конфигурация с замаскированными учётными данными, частными именами хостов и секретами внутри URL, для отправки вместе с просьбой о помощи |
| Скачать как есть | b4-config-<дата>-<время>.json | Конфигурация с хешем пароля и всеми токенами и секретами |
API отдаёт те же файлы по GET /api/config/download?safe=true и GET /api/config/download.
Безопасная копия
| Что | Поля | В безопасной копии |
|---|---|---|
| Пароль веб-интерфейса | Пароль | Удаляется; "password_set": true отмечает, что пароль задан |
| Учётные данные | Имя пользователя веб-интерфейса, токены доступа IPinfo и MCP, имя пользователя и пароль SOCKS5, имена и значения секретов MTProto, ссылка на сохранённый API-ключ AI-помощника, имя пользователя и пароль вышестоящего прокси сета | [redacted] |
| Имена хостов роутера и собственных relay | Пути к TLS-сертификату и ключу веб-сервера и WEB-прокси Telegram; allowed_origins MCP-сервера, кроме *, localhost и IP-адресов; DC Relay, Свой WebSocket-домен, Домен Cloudflare Worker и Хост релея | [redacted] вместо имени. В пути заменяются Хост релея, каждое имя каталога с точкой не в начале имени и каждое имя файла с двумя такими точками и больше, кроме расширения: /etc/letsencrypt/live/[redacted]/fullchain.pem |
| Секреты внутри URL | URL загрузки GeoSite и GeoIP, Endpoint AI-помощника, Зеркала хаба, allowed_origins MCP-сервера на localhost или IP-адресе, адреса на вкладке Дискавери сета, записи поля Старый список доменов мониторинга, заданные как URL или содержащие @, ?, # или / | Учётные данные, путь, значения параметров запроса и фрагмент заменяются на [redacted]; схема, хост и порт сохраняются. URL загрузки встроенных источников геоданных b4 остаются без изменений |
| DoH-резолвер | URL DNS-over-HTTPS сета, а также Доверенный DNS-сервер Дискавери, если это URL https:// | Хост сохраняется, если это IP-адрес или резолвер из списка публичных резолверов b4; любой другой хост заменяется на [redacted], а хост под доменом известного провайдера - на имя вида [redacted].nextdns.io. Путь, кроме / и /dns-query, например личный идентификатор резолвера, заменяется на /[redacted]. Учётные данные, значения параметров запроса и фрагмент маскируются так же, как в других URL |
| Свои источники Telegram | URL списка CF-доменов, URL зеркала списка DC | [redacted], если поле не пустое и значение отличается от встроенного |
| Зеркала обновления | Зеркала обновления | [redacted] вместо каждой записи |
| Всё остальное | Сеты с названиями, целями и стратегиями, хост и порт вышестоящего прокси сета, обычные DNS-серверы, устройства с MAC-адресами, IP-адресами и именами, интерфейсы, адреса и порты слушателей, разрешённые источники SOCKS5, публичные DoH-резолверы, пути к файлам геоданных | Без изменений |
b4 не загружает файл конфигурации, в котором одно из маскируемых полей содержит [redacted]. В этом случае при запуске b4 работает с настройками по умолчанию и берёт из файла только Порт и Адрес привязки веб-сервера: веб-интерфейс остаётся по прежнему адресу, без входа и без TLS. Файл копируется рядом под именем b4.json.corrupt, как и нечитаемый файл, а ошибка в логе называет эти поля. Следующее сохранение заменяет файл.
Конфигурацию, в которой маскируемое поле содержит эту заглушку, b4 также не сохраняет, и ошибка называет каждое такое поле. Безопасная копия без заглушки, например копия конфигурации, в которой нечего маскировать, загружается как любой другой файл конфигурации.
MCP-инструмент b4_get_config возвращает конфигурацию без учётных данных и без пути к TLS-ключу веб-сервера, но с именами хостов и URL без изменений, см. Что вырезается.
Сбросить конфигурацию к значениям по умолчанию
Кнопка Сбросить после подтверждения заменяет конфигурацию значениями по умолчанию, кроме трёх частей, которые остаются как есть:
| Сохраняется | Что входит |
|---|---|
| Сеты | Каждый сет с целями, стратегиями, DNS и маршрутизацией |
| Настройки веб-сервера | Адрес привязки, Порт, Доступ из интернета, TLS Сертификат, TLS Ключ, Имя пользователя, Пароль, Язык, а также карточка MCP-сервер на вкладке Интеграции вместе с токеном доступа |
| Настройки геоданных | Пути, URL загрузки и автоматическое обновление баз GeoSite и GeoIP |
Всё остальное возвращается к значениям по умолчанию:
- вся вкладка Основные: движок пакетов, интерфейсы, обнаружение блокировки по IP, устройства с именами и значениями MSS, файрвол, MSS clamping, DNS и SOCKS5;
- Часовой пояс, Лимит памяти и Зеркала обновления на карточке Сервис, а также карточка Логирование;
- вкладка Дискавери вместе с мониторингом и вкладка Telegram вместе с секретами MTProto;
- IPinfo, AI-помощник и Хаб сообщества на вкладке Интеграции;
- раскладка дашборда.
Файлы рядом с b4.json, например история Дискавери и DPI Детектора, пэйлоады и ai_secrets.json, остаются как есть.
Сброс сохраняется и применяется так же, как сохранение из заголовка страницы: то, что применяется при сохранении, начинает действовать сразу, остальное - после следующего перезапуска. После сброса страница перезагружается.