frr
BGP Server с FRRouting
Этот проект предоставляет готовое решение для запуска BGP сервера с использованием контейнера FRRouting, который анонсирует префиксы всем подключенным клиентам с разделением по community.
Требования
- Docker Engine
- Docker Compose
- Bash shell
Структура проекта
bgp-server/
├── docker-compose.yml # Конфигурация Docker контейнера
├── frr.conf # Конфигурация FRRouting
├── prefixes.txt # Файл с префиксами и community
├── start-bgp-server.sh # Скрипт запуска для Linux
├── stop-bgp-server.sh # Скрипт остановки для Linux
├── check-bgp-status.sh # Скрипт проверки статуса для Linux
├── update-prefixes.sh # Скрипт обновления префиксов для Linux
├── install-dependencies.sh # Скрипт установки зависимостей
└── README.md # Эта инструкция
Быстрый запуск
-
Установите зависимости (если не установлены):
./install-dependencies.sh -
Сделайте скрипты исполняемыми:
chmod +x *.sh -
Запустите BGP сервер:
./start-bgp-server.sh
Ручной запуск
Если вы предпочитаете запускать вручную:
# Остановить существующие контейнеры
docker-compose down
# Запустить BGP сервер
docker-compose up -d
# Проверить статус
docker ps
# Посмотреть логи
docker-compose logs bgp-server
Конфигурация
Префиксы (prefixes.txt)
Файл содержит префиксы в формате:
prefix community1:community2:community3
Пример:
192.168.1.0/24 65000:100:65000:200
10.0.0.0/8 65000:101:65000:201
BGP настройки (frr.conf)
- ASN: 65000
- Router ID: 192.168.1.1
- Порт BGP: 179
- Порт vtysh: 2601
Управление сервером
Подключение к vtysh (консоль управления)
docker exec -it bgp-server vtysh
Полезные команды vtysh
# Показать статус BGP
show ip bgp summary
# Показать анонсированные префиксы
show ip bgp
# Показать community
show ip bgp community
# Показать соседей
show ip bgp neighbors
# Показать IPv6 информацию
show ipv6 bgp summary
Просмотр логов
# Просмотр логов в реальном времени
docker-compose logs -f bgp-server
# Просмотр последних логов
docker-compose logs bgp-server
Остановка сервера
docker-compose down
Подключение клиентов
Настройка BGP клиента
Клиенты могут подключаться к BGP серверу по адресу:
- IP: IP адрес хоста, где запущен контейнер
- Порт: 179
- ASN: 65000 (внешний ASN)
Пример конфигурации клиента (Cisco)
router bgp 65001
neighbor 192.168.1.1 remote-as 65000
neighbor 192.168.1.1 send-community
network 192.168.2.0/24
Пример конфигурации клиента (Juniper)
protocols {
bgp {
group external {
type external;
peer-as 65000;
neighbor 192.168.1.1 {
send-community;
}
}
}
}
Мониторинг
Проверка статуса контейнера
docker ps --filter "name=bgp-server"
Проверка сетевых портов
netstat -tuln | grep :179
netstat -tuln | grep :2601
Проверка логов FRRouting
docker exec bgp-server cat /var/log/frr/frr.log
Troubleshooting
Проблема: Контейнер не запускается
- Проверьте, что Docker Desktop запущен
- Проверьте логи:
docker-compose logs bgp-server - Убедитесь, что порты 179 и 2601 не заняты
Проблема: BGP сессии не устанавливаются
- Проверьте настройки firewall
- Убедитесь, что клиент правильно настроен
- Проверьте логи BGP:
docker exec -it bgp-server vtysh -c "show ip bgp summary"
Проблема: Префиксы не анонсируются
- Проверьте конфигурацию в
frr.conf - Убедитесь, что префиксы правильно прописаны
- Проверьте community настройки
Безопасность
⚠️ Важно: Этот BGP сервер настроен для тестирования и разработки. Для продакшена:
- Измените пароли по умолчанию
- Настройте firewall правила
- Используйте более строгие настройки безопасности
- Ограничьте доступ к vtysh
Поддержка
При возникновении проблем:
- Проверьте логи контейнера
- Убедитесь в правильности конфигурации
- Проверьте сетевые настройки
- Обратитесь к документации FRRouting: https://frrouting.org/
Languages
Python
57.8%
PowerShell
24.6%
Shell
14.4%
Dockerfile
3.2%