This commit is contained in:
2025-07-11 19:32:02 +07:00
parent 825255c64a
commit 935c1ffec3
3 changed files with 246 additions and 0 deletions
+66
View File
@@ -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;
}
+36
View File
@@ -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;
}
+144
View File
@@ -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] Сервер НЕ будет принимать префиксы от пиров, только экспортировать свои"