Документация

Bcloud Catalyst — гибридный файрвол с ядром на eBPF/XDP. Эта документация описывает установку, модель политик, работу с 5 зонами доступности и API.

Введение

Catalyst работает на двух уровнях: локальном (ядро на узле — XDP-программа, конвертирует YAML-политики в BPF-байткод) и облачном (контроллер, агрегирует телеметрию, распространяет политики и обновления Threat Intelligence).

Даже при полной потере связи с контроллером каждый узел продолжает фильтровать трафик по последней применённой версии политики — это fail-static, а не fail-open.

Быстрый старт

Установка за 60 секунд на чистом Ubuntu 24.04:

bash# 1. Добавляем репозиторий curl -fsSL https://repo.b-cloud.xyz/catalyst.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/catalyst.gpg echo "deb [signed-by=/etc/apt/keyrings/catalyst.gpg] https://repo.b-cloud.xyz/apt stable main" | sudo tee /etc/apt/sources.list.d/catalyst.list # 2. Устанавливаем sudo apt update && sudo apt install -y catalyst # 3. Регистрируем узел и вводим токен из панели sudo catalyst init --token="cat_live_xxxxxxxxxxxxxxxxxxxxxxxx" # 4. Проверяем состояние sudo catalyst status
INFO Первый узел автоматически попадает в зону eu-central-1 (Frankfurt). Сменить зону можно в панели или флагом --zone при catalyst init.

Требования

КомпонентМинимумРекомендуется
CPU4 vCPU8+ vCPU (XDP native)
RAM4 GB16 GB
Диск20 GB SSDNVMe, RAID1
Ядро Linux5.156.1+ (полная поддержка XDP)
ОСUbuntu 22.04 / Debian 12Ubuntu 24.04
Сеть1 Gbps10 Gbps

Установка

Из репозитория (рекомендуется)

bashsudo apt install -y catalyst sudo systemctl enable --now catalyst

Бинарник вручную

bashcurl -fsSL https://repo.b-cloud.xyz/catalyst/v4.1.0/catalyst-linux-amd64 -o /usr/local/bin/catalyst sudo chmod +x /usr/local/bin/catalyst catalyst version

Docker

bashdocker run -d --name catalyst \ --privileged --network host \ -v /etc/catalyst:/etc/catalyst \ ghcr.io/bcloud/catalyst:4.1.0
WARN Для XDP-native режима нужен флаг --privileged и сетевой интерфейс в host-режиме. В generic-режиме (без XDP-native) privileged не требуется, но задержка вырастает с ~18 µs до ~200 µs.

Узлы

Узел (node) — это один сервер или VM, на котором запущен демон Catalyst. Каждый узел имеет уникальный идентификатор вида Pl-1_FH, привязан к зоне доступности и обменивается с контроллером по mTLS.

Команды управления узлом:

bashcatalyst status # статус локального узла catalyst node info # детали: зона, версия, BPF-программы catalyst node drain # дренаж соединений перед обслуживанием catalyst node leave # отключить от кластера

Правила

Правило (rule) — минимальная единица фильтрации: одно условие, одно действие, один приоритет. Правила компилируются в BPF-байткод и хранятся в кольцевом буфере ядра.

yaml- name: "block-known-bad-ips" priority: 5 action: deny source: feed: threat-intel:high-confidence log: true

Доступные действия:

ДействиеОписаниеЗадержка
allowПропустить пакет~2 µs
denyОтбросить (XDP_DROP)~18 µs
rate_limitОграничить по pps~22 µs
redirectПеренаправить в другой CPU / интерфейс~15 µs
log_onlyПропустить + залогировать~35 µs

Политики

Политика (policy) — набор правил + дефолты + метаданные, применяемый атомарно. Политики хранятся в Git-совместимом репозитории, применение требует явного подтверждения (или включённого auto-apply в CI).

yamlversion: 1 node: Pl-1_FH defaults: ingress: deny egress: allow rules: - name: "allow-ssh-admin" priority: 10 action: allow source: ["10.0.0.0/24"] destination: { port: [22] }

