279 lines
7.6 KiB
Markdown
279 lines
7.6 KiB
Markdown
# Troubleshooting - Решение проблем
|
||
|
||
## Проблема: "Unit file bird6.service does not exist"
|
||
|
||
### Описание проблемы
|
||
В Ubuntu 24.04 сервис `bird6` не всегда устанавливается по умолчанию вместе с пакетом `bird2`.
|
||
|
||
### Решение 1: Установка BIRD6 отдельно
|
||
|
||
```bash
|
||
# Установка BIRD6
|
||
sudo apt install -y bird6
|
||
|
||
# Проверка установки
|
||
which bird6
|
||
systemctl list-unit-files | grep bird6
|
||
```
|
||
|
||
### Решение 2: Использование скрипта установки BIRD6
|
||
|
||
```bash
|
||
# Сделать скрипт исполняемым
|
||
chmod +x install_bird6.sh
|
||
|
||
# Запуск установки BIRD6
|
||
sudo ./install_bird6.sh
|
||
```
|
||
|
||
### Решение 3: Ручное создание сервиса BIRD6
|
||
|
||
Если BIRD6 не устанавливается, создайте сервис вручную:
|
||
|
||
```bash
|
||
# Создание systemd сервиса для BIRD6
|
||
sudo tee /etc/systemd/system/bird6.service > /dev/null << EOF
|
||
[Unit]
|
||
Description=BIRD Internet Routing Daemon (IPv6)
|
||
Documentation=man:bird(8)
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=notify
|
||
ExecStart=/usr/sbin/bird6 -c /etc/bird/bird6.conf -s /var/run/bird6.ctl
|
||
ExecReload=/bin/kill -HUP \$MAINPID
|
||
Restart=on-failure
|
||
RestartSec=5
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
EOF
|
||
|
||
# Перезагрузка systemd
|
||
sudo systemctl daemon-reload
|
||
|
||
# Включение и запуск сервиса
|
||
sudo systemctl enable bird6
|
||
sudo systemctl start bird6
|
||
|
||
# Проверка статуса
|
||
sudo systemctl status bird6
|
||
```
|
||
|
||
### Решение 4: Использование только IPv4
|
||
|
||
Если BIRD6 не нужен, можно использовать только IPv4:
|
||
|
||
```bash
|
||
# Проверка статуса BIRD IPv4
|
||
sudo systemctl status bird
|
||
|
||
# Проверка конфигурации
|
||
sudo birdc -p /etc/bird/bird.conf
|
||
|
||
# Запуск BIRD IPv4
|
||
sudo systemctl start bird
|
||
```
|
||
|
||
## Другие частые проблемы
|
||
|
||
### Проблема: "Permission denied" при запуске скриптов
|
||
|
||
```bash
|
||
# Установка прав на выполнение
|
||
chmod +x install.sh
|
||
chmod +x install_bird6.sh
|
||
chmod +x scripts/*.py
|
||
|
||
# Проверка прав
|
||
ls -la install.sh
|
||
ls -la scripts/
|
||
```
|
||
|
||
### Проблема: "Command not found: birdc"
|
||
|
||
```bash
|
||
# Проверка установки BIRD
|
||
which bird
|
||
which birdc
|
||
|
||
# Переустановка BIRD
|
||
sudo apt remove --purge bird2
|
||
sudo apt install -y bird2
|
||
|
||
# Проверка символических ссылок
|
||
ls -la /usr/sbin/bird*
|
||
```
|
||
|
||
### Проблема: "Configuration file not found"
|
||
|
||
```bash
|
||
# Проверка существования файлов конфигурации
|
||
ls -la /etc/bird/
|
||
|
||
# Копирование файлов конфигурации
|
||
sudo cp config/bird.conf /etc/bird/
|
||
sudo cp config/bird6.conf /etc/bird/
|
||
|
||
# Проверка прав доступа
|
||
sudo chown bird:bird /etc/bird/bird*.conf
|
||
sudo chmod 644 /etc/bird/bird*.conf
|
||
```
|
||
|
||
### Проблема: "Port 179 already in use"
|
||
|
||
```bash
|
||
# Проверка процессов на порту 179
|
||
sudo netstat -tlnp | grep :179
|
||
sudo lsof -i :179
|
||
|
||
# Остановка конфликтующих сервисов
|
||
sudo systemctl stop bird bird6
|
||
sudo pkill bird
|
||
|
||
# Перезапуск сервисов
|
||
sudo systemctl start bird
|
||
sudo systemctl start bird6
|
||
```
|
||
|
||
### Проблема: "Firewall blocking BGP"
|
||
|
||
```bash
|
||
# Проверка статуса firewall
|
||
sudo ufw status
|
||
|
||
# Разрешение BGP порта
|
||
sudo ufw allow 179/tcp
|
||
|
||
# Проверка правил iptables
|
||
sudo iptables -L | grep 179
|
||
```
|
||
|
||
### Проблема: "Python script errors"
|
||
|
||
```bash
|
||
# Проверка версии Python
|
||
python3 --version
|
||
|
||
# Установка зависимостей
|
||
sudo apt install -y python3-pip
|
||
|
||
# Проверка скриптов
|
||
python3 -m py_compile scripts/load_prefixes.py
|
||
python3 -m py_compile scripts/monitor.py
|
||
```
|
||
|
||
## Проверка работоспособности
|
||
|
||
### Полная диагностика
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
# Скрипт диагностики BGP сервера
|
||
|
||
echo "=== Диагностика BGP сервера ==="
|
||
|
||
echo "1. Проверка установки BIRD:"
|
||
which bird && echo "✓ BIRD найден" || echo "✗ BIRD не найден"
|
||
which birdc && echo "✓ BIRDc найден" || echo "✗ BIRDc не найден"
|
||
|
||
echo "2. Проверка сервисов:"
|
||
systemctl is-active bird && echo "✓ BIRD IPv4 активен" || echo "✗ BIRD IPv4 неактивен"
|
||
systemctl is-active bird6 2>/dev/null && echo "✓ BIRD IPv6 активен" || echo "✗ BIRD IPv6 неактивен"
|
||
|
||
echo "3. Проверка портов:"
|
||
netstat -tlnp | grep :179 && echo "✓ Порт 179 прослушивается" || echo "✗ Порт 179 не прослушивается"
|
||
|
||
echo "4. Проверка конфигурации:"
|
||
birdc -p /etc/bird/bird.conf 2>/dev/null && echo "✓ Конфигурация IPv4 корректна" || echo "✗ Ошибка в конфигурации IPv4"
|
||
bird6c -p /etc/bird/bird6.conf 2>/dev/null && echo "✓ Конфигурация IPv6 корректна" || echo "✗ Ошибка в конфигурации IPv6"
|
||
|
||
echo "5. Проверка файлов:"
|
||
ls -la /etc/bird/ && echo "✓ Файлы конфигурации найдены" || echo "✗ Файлы конфигурации не найдены"
|
||
|
||
echo "6. Проверка логов:"
|
||
tail -5 /var/log/bird/bird.log 2>/dev/null || echo "Логи BIRD не найдены"
|
||
```
|
||
|
||
### Сохранение скрипта диагностики
|
||
|
||
```bash
|
||
# Создание скрипта диагностики
|
||
nano diagnose_bgp.sh
|
||
# Вставьте код выше
|
||
|
||
# Сделать исполняемым
|
||
chmod +x diagnose_bgp.sh
|
||
|
||
# Запуск диагностики
|
||
./diagnose_bgp.sh
|
||
```
|
||
|
||
## Восстановление после сбоя
|
||
|
||
### Полное переустановка
|
||
|
||
```bash
|
||
# Остановка сервисов
|
||
sudo systemctl stop bird bird6
|
||
|
||
# Удаление конфигурации
|
||
sudo rm -rf /etc/bird/bird*.conf
|
||
sudo rm -rf /opt/bgp-server
|
||
|
||
# Переустановка BIRD
|
||
sudo apt remove --purge bird2 bird6
|
||
sudo apt install -y bird2
|
||
|
||
# Повторная установка
|
||
sudo ./install.sh
|
||
```
|
||
|
||
### Восстановление из резервной копии
|
||
|
||
```bash
|
||
# Восстановление конфигурации
|
||
sudo cp /etc/bird/bird.conf.backup.* /etc/bird/bird.conf
|
||
sudo cp /etc/bird/bird6.conf.backup.* /etc/bird/bird6.conf
|
||
|
||
# Перезапуск сервисов
|
||
sudo systemctl restart bird bird6
|
||
```
|
||
|
||
## Получение помощи
|
||
|
||
### Логи для диагностики
|
||
|
||
```bash
|
||
# Сбор логов для анализа
|
||
sudo journalctl -u bird --no-pager > bird_logs.txt
|
||
sudo journalctl -u bird6 --no-pager > bird6_logs.txt
|
||
sudo systemctl status bird bird6 > service_status.txt
|
||
sudo netstat -tlnp > network_status.txt
|
||
|
||
# Создание архива с логами
|
||
tar -czf bgp_diagnostics_$(date +%Y%m%d_%H%M%S).tar.gz *.txt
|
||
```
|
||
|
||
### Полезные команды
|
||
|
||
```bash
|
||
# Проверка версии BIRD
|
||
bird --version
|
||
|
||
# Проверка синтаксиса конфигурации
|
||
birdc -p /etc/bird/bird.conf
|
||
|
||
# Просмотр протоколов
|
||
birdc show protocols
|
||
|
||
# Просмотр маршрутов
|
||
birdc show routes
|
||
|
||
# Просмотр логов в реальном времени
|
||
journalctl -u bird -f
|
||
```
|
||
|
||
---
|
||
|
||
**Примечание**: Если проблема не решается, соберите логи и обратитесь к документации BIRD: https://bird.network.cz/ |