7.6 KiB
7.6 KiB
Troubleshooting - Решение проблем
Проблема: "Unit file bird6.service does not exist"
Описание проблемы
В Ubuntu 24.04 сервис bird6 не всегда устанавливается по умолчанию вместе с пакетом bird2.
Решение 1: Установка BIRD6 отдельно
# Установка BIRD6
sudo apt install -y bird6
# Проверка установки
which bird6
systemctl list-unit-files | grep bird6
Решение 2: Использование скрипта установки BIRD6
# Сделать скрипт исполняемым
chmod +x install_bird6.sh
# Запуск установки BIRD6
sudo ./install_bird6.sh
Решение 3: Ручное создание сервиса BIRD6
Если BIRD6 не устанавливается, создайте сервис вручную:
# Создание 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:
# Проверка статуса BIRD IPv4
sudo systemctl status bird
# Проверка конфигурации
sudo birdc -p /etc/bird/bird.conf
# Запуск BIRD IPv4
sudo systemctl start bird
Другие частые проблемы
Проблема: "Permission denied" при запуске скриптов
# Установка прав на выполнение
chmod +x install.sh
chmod +x install_bird6.sh
chmod +x scripts/*.py
# Проверка прав
ls -la install.sh
ls -la scripts/
Проблема: "Command not found: birdc"
# Проверка установки 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"
# Проверка существования файлов конфигурации
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"
# Проверка процессов на порту 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"
# Проверка статуса firewall
sudo ufw status
# Разрешение BGP порта
sudo ufw allow 179/tcp
# Проверка правил iptables
sudo iptables -L | grep 179
Проблема: "Python script errors"
# Проверка версии Python
python3 --version
# Установка зависимостей
sudo apt install -y python3-pip
# Проверка скриптов
python3 -m py_compile scripts/load_prefixes.py
python3 -m py_compile scripts/monitor.py
Проверка работоспособности
Полная диагностика
#!/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 не найдены"
Сохранение скрипта диагностики
# Создание скрипта диагностики
nano diagnose_bgp.sh
# Вставьте код выше
# Сделать исполняемым
chmod +x diagnose_bgp.sh
# Запуск диагностики
./diagnose_bgp.sh
Восстановление после сбоя
Полное переустановка
# Остановка сервисов
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
Восстановление из резервной копии
# Восстановление конфигурации
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
Получение помощи
Логи для диагностики
# Сбор логов для анализа
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
Полезные команды
# Проверка версии BIRD
bird --version
# Проверка синтаксиса конфигурации
birdc -p /etc/bird/bird.conf
# Просмотр протоколов
birdc show protocols
# Просмотр маршрутов
birdc show routes
# Просмотр логов в реальном времени
journalctl -u bird -f
Примечание: Если проблема не решается, соберите логи и обратитесь к документации BIRD: https://bird.network.cz/