# Firewall blocklist Подсистема синхронизации blocklist на произвольные Linux-серверы через bash-скрипт и HTTP API. ## Авторизация 1. **Enroll** — `POST /v1/firewall/enroll` с заголовком `X-EvoBGP-Seed` (значение `EVOBGP_BUNDLE_SEED_HEX` на CP). Клиент генерирует токен `evobgp_fw_*` локально. 2. **Approve** — operator в Web UI (`/firewall` → Запросы). 3. **Sync** — `GET /v1/firewall/blocklist` с `Authorization: Bearer `. ## Политика block/accept - **`block`** — добавить префиксы выбранного BGP community в kernel blocklist. - **`accept`** — не блокировать префиксы этого community. - **Community** — правило применяется к префиксам с этим `community_id` в опубликованной revision; пустое значение («Все») — ко всем communities. - **Default** — accept (пустой blocklist без явных `block`). Порядок: сначала per-server overrides клиента, затем tenant-default. Для каждого community берётся первое подходящее правило по приоритету. Справочник communities: Web UI → Справочники, или модули с привязкой community к префиксам. ## Установка на сервер ```bash curl -fsSL https:///v1/firewall/install.sh | \ EVOBGP_CP_URL=https:// \ EVOBGP_SEED= \ EVOBGP_CLIENT_NAME="web-01" \ bash ``` Файлы: `/etc/evobgp/firewall.conf`, `/usr/local/sbin/evobgp-firewall.sh`, systemd timer `evobgp-firewall.timer`. ## Failover через speaker При `EVOBGP_FIREWALL_FAILOVER_ENABLED=1` на speaker-agent CP реплицирует состояние через `POST /v1/agent/firewall-replicate`. Клиенты используют тот же DNS-домен. См. также [access.md](access.md), [remote-speakers.md](remote-speakers.md).