# Быстрый старт BGP Server (FRR) Этот документ поможет вам быстро запустить BGP сервер на базе FRR для раздачи префиксов. ## Предварительные требования - Docker Desktop для Windows - PowerShell - RouterOS 7.14+ (для клиентской стороны) ## Шаг 1: Подготовка файлов ### Создание файла с префиксами Создайте файл `data/prefixes.txt` с вашими префиксами: ``` # Основные префиксы 192.168.1.0/24 192.168.2.0/24 10.0.0.0/8 172.16.0.0/12 # Дополнительные префиксы 203.0.113.0/24 198.51.100.0/24 ``` ### Создание дополнительного файла (опционально) Создайте файл `data/additional_prefixes.txt` для дополнительных префиксов: ``` # Дополнительные префиксы 192.168.100.0/24 192.168.200.0/24 ``` ## Шаг 2: Запуск сервера ### Вариант A: Использование PowerShell скрипта (рекомендуется) ```powershell # Запуск с автоматической сборкой образа .\scripts\start-server.ps1 -Build # Или запуск без пересборки .\scripts\start-server.ps1 ``` ### Вариант B: Использование Docker Compose ```powershell # Сборка и запуск docker-compose up -d --build # Или только запуск docker-compose up -d ``` ### Вариант C: Ручной запуск ```powershell # Сборка образа docker build -t bgp-server-frr . # Запуск контейнера docker run -d \ --name bgp-server \ --restart unless-stopped \ -p 179:179 \ -v ${PWD}/data:/app/data:ro \ -v ${PWD}/logs:/app/logs \ --cap-add NET_ADMIN \ --privileged \ bgp-server-frr ``` ## Шаг 3: Проверка работы ### Проверка статуса контейнера ```powershell # Статус контейнера docker ps # Логи контейнера docker logs bgp-server ``` ### Проверка FRR ```powershell # Версия FRR docker exec bgp-server vtysh -c "show version" # Статус BGP docker exec bgp-server vtysh -c "show ip bgp summary" # Анонсированные маршруты docker exec bgp-server vtysh -c "show ip bgp" ``` ### Проверка загруженных префиксов ```powershell # Логи загрузки префиксов docker exec bgp-server tail -f /app/logs/prefixes.log # Тестирование загрузки docker exec bgp-server python3 /app/scripts/load_prefixes.py --test ``` ## Шаг 4: Настройка RouterOS ### Базовая настройка BGP ```routeros # Создание BGP экземпляра /routing bgp instance add name=bgp-server as=65001 router-id=192.168.0.254 # Настройка BGP сети /routing bgp network add network=192.168.0.0/24 # Настройка BGP пира /routing bgp peer add name=bgp-server remote-address=192.168.100.99 remote-as=65000 instance=bgp-server # Включение BGP /routing bgp instance set bgp-server disabled=no ``` ### Проверка BGP сессии ```routeros # Статус BGP /routing bgp peer print # Полученные маршруты /routing bgp route print ``` ## Шаг 5: Мониторинг ### Просмотр логов ```powershell # Логи FRR docker exec bgp-server tail -f /app/logs/frr.log # Логи загрузки префиксов docker exec bgp-server tail -f /app/logs/prefixes.log # Логи мониторинга docker exec bgp-server tail -f /app/logs/monitor.log ``` ### Статус системы ```powershell # Статус в JSON формате docker exec bgp-server cat /app/logs/status.json # Запуск мониторинга docker exec bgp-server python3 /app/scripts/monitor.py ``` ### Команды vtysh ```powershell # Подключение к FRR CLI docker exec -it bgp-server vtysh # Полезные команды внутри vtysh: show ip bgp summary # Сводка BGP show ip bgp # Все BGP маршруты show ip route # Таблица маршрутизации show interface # Интерфейсы show running-config # Конфигурация ``` ## Управление ### Остановка сервера ```powershell # Остановка с сохранением контейнера .\scripts\stop-server.ps1 # Остановка с удалением контейнера .\scripts\stop-server.ps1 -Force ``` ### Перезагрузка префиксов ```powershell # Перезагрузка без перезапуска сервера docker exec bgp-server python3 /app/scripts/reload_prefixes.py ``` ### Обновление контейнера ```powershell # Обновление с пересборкой .\scripts\update-container.ps1 -Force ``` ## Диагностика ### Проблема: Контейнер не запускается ```powershell # Проверка логов docker logs bgp-server # Проверка портов netstat -an | findstr :179 # Проверка Docker docker system info ``` ### Проблема: BGP сессия не устанавливается ```powershell # Проверка сетевой связности docker exec bgp-server ping 192.168.0.254 # Проверка конфигурации FRR docker exec bgp-server vtysh -c "show running-config" # Проверка статуса BGP docker exec bgp-server vtysh -c "show ip bgp summary" ``` ### Проблема: Префиксы не анонсируются ```powershell # Проверка файлов префиксов docker exec bgp-server cat /app/data/prefixes.txt # Проверка логов загрузки docker exec bgp-server tail -f /app/logs/prefixes.log # Проверка статических маршрутов docker exec bgp-server vtysh -c "show ip route static" ``` ## Настройка переменных окружения Вы можете настроить BGP параметры через переменные окружения: ```powershell # Запуск с кастомными настройками docker run -d \ --name bgp-server \ -p 179:179 \ -v ${PWD}/data:/app/data:ro \ -v ${PWD}/logs:/app/logs \ -e BGP_LOCAL_AS=65000 \ -e BGP_ROUTER_ID=192.168.100.99 \ -e BGP_NEIGHBOR_IP=192.168.0.254 \ -e BGP_NEIGHBOR_AS=65001 \ -e BGP_HOLD_TIME=90 \ -e BGP_KEEPALIVE=30 \ --cap-add NET_ADMIN \ --privileged \ bgp-server-frr ``` ## Полезные команды ### Мониторинг в реальном времени ```powershell # Логи в реальном времени docker logs -f bgp-server # Статус BGP каждые 5 секунд while ($true) { docker exec bgp-server vtysh -c "show ip bgp summary" Start-Sleep 5 Clear-Host } ``` ### Резервное копирование ```powershell # Копирование файлов префиксов Copy-Item data/prefixes.txt data/prefixes.txt.backup # Экспорт конфигурации FRR docker exec bgp-server vtysh -c "show running-config" > frr-config.backup ``` ### Очистка ```powershell # Остановка и удаление контейнера docker stop bgp-server docker rm bgp-server # Удаление образа docker rmi bgp-server-frr # Очистка логов Remove-Item logs/* -Recurse -Force ``` ## Следующие шаги 1. **Настройка мониторинга**: Настройте алерты для критических событий 2. **Резервное копирование**: Настройте автоматическое резервное копирование конфигурации 3. **Безопасность**: Настройте firewall и аутентификацию BGP 4. **Масштабирование**: Рассмотрите использование нескольких экземпляров для высокой доступности ## Поддержка - Документация FRR: https://frrouting.org/ - GitHub проекта: https://github.com/FRRouting/frr - Сообщество: https://lists.frrouting.org/