Files
EvoBGP/docs/firewall.md
T
Denozordec 72045afcde
CI / changes (push) Successful in 11s
CI / commitlint (push) Has been skipped
CI / openapi (push) Successful in 25s
CI / web (push) Successful in 43s
CI / go (push) Successful in 1m2s
CI / bird2 (push) Successful in 16s
CI / release (push) Successful in 3m41s
feat(firewall): improve error handling and documentation for firewall enrollment
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.
2026-07-08 21:00:27 +07:00

2.6 KiB
Raw Blame History

Firewall blocklist

Подсистема синхронизации blocklist на произвольные Linux-серверы через bash-скрипт и HTTP API.

Авторизация

  1. EnrollPOST /v1/firewall/enroll с заголовком X-EvoBGP-Seed (значение EVOBGP_BUNDLE_SEED_HEX на CP). Клиент генерирует токен evobgp_fw_* локально.
  2. Approve — operator в Web UI (/firewall → Запросы).
  3. SyncGET /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.