# BGP Server Setup ## Обзор BGP сервер на Ubuntu 24.04 с возможностью подключения любых пиров и загрузки префиксов из файла с community. ## Архитектура - **BGP Server**: BIRD (Bird Internet Routing Daemon) - **OS**: Ubuntu 24.04 - **Функции**: - Прием BGP соединений от любых пиров - Загрузка префиксов из файла prefixes.txt - Настройка community для каждого префикса - Сервер НЕ получает префиксы, только раздает их клиентам ## Структура проекта ``` bgp-server/ ├── README.md ├── install.sh # Скрипт установки ├── config/ │ ├── bird.conf # Основная конфигурация BIRD │ └── bird6.conf # Конфигурация для IPv6 (опционально) ├── scripts/ │ ├── load_prefixes.py # Скрипт загрузки префиксов │ └── monitor.py # Мониторинг BGP сессий ├── data/ │ └── prefixes.txt # Файл с префиксами и community └── logs/ └── bird.log # Логи BIRD ``` ## Установка ### 1. Обновление системы ```bash sudo apt update && sudo apt upgrade -y ``` ### 2. Установка BIRD ```bash sudo apt install bird2 -y ``` ### 3. Настройка конфигурации ```bash # Копирование конфигурационных файлов sudo cp config/bird.conf /etc/bird/bird.conf sudo cp config/bird6.conf /etc/bird/bird6.conf # Создание директорий sudo mkdir -p /var/log/bird sudo mkdir -p /opt/bgp-server/data sudo mkdir -p /opt/bgp-server/scripts # Копирование скриптов sudo cp scripts/* /opt/bgp-server/scripts/ sudo cp data/prefixes.txt /opt/bgp-server/data/ ``` ### 4. Запуск сервисов ```bash sudo systemctl enable bird sudo systemctl start bird sudo systemctl enable bird6 sudo systemctl start bird6 ``` ## Конфигурация ### Формат файла prefixes.txt ``` # Формат: prefix community description # Community: ASN:value (например, 65001:100) 192.168.1.0/24 65001:100 "Customer A - Premium" 10.0.1.0/24 65001:200 "Customer B - Standard" 172.16.1.0/24 65001:300 "Customer C - Basic" 203.0.113.0/24 65001:400 "Customer D - Enterprise" ``` ### Загрузка префиксов ```bash # Загрузка префиксов из файла python3 /opt/bgp-server/scripts/load_prefixes.py # Мониторинг BGP сессий python3 /opt/bgp-server/scripts/monitor.py ``` ## Мониторинг ### Проверка статуса BIRD ```bash sudo birdc show protocols sudo birdc show routes sudo birdc show route table all ``` ### Просмотр логов ```bash sudo journalctl -u bird -f sudo tail -f /var/log/bird/bird.log ``` ## Безопасность ### Firewall настройки ```bash # Разрешить BGP (порт 179) sudo ufw allow 179/tcp # Разрешить SSH sudo ufw allow ssh # Включить firewall sudo ufw enable ``` ### Ограничение доступа - Настройте ACL в конфигурации BIRD - Используйте MD5 аутентификацию для BGP сессий - Ограничьте доступ к birdc только с localhost ## Troubleshooting ### Частые проблемы 1. **BGP сессия не устанавливается** - Проверьте firewall настройки - Убедитесь, что ASN настроен правильно - Проверьте логи BIRD 2. **Префиксы не загружаются** - Проверьте формат файла prefixes.txt - Убедитесь, что скрипт load_prefixes.py имеет права на выполнение - Проверьте синтаксис конфигурации BIRD 3. **Высокая нагрузка на CPU** - Оптимизируйте конфигурацию BIRD - Проверьте количество префиксов - Мониторьте использование памяти ## Полезные команды ```bash # Перезагрузка конфигурации BIRD sudo birdc configure # Проверка синтаксиса конфигурации sudo birdc -p # Экспорт маршрутов sudo birdc show route export all # Статистика протоколов sudo birdc show protocols all ```