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

Система

Вкладка Система содержит настройки самого b4. Они разложены по подвкладкам Сервис (процесс сервиса и его лог), Веб-сервер (веб-интерфейс) и Бэкап (бэкапы конфигурации).

Изменения сохраняются кнопкой Сохранить в заголовке страницы, см. Сохранение и перезапуск. Каждое поле начинает действовать либо при сохранении, либо после перезапуска сервиса:

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

Сервис​

Подвкладка Сервис состоит из двух карточек: Сервис и Логирование.

Подвкладка «Сервис» с карточками «Сервис» и «Логирование»

Перезапустить сервис​

Кнопка Перезапустить сервис после подтверждения перезапускает b4. Способ перезапуска зависит от менеджера сервисов, который находит b4. Менеджеры проверяются в таком порядке:

Менеджер сервисовПризнакПерезапуск
systemd/etc/systemd/system/b4.service и команда systemctlsystemctl 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 ещё его устройство, адреса, захват, счётчики пакетов и правила захвата
FirewallBackend, проверка 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 минут.

Неполная аутентификация

Аутентификация действует, только когда заполнены оба поля. Если задано только одно из них, веб-интерфейс остаётся открытым без входа, а карточка показывает предупреждение.

Аутентификация по HTTP

Без TLS-сертификата имя пользователя, пароль и каждый токен сессии передаются по сети без шифрования. Пока имя пользователя и пароль заданы без сертификата, карточка показывает предупреждение.

HTTPS и доступ из интернета

Сертификат, требования к ключу и поведение 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.

warning

Восстановленный 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
Секреты внутри URLURL загрузки 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
Свои источники TelegramURL списка CF-доменов, URL зеркала списка DC[redacted], если поле не пустое и значение отличается от встроенного
Зеркала обновленияЗеркала обновления[redacted] вместо каждой записи
Всё остальноеСеты с названиями, целями и стратегиями, хост и порт вышестоящего прокси сета, обычные DNS-серверы, устройства с MAC-адресами, IP-адресами и именами, интерфейсы, адреса и порты слушателей, разрешённые источники SOCKS5, публичные DoH-резолверы, пути к файлам геоданныхБез изменений

b4 не загружает файл конфигурации, в котором одно из маскируемых полей содержит [redacted]. В этом случае при запуске b4 работает с настройками по умолчанию и берёт из файла только Порт и Адрес привязки веб-сервера: веб-интерфейс остаётся по прежнему адресу, без входа и без TLS. Файл копируется рядом под именем b4.json.corrupt, как и нечитаемый файл, а ошибка в логе называет эти поля. Следующее сохранение заменяет файл.

Конфигурацию, в которой маскируемое поле содержит эту заглушку, b4 также не сохраняет, и ошибка называет каждое такое поле. Безопасная копия без заглушки, например копия конфигурации, в которой нечего маскировать, загружается как любой другой файл конфигурации.

MCP

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, остаются как есть.

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