336 lines
8.9 KiB
Markdown
336 lines
8.9 KiB
Markdown
# Инструкция по запуску BGP Server из Docker Registry
|
||
|
||
## Быстрый старт
|
||
|
||
### 1. Создание файлов с префиксами
|
||
|
||
Создайте папку `data` и файл с префиксами:
|
||
|
||
```powershell
|
||
# Создание папки для данных
|
||
mkdir data
|
||
|
||
# Создание файла с префиксами
|
||
@"
|
||
# Основные префиксы
|
||
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
|
||
"@ | Out-File -FilePath "data/prefixes.txt" -Encoding UTF8
|
||
|
||
# Проверка создания файла
|
||
Get-Content data/prefixes.txt
|
||
```
|
||
|
||
### 2. Запуск контейнера из registry
|
||
|
||
```powershell
|
||
# Запуск BGP сервера из registry
|
||
docker run -d `
|
||
--name bgp-server `
|
||
--restart unless-stopped `
|
||
-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.1.100 `
|
||
-e BGP_NEIGHBOR_IP=192.168.1.1 `
|
||
-e BGP_NEIGHBOR_AS=65001 `
|
||
git.shts.su/infra/bgp-server:latest
|
||
```
|
||
|
||
### 3. Проверка работы
|
||
|
||
```powershell
|
||
# Просмотр логов
|
||
docker logs -f bgp-server
|
||
|
||
# Проверка статуса контейнера
|
||
docker ps
|
||
|
||
# Проверка BGP сессии
|
||
docker exec bgp-server exabgpcli show neighbor
|
||
```
|
||
|
||
## Подробная настройка
|
||
|
||
### Структура файлов
|
||
|
||
```
|
||
your-project/
|
||
├── data/
|
||
│ ├── prefixes.txt # Основные префиксы
|
||
│ └── additional_prefixes.txt # Дополнительные префиксы
|
||
├── logs/ # Логи (создается автоматически)
|
||
└── DOCKER_RUN.md # Эта инструкция
|
||
```
|
||
|
||
### Формат файла с префиксами
|
||
|
||
**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:**
|
||
```
|
||
# Дополнительные префиксы
|
||
172.20.0.0/16
|
||
172.21.0.0/16
|
||
```
|
||
|
||
### Полная команда запуска с настройками
|
||
|
||
```powershell
|
||
docker run -d `
|
||
--name bgp-server `
|
||
--restart unless-stopped `
|
||
-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.1.100 `
|
||
-e BGP_NEIGHBOR_IP=192.168.1.1 `
|
||
-e BGP_NEIGHBOR_AS=65001 `
|
||
-e BGP_HOLD_TIME=90 `
|
||
-e BGP_KEEPALIVE=30 `
|
||
git.shts.su/infra/bgp-server:latest
|
||
```
|
||
|
||
### Переменные окружения
|
||
|
||
| Переменная | Описание | По умолчанию |
|
||
|------------|----------|--------------|
|
||
| `BGP_LOCAL_AS` | AS номер сервера | 65000 |
|
||
| `BGP_ROUTER_ID` | Router ID сервера | 192.168.1.100 |
|
||
| `BGP_NEIGHBOR_IP` | IP адрес BGP пира | 192.168.1.1 |
|
||
| `BGP_NEIGHBOR_AS` | AS номер пира | 65001 |
|
||
| `BGP_HOLD_TIME` | Hold time в секундах | 90 |
|
||
| `BGP_KEEPALIVE` | Keepalive в секундах | 30 |
|
||
|
||
## Управление контейнером
|
||
|
||
### Основные команды
|
||
|
||
```powershell
|
||
# Запуск контейнера
|
||
docker start bgp-server
|
||
|
||
# Остановка контейнера
|
||
docker stop bgp-server
|
||
|
||
# Перезапуск контейнера
|
||
docker restart bgp-server
|
||
|
||
# Удаление контейнера
|
||
docker rm -f bgp-server
|
||
|
||
# Просмотр логов
|
||
docker logs bgp-server
|
||
|
||
# Логи в реальном времени
|
||
docker logs -f bgp-server
|
||
```
|
||
|
||
### Обновление префиксов
|
||
|
||
```powershell
|
||
# 1. Отредактируйте файл prefixes.txt
|
||
notepad data/prefixes.txt
|
||
|
||
# 2. Перезапустите контейнер
|
||
docker restart bgp-server
|
||
|
||
# 3. Проверьте логи
|
||
docker logs bgp-server
|
||
```
|
||
|
||
### Проверка работы
|
||
|
||
```powershell
|
||
# Статус контейнера
|
||
docker ps
|
||
|
||
# Проверка BGP сессии
|
||
docker exec bgp-server exabgpcli show neighbor
|
||
|
||
# Проверка загруженных префиксов
|
||
docker exec bgp-server cat /app/logs/prefixes.log
|
||
|
||
# Проверка содержимого файлов
|
||
docker exec bgp-server cat /app/data/prefixes.txt
|
||
|
||
# Использование ресурсов
|
||
docker stats bgp-server
|
||
```
|
||
|
||
## Настройка RouterOS (клиент)
|
||
|
||
### Команды для RouterOS 7.14+
|
||
|
||
```routeros
|
||
# Создание BGP экземпляра
|
||
/routing bgp instance
|
||
add name=bgp-server as=65001 router-id=192.168.1.1
|
||
|
||
# Настройка BGP сети
|
||
/routing bgp network
|
||
add network=192.168.1.0/24
|
||
|
||
# Настройка BGP пира
|
||
/routing bgp peer
|
||
add name=bgp-server remote-address=192.168.1.100 remote-as=65000 instance=bgp-server
|
||
|
||
# Включение BGP
|
||
/routing bgp instance set bgp-server disabled=no
|
||
|
||
# Проверка статуса
|
||
/routing bgp peer print
|
||
/routing bgp route print
|
||
```
|
||
|
||
## Устранение неполадок
|
||
|
||
### Проблема: Контейнер не запускается
|
||
|
||
```powershell
|
||
# Проверьте логи
|
||
docker logs bgp-server
|
||
|
||
# Проверьте, не занят ли порт 179
|
||
netstat -an | findstr :179
|
||
|
||
# Проверьте права доступа к папкам
|
||
ls -la data/
|
||
ls -la logs/
|
||
```
|
||
|
||
### Проблема: BGP сессия не устанавливается
|
||
|
||
```powershell
|
||
# Проверьте сетевое подключение
|
||
docker exec bgp-server ping 192.168.1.1
|
||
|
||
# Проверьте конфигурацию
|
||
docker exec bgp-server cat /app/exabgp.conf
|
||
|
||
# Проверьте логи BGP
|
||
docker logs bgp-server | findstr "BGP"
|
||
```
|
||
|
||
### Проблема: Префиксы не анонсируются
|
||
|
||
```powershell
|
||
# Проверьте файлы с префиксами
|
||
docker exec bgp-server cat /app/data/prefixes.txt
|
||
|
||
# Проверьте логи процесса загрузки
|
||
docker exec bgp-server cat /app/logs/prefixes.log
|
||
|
||
# Проверьте статус процесса
|
||
docker exec bgp-server ps aux | findstr load_prefixes
|
||
```
|
||
|
||
### Проблема: Ошибки ExaBGP конфигурации
|
||
|
||
```powershell
|
||
# Проверьте конфигурацию ExaBGP
|
||
docker exec bgp-server cat /app/exabgp.conf
|
||
|
||
# Валидация конфигурации
|
||
docker exec bgp-server exabgp --validate /app/exabgp.conf
|
||
|
||
# Проверьте named pipes
|
||
docker exec bgp-server ls -la /app/run/
|
||
|
||
# Проверьте логи ExaBGP
|
||
docker exec bgp-server cat /app/logs/exabgp.log
|
||
```
|
||
|
||
### Проблема: Файл prefixes.txt не найден
|
||
|
||
```powershell
|
||
# Проверьте монтирование volume
|
||
docker exec bgp-server ls -la /app/data/
|
||
|
||
# Создайте файл вручную
|
||
docker exec bgp-server bash -c "echo '192.168.1.0/24' > /app/data/prefixes.txt"
|
||
|
||
# Перезапустите контейнер
|
||
docker restart bgp-server
|
||
```
|
||
|
||
## Примеры использования
|
||
|
||
### Пример 1: Простой запуск
|
||
|
||
```powershell
|
||
# Создание файла с префиксами
|
||
"192.168.1.0/24`n10.0.0.0/8" | Out-File -FilePath "data/prefixes.txt" -Encoding UTF8
|
||
|
||
# Запуск контейнера
|
||
docker run -d --name bgp-server -p 179:179 -v ${PWD}/data:/app/data:ro git.shts.su/infra/bgp-server:latest
|
||
```
|
||
|
||
### Пример 2: Запуск с кастомными настройками
|
||
|
||
```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=10.0.0.100 `
|
||
-e BGP_NEIGHBOR_IP=10.0.0.1 `
|
||
-e BGP_NEIGHBOR_AS=65001 `
|
||
git.shts.su/infra/bgp-server:latest
|
||
```
|
||
|
||
### Пример 3: Запуск с несколькими файлами префиксов
|
||
|
||
```powershell
|
||
# Создание нескольких файлов
|
||
"192.168.1.0/24`n192.168.2.0/24" | Out-File -FilePath "data/prefixes.txt" -Encoding UTF8
|
||
"10.0.0.0/8`n172.16.0.0/12" | Out-File -FilePath "data/additional_prefixes.txt" -Encoding UTF8
|
||
|
||
# Запуск контейнера
|
||
docker run -d --name bgp-server -p 179:179 -v ${PWD}/data:/app/data:ro git.shts.su/infra/bgp-server:latest
|
||
```
|
||
|
||
## Безопасность
|
||
|
||
### Рекомендации
|
||
|
||
1. **Ограничение доступа**: Настройте firewall для ограничения доступа к порту 179
|
||
2. **Аутентификация**: Используйте MD5 аутентификацию в BGP
|
||
3. **Логирование**: Включите детальное логирование для аудита
|
||
4. **Обновления**: Регулярно обновляйте Docker образы
|
||
|
||
### Настройка MD5 аутентификации
|
||
|
||
Добавьте переменную окружения:
|
||
```powershell
|
||
-e BGP_MD5_PASSWORD="your-secure-password"
|
||
```
|
||
|
||
В RouterOS:
|
||
```routeros
|
||
/routing bgp peer set bgp-server password="your-secure-password"
|
||
``` |