Использование CLI keen-pbr
Использование CLI keen-pbr
keen-pbr умеет запускать сервис маршрутизации, проверять его состояние в реальном времени, скачивать данные списков и выводить сгенерированную конфигурацию резолвера.
Использование
Usage: keen-pbr [options] <command>
Options:
--config <path> Путь к JSON файлу конфигурации
--log-level <lvl> Уровень логов: error, warn, info, verbose, debug
--no-api Отключить REST API во время выполнения
--version Показать версию и выйти
--help Показать эту справку и выйти
Commands:
service
status
download
generate-resolver-config <res>
resolver-config-hash
test-routing <ip-or-domain>Файл конфигурации обычно /etc/keen-pbr/config.json на OpenWrt и Debian, и /opt/etc/keen-pbr/config.json на Keenetic / NetCraze.
Опции
| Флаг | Описание |
|---|---|
--config <path> |
Путь к JSON файлу конфигурации. |
--log-level <lvl> |
Детализация логов: error, warn, info, verbose или debug. |
--no-api |
Отключить REST API, даже если он включён в конфиге. |
--version |
Вывести версию и выйти. |
--help |
Вывести справку и выйти. |
Команды
| Команда | Описание |
|---|---|
service |
Запустить сервис маршрутизации на переднем плане. |
status |
Показать состояние маршрутизации, таблиц маршрутизации, правил и верификации firewall, затем выйти. |
download |
Загрузить все списки с URL в кэш, затем выйти. |
generate-resolver-config <res> |
Вывести сгенерированную конфигурацию резолвера в stdout. Поддерживаемые резолверы: dnsmasq-ipset, dnsmasq-nftset. |
resolver-config-hash |
Вывести MD5-хеш сгенерированного сопоставления домен-ipset, затем выйти. |
test-routing <ip-or-domain> |
Сравнить ожидаемую и фактическую маршрутизацию для данного IP или домена. |
Сигналы
Когда keen-pbr работает как управляемый сервис (демон), им также можно управлять через Unix-сигналы:
| Сигнал | Действие |
|---|---|
SIGUSR1 |
Повторная проверка таблиц маршрутизации и немедленный запуск urltest-замеров задержки |
SIGHUP |
Полная перезагрузка: повторная загрузка списков при изменениях, повторное применение правил firewall и маршрутизации |
SIGTERM / SIGINT |
Корректное завершение работы |
Пример полной перезагрузки через сигнал SIGHUP:
bash
kill -HUP $(cat /var/run/keen-pbr.pid)Примеры
Проверить состояние маршрутизации и firewall:
bash
keen-pbr statusПример вывода:
keen-pbr status - config: /etc/keen-pbr/config.json
Firewall backend: nftables
Outbounds:
corp_vpn [interface] iface=corp_vpn fwmark=0x00010000 table=402
route table=402 default dev corp_vpn ............................... OK
rule 0x00010000/0x00ff0000 -> table=402 pri=402 ........... OK [v4+v6]
auto_vpn [urltest] fwmark=0x00060000 table=407
route table=407 default dev corp_vpn ............................... OK
rule 0x00060000/0x00ff0000 -> table=407 pri=407 ........... OK [v4+v6]
Firewall:
chain KeenPbrTable / prerouting hook ............................... OK
rule kpbr4_generic -> MARK 0x00010000 ........................ MISSING
правило не найдено в цепочке prerouting nftables
Overall: DEGRADED (2 проверки не пройдено)
Статус: OK / MISSING / MISMATCH / ERRORЗагрузить все списки с URL:
bash
keen-pbr downloadПример вывода:
[google] Not modified (304)
[internal.site] Skipped (no URL)
[generic] Skipped (no URL)Сгенерировать конфигурацию резолвера:
bash
keen-pbr generate-resolver-config dnsmasq-ipsetПример вывода:
# Generated by keen-pbr (dnsmasq-ipset) - do not edit manually
address=/use-application-dns.net/
rebind-domain-ok=keen.pbr
server=/check.keen.pbr/127.0.0.88#53
server=10.100.100.100
# List: google
ipset=/google.com/www.google.com/.../kpbr4d_google,kpbr6d_googleВывести хеш конфигурации резолвера:
bash
keen-pbr resolver-config-hashПример вывода:
6aa71fa9012013b242460b9d1e173d82Протестировать совпадение ожидаемой и фактической маршрутизации:
bash
keen-pbr test-routing google.comПример вывода:
Target: google.com
Resolved IPs: 2001:4860:4860::8888, 142.250.74.14
IP | List Match | Expected Outbound | Actual Outbound | Status
---------------------------------------------------------------------------------------------------
2001:4860:4860::8888 | google (via google.com) | corp_vpn | corp_vpn | OK
142.250.74.14 | google (via google.com) | corp_vpn | corp_vpn | OK