Жизненный цикл политики:

  1. draft — черновик, ещё не влияет на трафик
  2. staged — скомпилирована в BPF, ждёт применения
  3. applied — активна на узлах
  4. archived — откатили, хранится для истории

Зоны доступности

Catalyst работает в 5 зонах. Узел привязан к одной зоне, контроллер — глобальный; между зонами политики синхронизируются через gossip-протокол.

eu-central-1
Frankfurt
10 Gbps uplink · 18 µs baseline
eu-east-1
Warsaw
10 Gbps uplink · 18 µs baseline
us-east-1
Ashburn
10 Gbps uplink · 18 µs baseline
us-west-1
Portland
10 Gbps uplink · 18 µs baseline
ap-southeast-1
Singapore
10 Gbps uplink · 18 µs baseline

Кросс-зонное взаимодействие работает через control.catalyst.b-cloud.xyz (anycast). При падении одной зоны остальные продолжают обслуживать трафик без потери консистентности политик.

CLI

Основные команды catalyst:

КомандаОписание
catalyst statusКраткий статус узла
catalyst rules listСписок активных правил
catalyst rules add -f rule.yamlДобавить правило из файла
catalyst policy apply -f policy.yamlПрименить политику
catalyst policy rollbackОткат к предыдущей версии
catalyst metricsМетрики в реальном времени
catalyst logs tail -fПоток логов
catalyst zone switch us-east-1Перевести узел в другую зону

Web UI

Панель доступна по адресу catalyst.b-cloud.xyz. Разделы: Обзор, Правила, Трафик, Журнал, Узлы, Политики, Настройки. Все действия логируются и видны в журнале аудита.

REST API

Полная спецификация — в разделе API Reference. База: https://control.catalyst.b-cloud.xyz/v1. Аутентификация — Bearer-токен.

bashcurl -H "Authorization: Bearer $CATALYST_TOKEN" \ https://control.catalyst.b-cloud.xyz/v1/nodes

Threat Intelligence

Catalyst подтягивает индикаторы компрометации (IoC) из трёх источников: Catalyst Global (собственный фид), AbuseIPDB и AlienVault OTX. Обновление — каждые 30 секунд, приоритет — high-confidence фиды.

ФидОбновлениеОбъём
Catalyst Global30 сек~ 2.4M IoC
AbuseIPDB5 мин~ 800k IoC
AlienVault OTX1 час~ 3.1M IoC

Мониторинг

Метрики экспортируются в Prometheus-формате на :9100/metrics. Ключевые:

Алерты по умолчанию:

УсловиеУровеньДействие
Latency > 100 µsWARNУведомление в Telegram
Latency > 500 µsCRITУведомление + email
Drops > 10k/минWARNTelegram
BPF load failCRITPagerDuty + rollback

Бэкапы

Политики хранятся в Git — бэкап делается автоматически каждый пуш. Метрики хранятся 90 дней. Журналы событий — 30 дней (в Enterprise — 365 дней).

bash# Экспорт текущей конфигурации catalyst export --format=yaml > catalyst-backup-$(date +%F).yaml # Восстановление из бэкапа catalyst import -f catalyst-backup-2026-11-09.yaml --mode=replace

Безопасность

FAQ

Что будет, если контроллер недоступен?

Узел продолжает работать по последней применённой политике (fail-static). Попытки синхронизации возобновляются с exponential backoff до 5 минут.

Можно ли использовать Catalyst без облака?

Да — в режиме standalone. Локальная панель, локальный Git, без центрального контроллера. Доступно в тарифе STARTER.

Как перевести узел в другую зону?

catalyst zone switch <zone-id>. Соединения дренируются, узел переподключается к контроллеру в новой зоне. Downtime: ~200 мс.

Что происходит при переполнении conntrack?

XDP-слой продолжает блокировать пакеты по правилам, но stateful-проверки (established-соединения) могут отбрасываться. Мониторь catalyst_conntrack_entries — при 80% от лимита настраивай алерт.

Поддерживается ли Windows?

Нет. Catalyst работает только на Linux с ядром ≥ 5.15. Поддержка FreeBSD и OpenBSD — в roadmap на 2027.