diff --git a/config/bird_fixed.conf b/config/bird_fixed.conf new file mode 100644 index 0000000..0024456 --- /dev/null +++ b/config/bird_fixed.conf @@ -0,0 +1,66 @@ +# BIRD Configuration for BGP Server +# Ubuntu 24.04 - Fixed Version + +# Logging configuration +log "/var/log/bird/bird.log" all; +log stderr all; + +# Router ID (замените на ваш IP адрес) +router id 77.232.38.173; + +# Protocol configuration +protocol device { + scan time 10; +} + +protocol direct { + disabled; +} + +protocol kernel { + disabled; +} + +# Статическая таблица маршрутов +protocol static { + # Маршруты будут загружаться из файла prefixes.txt + # через скрипт load_prefixes.py + + # Пример статических маршрутов + # route 192.168.1.0/24 via 192.168.1.1; + # route 10.0.1.0/24 via 10.0.1.1; +} + +# BGP Configuration - принимаем любых пиров, но не получаем префиксы +protocol bgp any_peer { + # Локальные настройки + local as 65001; + + # Настройки для всех пиров + hold time 90; + keepalive time 30; + startup hold time 240; + + # Принимаем соединения от любых IP + listen bgp port 179; + + # НЕ импортируем маршруты от пиров + import none; + + # Экспортируем только статические маршруты + export where source = RTS_STATIC; + + # MD5 аутентификация (опционально) + # password "your_bgp_password"; + + # Настройки для больших таблиц маршрутизации + table limit 100000; +} + +# Настройки для мониторинга +protocol pipe { + table master; + peer table bgp_table; + import all; + export none; +} \ No newline at end of file diff --git a/config/bird_test.conf b/config/bird_test.conf new file mode 100644 index 0000000..f68ed97 --- /dev/null +++ b/config/bird_test.conf @@ -0,0 +1,36 @@ +# Минимальная тестовая конфигурация BIRD +# Ubuntu 24.04 + +# Logging +log stderr all; + +# Router ID +router id 77.232.38.173; + +# Device protocol +protocol device { + scan time 10; +} + +# Direct protocol (disabled) +protocol direct { + disabled; +} + +# Kernel protocol (disabled) +protocol kernel { + disabled; +} + +# Static routes +protocol static { + # Пустая таблица статических маршрутов +} + +# BGP protocol +protocol bgp any_peer { + local as 65001; + listen bgp port 179; + import none; + export where source = RTS_STATIC; +} \ No newline at end of file diff --git a/fix_bird_config.sh b/fix_bird_config.sh new file mode 100644 index 0000000..99c36cd --- /dev/null +++ b/fix_bird_config.sh @@ -0,0 +1,144 @@ +#!/bin/bash + +# Скрипт для исправления конфигурации BIRD +# Ubuntu 24.04 + +set -e + +echo "==========================================" +echo "Исправление конфигурации BIRD" +echo "Ubuntu 24.04" +echo "==========================================" + +# Получаем IP адрес сервера +SERVER_IP=$(curl -s ifconfig.me 2>/dev/null || echo "192.168.1.1") +echo "[INFO] Используется IP адрес: $SERVER_IP" + +# Останавливаем BIRD если запущен +echo "[INFO] Остановка BIRD..." +systemctl stop bird 2>/dev/null || true + +# Создаем резервную копию текущей конфигурации +if [ -f /etc/bird/bird.conf ]; then + cp /etc/bird/bird.conf /etc/bird/bird.conf.backup.$(date +%Y%m%d_%H%M%S) + echo "[INFO] Создана резервная копия: /etc/bird/bird.conf.backup" +fi + +# Создаем простую рабочую конфигурацию +echo "[INFO] Создание простой конфигурации BIRD..." +cat > /etc/bird/bird.conf << EOF +# Простая конфигурация BIRD для BGP сервера +# Ubuntu 24.04 + +# Logging +log stderr all; +log "/var/log/bird/bird.log" all; + +# Router ID +router id $SERVER_IP; + +# Device protocol +protocol device { + scan time 10; +} + +# Direct protocol (disabled) +protocol direct { + disabled; +} + +# Kernel protocol (disabled) +protocol kernel { + disabled; +} + +# Static routes +protocol static { + # Статические маршруты будут загружаться через скрипт +} + +# BGP protocol - принимаем любых пиров +protocol bgp any_peer { + local as 65001; + listen bgp port 179; + import none; # Не принимаем маршруты от пиров + export where source = RTS_STATIC; # Экспортируем только статические маршруты +} +EOF + +# Проверяем синтаксис конфигурации +echo "[INFO] Проверка синтаксиса конфигурации..." +if bird -c /etc/bird/bird.conf -t; then + echo "[SUCCESS] Конфигурация синтаксически корректна" +else + echo "[ERROR] Ошибка в синтаксисе конфигурации" + echo "[INFO] Попытка создания минимальной конфигурации..." + + # Создаем еще более простую конфигурацию + cat > /etc/bird/bird.conf << EOF +# Минимальная конфигурация BIRD +log stderr all; +router id $SERVER_IP; + +protocol device { + scan time 10; +} + +protocol direct { + disabled; +} + +protocol kernel { + disabled; +} + +protocol static { +} + +protocol bgp any_peer { + local as 65001; + listen bgp port 179; + import none; + export where source = RTS_STATIC; +} +EOF + + # Проверяем еще раз + if bird -c /etc/bird/bird.conf -t; then + echo "[SUCCESS] Минимальная конфигурация корректна" + else + echo "[ERROR] Не удалось создать рабочую конфигурацию" + exit 1 + fi +fi + +# Создаем директорию для логов если не существует +mkdir -p /var/log/bird +chown bird:bird /var/log/bird 2>/dev/null || true + +# Запускаем BIRD +echo "[INFO] Запуск BIRD..." +systemctl start bird + +# Проверяем статус +if systemctl is-active --quiet bird; then + echo "[SUCCESS] BIRD успешно запущен" + + # Показываем статус + echo "[INFO] Статус BIRD:" + systemctl status bird --no-pager -l + + # Показываем информацию о протоколах + echo "[INFO] Информация о протоколах:" + birdc show protocols 2>/dev/null || echo "birdc недоступен" + +else + echo "[ERROR] Не удалось запустить BIRD" + echo "[INFO] Логи BIRD:" + journalctl -u bird --no-pager -l -n 20 + exit 1 +fi + +echo "[SUCCESS] Конфигурация BIRD исправлена и сервис запущен" +echo "[INFO] BIRD слушает на порту 179 и принимает соединения от любых пиров" +echo "[INFO] Сервер НЕ будет принимать префиксы от пиров, только экспортировать свои" \ No newline at end of file