217 lines
5.8 KiB
Markdown
217 lines
5.8 KiB
Markdown
# 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 # Эта инструкция
|
||
```
|
||
|
||
## Быстрый запуск
|
||
|
||
1. **Установите зависимости (если не установлены):**
|
||
```bash
|
||
./install-dependencies.sh
|
||
```
|
||
|
||
2. **Сделайте скрипты исполняемыми:**
|
||
```bash
|
||
chmod +x *.sh
|
||
```
|
||
|
||
3. **Запустите BGP сервер:**
|
||
```bash
|
||
./start-bgp-server.sh
|
||
```
|
||
|
||
## Ручной запуск
|
||
|
||
Если вы предпочитаете запускать вручную:
|
||
|
||
```bash
|
||
# Остановить существующие контейнеры
|
||
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 (консоль управления)
|
||
|
||
```bash
|
||
docker exec -it bgp-server vtysh
|
||
```
|
||
|
||
### Полезные команды vtysh
|
||
|
||
```bash
|
||
# Показать статус BGP
|
||
show ip bgp summary
|
||
|
||
# Показать анонсированные префиксы
|
||
show ip bgp
|
||
|
||
# Показать community
|
||
show ip bgp community
|
||
|
||
# Показать соседей
|
||
show ip bgp neighbors
|
||
|
||
# Показать IPv6 информацию
|
||
show ipv6 bgp summary
|
||
```
|
||
|
||
### Просмотр логов
|
||
|
||
```bash
|
||
# Просмотр логов в реальном времени
|
||
docker-compose logs -f bgp-server
|
||
|
||
# Просмотр последних логов
|
||
docker-compose logs bgp-server
|
||
```
|
||
|
||
### Остановка сервера
|
||
|
||
```bash
|
||
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;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
## Мониторинг
|
||
|
||
### Проверка статуса контейнера
|
||
|
||
```bash
|
||
docker ps --filter "name=bgp-server"
|
||
```
|
||
|
||
### Проверка сетевых портов
|
||
|
||
```bash
|
||
netstat -tuln | grep :179
|
||
netstat -tuln | grep :2601
|
||
```
|
||
|
||
### Проверка логов FRRouting
|
||
|
||
```bash
|
||
docker exec bgp-server cat /var/log/frr/frr.log
|
||
```
|
||
|
||
## Troubleshooting
|
||
|
||
### Проблема: Контейнер не запускается
|
||
|
||
1. Проверьте, что Docker Desktop запущен
|
||
2. Проверьте логи: `docker-compose logs bgp-server`
|
||
3. Убедитесь, что порты 179 и 2601 не заняты
|
||
|
||
### Проблема: BGP сессии не устанавливаются
|
||
|
||
1. Проверьте настройки firewall
|
||
2. Убедитесь, что клиент правильно настроен
|
||
3. Проверьте логи BGP: `docker exec -it bgp-server vtysh -c "show ip bgp summary"`
|
||
|
||
### Проблема: Префиксы не анонсируются
|
||
|
||
1. Проверьте конфигурацию в `frr.conf`
|
||
2. Убедитесь, что префиксы правильно прописаны
|
||
3. Проверьте community настройки
|
||
|
||
## Безопасность
|
||
|
||
⚠️ **Важно**: Этот BGP сервер настроен для тестирования и разработки. Для продакшена:
|
||
|
||
1. Измените пароли по умолчанию
|
||
2. Настройте firewall правила
|
||
3. Используйте более строгие настройки безопасности
|
||
4. Ограничьте доступ к vtysh
|
||
|
||
## Поддержка
|
||
|
||
При возникновении проблем:
|
||
|
||
1. Проверьте логи контейнера
|
||
2. Убедитесь в правильности конфигурации
|
||
3. Проверьте сетевые настройки
|
||
4. Обратитесь к документации FRRouting: https://frrouting.org/ |