Update Dockerfile to include procps package and enhance start.sh with additional ExaBGP process checks. The script now verifies the ExaBGP process status after startup and checks for the prefix loader process, improving monitoring and troubleshooting capabilities.
Build and Push Docker Image / build (push) Successful in 3m46s
Build and Push Docker Image / build (push) Successful in 3m46s
This commit is contained in:
+198
@@ -247,8 +247,68 @@ docker stats bgp-server
|
||||
|
||||
## Настройка RouterOS (клиент)
|
||||
|
||||
### Определение версии RouterOS
|
||||
|
||||
Сначала определите, какой синтаксис поддерживает ваша версия RouterOS:
|
||||
|
||||
```routeros
|
||||
# Проверка версии RouterOS
|
||||
/system resource print
|
||||
|
||||
# Проверка доступных команд BGP
|
||||
/routing/bgp/print
|
||||
/routing bgp print
|
||||
```
|
||||
|
||||
**Если команда `/routing/bgp/print` работает** - используйте новый синтаксис (RouterOS 7.14+)
|
||||
**Если команда `/routing bgp print` работает** - используйте старый синтаксис
|
||||
|
||||
### Адаптация конфигурации под ваши настройки
|
||||
|
||||
Замените следующие параметры в командах на ваши значения:
|
||||
|
||||
| Параметр | Описание | Ваше значение |
|
||||
|----------|----------|---------------|
|
||||
| `as=65001` | Ваш AS номер | Ваш AS номер |
|
||||
| `router-id=192.168.1.1` | Ваш Router ID | Ваш внешний IP или внутренний IP |
|
||||
| `local.address=192.168.1.1` | Ваш локальный IP | IP адрес вашего роутера |
|
||||
| `remote.address=192.168.1.100` | IP BGP сервера | IP адрес Docker контейнера |
|
||||
| `remote.as=65000` | AS BGP сервера | AS номер BGP сервера (по умолчанию 65000) |
|
||||
|
||||
### Команды для 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
|
||||
|
||||
# Проверка доступных команд (для диагностики)
|
||||
/routing/bgp/print
|
||||
/routing/bgp/instance/print
|
||||
/routing/bgp/peer/print
|
||||
```
|
||||
|
||||
**Если новый синтаксис не работает, используйте старый синтаксис:**
|
||||
|
||||
### Альтернативный способ (если первый не работает)
|
||||
|
||||
```routeros
|
||||
# Создание BGP экземпляра
|
||||
/routing bgp instance
|
||||
@@ -270,6 +330,93 @@ add name=bgp-server remote-address=192.168.1.100 remote-as=65000 instance=bgp-se
|
||||
/routing bgp route print
|
||||
```
|
||||
|
||||
### Старый синтаксис RouterOS (для версий до 7.14)
|
||||
|
||||
**Вариант 1: Использование template и connection (рекомендуется)**
|
||||
|
||||
```routeros
|
||||
# Создать шаблон BGP с вашим AS и router-id
|
||||
/routing bgp template
|
||||
add as=65001 disabled=no name=bgp-server output.network=bgp-networks .no-client-to-client-reflection=yes router-id=192.168.1.1 routing-table=main
|
||||
|
||||
# Фильтр на запрет экспорта маршрутов (подстраховка)
|
||||
/routing filter rule
|
||||
add chain=discard disabled=no rule="reject;"
|
||||
|
||||
# Фильтр на импорт маршрутов с изменением next-hop
|
||||
/routing filter rule
|
||||
add chain=bgp-server-in disabled=no rule="set gw 192.168.1.100; accept;"
|
||||
|
||||
# Настройка BGP пира
|
||||
/routing bgp connection
|
||||
add connect=yes disabled=no input.filter=bgp-server-in listen=yes local.address=192.168.1.1 .role=ebgp multihop=yes name=bgp-server.network output.filter-chain=discard remote.address=192.168.1.100/32 .as=65000 .port=179 routing-table=main templates=bgp-server
|
||||
|
||||
# Проверка статуса
|
||||
/routing bgp connection print
|
||||
/routing bgp route print
|
||||
|
||||
### Объяснение параметров конфигурации
|
||||
|
||||
**BGP Template:**
|
||||
- `as=65001` - ваш AS номер
|
||||
- `router-id=192.168.1.1` - ваш Router ID (обычно внешний IP)
|
||||
- `output.network=bgp-networks` - сеть для экспорта (создается автоматически)
|
||||
- `.no-client-to-client-reflection=yes` - отключение отражения между клиентами
|
||||
|
||||
**Routing Filter Rules:**
|
||||
- `chain=discard` - цепочка для отклонения экспортируемых маршрутов
|
||||
- `chain=bgp-server-in` - цепочка для обработки входящих маршрутов
|
||||
- `set gw 192.168.1.100` - установка next-hop на IP BGP сервера
|
||||
|
||||
**BGP Connection:**
|
||||
- `connect=yes` - активное подключение
|
||||
- `listen=yes` - ожидание входящих подключений
|
||||
- `local.address=192.168.1.1` - ваш локальный IP
|
||||
- `remote.address=192.168.1.100/32` - IP BGP сервера
|
||||
- `remote.as=65000` - AS номер BGP сервера
|
||||
- `templates=bgp-server` - использование созданного шаблона
|
||||
|
||||
### Команды для удаления конфигурации
|
||||
|
||||
Если нужно удалить конфигурацию и начать заново:
|
||||
|
||||
```routeros
|
||||
# Удаление BGP connection
|
||||
/routing bgp connection remove bgp-server.network
|
||||
|
||||
# Удаление фильтров
|
||||
/routing filter rule remove [find chain=bgp-server-in]
|
||||
/routing filter rule remove [find chain=discard]
|
||||
|
||||
# Удаление BGP template
|
||||
/routing bgp template remove bgp-server
|
||||
|
||||
# Проверка удаления
|
||||
/routing bgp connection print
|
||||
/routing filter rule print
|
||||
/routing bgp template print
|
||||
```
|
||||
|
||||
**Вариант 2: Использование instance и peer**
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Устранение неполадок
|
||||
|
||||
### Проблема: Контейнер не запускается
|
||||
@@ -345,6 +492,53 @@ docker exec bgp-server bash -c "echo '192.168.1.0/24' > /app/data/prefixes.txt"
|
||||
docker restart bgp-server
|
||||
```
|
||||
|
||||
### Проблема: BGP сессия не устанавливается в RouterOS
|
||||
|
||||
```routeros
|
||||
# Проверьте доступные команды BGP
|
||||
/routing/bgp/print
|
||||
|
||||
# Проверьте экземпляры BGP
|
||||
/routing/bgp/instance/print
|
||||
|
||||
# Проверьте пиры
|
||||
/routing/bgp/peer/print
|
||||
|
||||
# Проверьте маршруты
|
||||
/routing/bgp/route/print
|
||||
|
||||
# Проверьте логи BGP
|
||||
/log print where topics~"bgp"
|
||||
```
|
||||
|
||||
### Проблема: Неправильный синтаксис команд RouterOS
|
||||
|
||||
Если команды `/routing/bgp/` не работают, попробуйте старый синтаксис:
|
||||
|
||||
```routeros
|
||||
# Старый синтаксис RouterOS
|
||||
/routing bgp instance add name=bgp-server as=65001 router-id=192.168.1.1
|
||||
/routing bgp peer add name=bgp-server remote-address=192.168.1.100 remote-as=65000 instance=bgp-server
|
||||
/routing bgp instance set bgp-server disabled=no
|
||||
```
|
||||
|
||||
### Диагностика версии RouterOS
|
||||
|
||||
```routeros
|
||||
# Проверка версии RouterOS
|
||||
/system resource print
|
||||
|
||||
# Проверка доступных команд BGP
|
||||
/routing/bgp/print
|
||||
/routing bgp print
|
||||
|
||||
# Проверка доступных подкоманд
|
||||
/routing/bgp/instance/print
|
||||
/routing bgp instance print
|
||||
|
||||
# Если команды не найдены, используйте старый синтаксис
|
||||
```
|
||||
|
||||
## Примеры использования
|
||||
|
||||
### Пример 1: Простой запуск
|
||||
@@ -401,5 +595,9 @@ docker run -d --name bgp-server -p 179:179 -v ${PWD}/data:/app/data:ro git.shts.
|
||||
|
||||
В RouterOS:
|
||||
```routeros
|
||||
# Для RouterOS 7.14+ (новый синтаксис)
|
||||
/routing/bgp/peer set bgp-server password="your-secure-password"
|
||||
|
||||
# Для старых версий RouterOS
|
||||
/routing bgp peer set bgp-server password="your-secure-password"
|
||||
```
|
||||
+61
-2
@@ -79,10 +79,69 @@ fi
|
||||
echo "Starting ExaBGP..."
|
||||
LOG_LEVEL=${BGP_LOG_LEVEL:-INFO}
|
||||
|
||||
# Запуск с подробным логированием
|
||||
exabgp --log.level $LOG_LEVEL /app/exabgp.conf > /app/logs/exabgp.log 2>&1 &
|
||||
# Дополнительная проверка конфигурационного файла
|
||||
echo "Final config file check:"
|
||||
ls -la /app/exabgp.conf
|
||||
echo "Config file first few lines:"
|
||||
head -10 /app/exabgp.conf
|
||||
echo "---"
|
||||
|
||||
# Проверка что ExaBGP может прочитать файл
|
||||
echo "Testing ExaBGP config validation:"
|
||||
if exabgp --validate /app/exabgp.conf; then
|
||||
echo "Configuration validation passed"
|
||||
else
|
||||
echo "Configuration validation failed"
|
||||
echo "Full config content:"
|
||||
cat /app/exabgp.conf
|
||||
exit 1
|
||||
fi
|
||||
echo "---"
|
||||
|
||||
# Проверка переменных окружения и путей
|
||||
echo "Environment check:"
|
||||
echo "PWD: $PWD"
|
||||
echo "PATH: $PATH"
|
||||
echo "PYTHONPATH: $PYTHONPATH"
|
||||
echo "BGP_ variables:"
|
||||
env | grep BGP_ || echo "No BGP_ variables found"
|
||||
echo "---"
|
||||
|
||||
# Запуск ExaBGP
|
||||
echo "Starting ExaBGP with config: /app/exabgp.conf"
|
||||
|
||||
# Проверяем что файл существует и читается
|
||||
if [ ! -f "/app/exabgp.conf" ]; then
|
||||
echo "ERROR: Configuration file /app/exabgp.conf not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -r "/app/exabgp.conf" ]; then
|
||||
echo "ERROR: Configuration file /app/exabgp.conf is not readable!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Запуск ExaBGP с правильными параметрами
|
||||
cd /app
|
||||
if [ -n "$LOG_LEVEL" ]; then
|
||||
exabgp --log.level $LOG_LEVEL /app/exabgp.conf > /app/logs/exabgp.log 2>&1 &
|
||||
else
|
||||
exabgp /app/exabgp.conf > /app/logs/exabgp.log 2>&1 &
|
||||
fi
|
||||
EXABGP_PID=$!
|
||||
|
||||
# Проверяем что процесс запустился
|
||||
sleep 3
|
||||
if ! kill -0 $EXABGP_PID 2>/dev/null; then
|
||||
echo "Failed to start ExaBGP. Checking logs:"
|
||||
cat /app/logs/exabgp.log
|
||||
echo "Trying to run ExaBGP directly for diagnosis:"
|
||||
exabgp --version
|
||||
echo "---"
|
||||
exabgp /app/exabgp.conf
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Сохранение PID
|
||||
echo $EXABGP_PID > /app/logs/exabgp.pid
|
||||
|
||||
|
||||
Reference in New Issue
Block a user