Files
bgp-server/QUICKSTART.md
T

8.3 KiB

Быстрый старт 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 скрипта (рекомендуется)

# Запуск с автоматической сборкой образа
.\scripts\start-server.ps1 -Build

# Или запуск без пересборки
.\scripts\start-server.ps1

Вариант B: Использование Docker Compose

# Сборка и запуск
docker-compose up -d --build

# Или только запуск
docker-compose up -d

Вариант C: Ручной запуск

# Сборка образа
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: Проверка работы

Проверка статуса контейнера

# Статус контейнера
docker ps

# Логи контейнера
docker logs bgp-server

Проверка FRR

# Версия 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"

Проверка загруженных префиксов

# Логи загрузки префиксов
docker exec bgp-server tail -f /app/logs/prefixes.log

# Тестирование загрузки
docker exec bgp-server python3 /app/scripts/load_prefixes.py --test

Шаг 4: Настройка RouterOS

Базовая настройка BGP

# Создание 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 сессии

# Статус BGP
/routing bgp peer print

# Полученные маршруты
/routing bgp route print

Шаг 5: Мониторинг

Просмотр логов

# Логи 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

Статус системы

# Статус в JSON формате
docker exec bgp-server cat /app/logs/status.json

# Запуск мониторинга
docker exec bgp-server python3 /app/scripts/monitor.py

Команды vtysh

# Подключение к 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          # Конфигурация

Управление

Остановка сервера

# Остановка с сохранением контейнера
.\scripts\stop-server.ps1

# Остановка с удалением контейнера
.\scripts\stop-server.ps1 -Force

Перезагрузка префиксов

# Перезагрузка без перезапуска сервера
docker exec bgp-server python3 /app/scripts/reload_prefixes.py

Обновление контейнера

# Обновление с пересборкой
.\scripts\update-container.ps1 -Force

Диагностика

Проблема: Контейнер не запускается

# Проверка логов
docker logs bgp-server

# Проверка портов
netstat -an | findstr :179

# Проверка Docker
docker system info

Проблема: BGP сессия не устанавливается

# Проверка сетевой связности
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"

Проблема: Префиксы не анонсируются

# Проверка файлов префиксов
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 параметры через переменные окружения:

# Запуск с кастомными настройками
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

Полезные команды

Мониторинг в реальном времени

# Логи в реальном времени
docker logs -f bgp-server

# Статус BGP каждые 5 секунд
while ($true) { 
    docker exec bgp-server vtysh -c "show ip bgp summary"
    Start-Sleep 5
    Clear-Host
}

Резервное копирование

# Копирование файлов префиксов
Copy-Item data/prefixes.txt data/prefixes.txt.backup

# Экспорт конфигурации FRR
docker exec bgp-server vtysh -c "show running-config" > frr-config.backup

Очистка

# Остановка и удаление контейнера
docker stop bgp-server
docker rm bgp-server

# Удаление образа
docker rmi bgp-server-frr

# Очистка логов
Remove-Item logs/* -Recurse -Force

Следующие шаги

  1. Настройка мониторинга: Настройте алерты для критических событий
  2. Резервное копирование: Настройте автоматическое резервное копирование конфигурации
  3. Безопасность: Настройте firewall и аутентификацию BGP
  4. Масштабирование: Рассмотрите использование нескольких экземпляров для высокой доступности

Поддержка