No description
Find a file
a.kazantsev 00b3956580 1
2026-07-03 16:51:33 +03:00
.gigacode/plans 1 2026-07-03 16:51:33 +03:00
__pycache__ 1 2026-07-03 16:51:33 +03:00
config.example.yaml 1 2026-07-03 16:51:33 +03:00
config.yaml 1 2026-07-03 16:51:33 +03:00
domain_routing.py 1 2026-07-03 16:51:33 +03:00
domains.example.yaml 1 2026-07-03 16:51:33 +03:00
domains.yaml 1 2026-07-03 16:51:33 +03:00
README.md 1 2026-07-03 16:51:33 +03:00

Domain-based Routing для BIRD BGP

Этот проект содержит скрипт для автоматической генерации BGP-конфигурации на основе списка доменов для BIRD BGP маршрутизатора.

Возможности

  • Читает список доменов из YAML-файла
  • Разрешает домены в IPv4-адреса через DNS
  • Генерирует конфигурацию для BIRD BGP с network statements в формате /24 reject
  • Поддерживает настраиваемые параметры BGP
  • Логирование процессов с различными уровнями детализации

Требования

  • Python 3.9+
  • Модуль pyyaml (pip install pyyaml)
  • BIRD BGP (установлен на целевой системе)

Установка

  1. Склонируйте репозиторий:
git clone <repository-url>
cd domain-routing-bird
  1. Установите зависимости:
pip install pyyaml
  1. Скопируйте примеры конфигурационных файлов:
cp config.example.yaml config.yaml
cp domains.example.yaml domains.yaml
  1. Настройте config.yaml и domains.yaml под ваши нужды

Использование

Базовый запуск:

python3 domain_routing.py

С указанием конфигурационного файла:

python3 domain_routing.py -c /path/to/config.yaml

С подробным выводом (DEBUG уровень):

python3 domain_routing.py -c config.yaml -v

Помощь:

python3 domain_routing.py --help

Настройка

Конфигурационный файл (config.yaml)

# Путь к файлу со списком доменов
domains_file: domains.yaml

# Путь к выходному конфигурационному файлу BIRD
output_file: /etc/bird/bird.conf

# DNS-сервер для разрешения доменов (опционально)
# dns_server: 8.8.8.8

# Уровень логирования: DEBUG, INFO, WARNING, ERROR
log_level: INFO

# Параметры BGP (опционально)
# neighbor_ip: 192.168.1.1
# neighbor_as: 65000
# protocol_name: domain_routing

Список доменов (domains.yaml)

# Список доменов для domain-based routing
# Каждый домен будет разрешен в IPv4-адреса и добавлен в BGP-конфигурацию

# Основные домены
- example.com
- test.com

# Домены с комментариями
# - corporate.example.com  # Корпоративный домен
# - api.example.com        # API домен

Формат выходной конфигурации

Скрипт генерирует конфигурацию в следующем формате:

# Generated by domain-routing-bird
# Generated at: 2026-07-03T12:00:00.000000

protocol bgp domain_routing {
    import all;
    export all;
    neighbor 192.168.1.1 as 65000;

    network 1.2.3.0/24 reject;
    network 4.5.6.0/24 reject;
}

Интеграция с BIRD BGP

После генерации конфигурации:

  1. Проверьте сгенерированный файл (по умолчанию /etc/bird/bird.conf)
  2. Для применения изменений выполните:
sudo birdc configure

Или перезапустите BIRD:

sudo systemctl restart bird

Примеры использования

Пример 1: Базовая настройка

  1. Создайте config.yaml и domains.yaml из примеров
  2. Запустите скрипт:
python3 domain_routing.py
  1. Проверьте сгенерированный файл /etc/bird/bird.conf
  2. Примените изменения:
sudo birdc configure

Пример 2: Кастомные параметры

  1. Отредактируйте config.yaml:
domains_file: my_domains.yaml
output_file: /etc/bird/bird.conf
neighbor_ip: 10.0.0.1
neighbor_as: 65100
protocol_name: custom_routing
  1. Создайте my_domains.yaml со своими доменами
  2. Запустите скрипт:
python3 domain_routing.py -c config.yaml

Troubleshooting

Проблема: "Файл не найден"

Решение: Убедитесь, что пути к конфигурационным файлам указаны правильно

Проблема: "Не удалось разрешить домен"

Решение: Проверьте сетевое соединение и DNS-серверы

Проблема: "Ошибка записи файла"

Решение: Убедитесь, что у пользователя есть права на запись в целевой файл

Проблема: "Конфигурация не применяется"

Решение:

  • Проверьте синтаксис сгенерированной конфигурации
  • Убедитесь, что BIRD запущен
  • Проверьте права доступа к /etc/bird/

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

  • Убедитесь, что список доменов содержит только доверенные домены
  • Рассмотрите использование DNSSEC для защиты от DNS spoofing
  • Ограничьте права доступа к конфигурационным файлам
  • Используйте非-стандартные BGP-параметры в продакшене

Лицензия

Этот проект создан для domain-routing-bird репозитория.

Автор

GigaCode - Sber AI Assistant