Enhanced the firewall enrollment process by implementing better error handling for HTTP responses, specifically addressing database schema issues. Updated the documentation to include migration requirements for PostgreSQL and clarified the steps to take if enrollment fails due to an outdated schema. This ensures users are better informed about necessary actions during deployment.
2.6 KiB
Firewall blocklist
Подсистема синхронизации blocklist на произвольные Linux-серверы через bash-скрипт и HTTP API.
Авторизация
- Enroll —
POST /v1/firewall/enrollс заголовкомX-EvoBGP-Seed(значениеEVOBGP_BUNDLE_SEED_HEXна CP). Клиент генерирует токенevobgp_fw_*локально. - Approve — operator в Web UI (
/firewall→ Запросы). - Sync —
GET /v1/firewall/blocklistсAuthorization: Bearer <client_token>.
Политика 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 к префиксам.
Установка на сервер
Публичные URL (без API-ключа, вне WEBUI_IP_WHITELIST Traefik): GET /v1/firewall/install.sh, GET /v1/firewall/sync-script, POST /v1/firewall/enroll. Всегда HTTPS.
Требуется миграция 000027_firewall в PostgreSQL (применяется при старте API с актуальным бинарём). Если enroll отвечает 503 / database schema outdated — перезапустите evobgp-api / evobgp-all после деплоя новой версии.
curl -fsSL https://<api>/v1/firewall/install.sh | \
EVOBGP_CP_URL=https://<api> \
EVOBGP_SEED=<bundle_seed_hex> \
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, remote-speakers.md.