diff --git a/DOCKER_RUN.md b/DOCKER_RUN.md new file mode 100644 index 0000000..7c6c347 --- /dev/null +++ b/DOCKER_RUN.md @@ -0,0 +1,304 @@ +# Инструкция по запуску 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 +``` + +### 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 +``` + +## Примеры использования + +### Пример 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" +``` \ No newline at end of file