update
This commit is contained in:
+224
@@ -0,0 +1,224 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Скрипт для исправления конфигурации BIRD
|
||||
# Ubuntu 24.04
|
||||
|
||||
set -e
|
||||
|
||||
# Цвета для вывода
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Функции для вывода
|
||||
print_info() {
|
||||
echo -e "${BLUE}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Проверка на root права
|
||||
check_root() {
|
||||
if [[ $EUID -ne 0 ]]; then
|
||||
print_error "Этот скрипт должен быть запущен с правами root"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Получение IP адреса сервера
|
||||
get_server_ip() {
|
||||
# Попытка получить основной IP адрес
|
||||
local ip=$(ip route get 8.8.8.8 | awk '{print $7; exit}' 2>/dev/null)
|
||||
|
||||
if [[ -z "$ip" ]]; then
|
||||
# Альтернативный способ
|
||||
ip=$(hostname -I | awk '{print $1}' 2>/dev/null)
|
||||
fi
|
||||
|
||||
if [[ -z "$ip" ]]; then
|
||||
print_warning "Не удалось определить IP адрес, используем 192.168.1.1"
|
||||
ip="192.168.1.1"
|
||||
fi
|
||||
|
||||
echo "$ip"
|
||||
}
|
||||
|
||||
# Создание простой конфигурации BIRD
|
||||
create_simple_config() {
|
||||
local server_ip=$(get_server_ip)
|
||||
|
||||
print_info "Создание простой конфигурации BIRD с IP: $server_ip"
|
||||
|
||||
# Создание простой конфигурации
|
||||
cat > /etc/bird/bird.conf << EOF
|
||||
# Простая конфигурация BIRD для BGP сервера
|
||||
# Ubuntu 24.04
|
||||
|
||||
# Logging configuration
|
||||
log "/var/log/bird/bird.log" all;
|
||||
log stderr all;
|
||||
|
||||
# Router ID
|
||||
router id $server_ip;
|
||||
|
||||
# Protocol configuration
|
||||
protocol device {
|
||||
scan time 10;
|
||||
}
|
||||
|
||||
protocol direct {
|
||||
disabled;
|
||||
}
|
||||
|
||||
protocol kernel {
|
||||
disabled;
|
||||
}
|
||||
|
||||
# Статическая таблица маршрутов
|
||||
protocol static {
|
||||
# Маршруты будут загружаться из файла prefixes.txt
|
||||
# через скрипт load_prefixes.py
|
||||
}
|
||||
|
||||
# BGP Configuration
|
||||
protocol bgp {
|
||||
# Локальные настройки
|
||||
local as 65001;
|
||||
|
||||
# Принимаем соединения от любых IP
|
||||
listen bgp port 179;
|
||||
|
||||
# Настройки для пиров
|
||||
import none; # Не импортируем маршруты от пиров
|
||||
export all; # Экспортируем все маршруты пирам
|
||||
}
|
||||
EOF
|
||||
|
||||
print_success "Простая конфигурация создана"
|
||||
}
|
||||
|
||||
# Проверка конфигурации
|
||||
check_config() {
|
||||
print_info "Проверка конфигурации BIRD..."
|
||||
|
||||
if bird -p /etc/bird/bird.conf; then
|
||||
print_success "Конфигурация BIRD корректна"
|
||||
return 0
|
||||
else
|
||||
print_error "Ошибка в конфигурации BIRD"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Перезапуск сервисов
|
||||
restart_services() {
|
||||
print_info "Перезапуск сервисов BIRD..."
|
||||
|
||||
# Остановка сервисов
|
||||
systemctl stop bird 2>/dev/null || true
|
||||
systemctl stop bird6 2>/dev/null || true
|
||||
|
||||
# Запуск BIRD IPv4
|
||||
systemctl start bird
|
||||
|
||||
if systemctl is-active --quiet bird; then
|
||||
print_success "BIRD (IPv4) запущен"
|
||||
else
|
||||
print_error "Ошибка запуска BIRD (IPv4)"
|
||||
systemctl status bird
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Попытка запуска BIRD6 если существует
|
||||
if systemctl list-unit-files | grep -q bird6; then
|
||||
systemctl start bird6
|
||||
|
||||
if systemctl is-active --quiet bird6; then
|
||||
print_success "BIRD (IPv6) запущен"
|
||||
else
|
||||
print_warning "BIRD (IPv6) не запущен"
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# Проверка работоспособности
|
||||
test_functionality() {
|
||||
print_info "Проверка работоспособности..."
|
||||
|
||||
# Проверка статуса сервисов
|
||||
echo ""
|
||||
print_info "Статус сервисов:"
|
||||
systemctl status bird --no-pager -l
|
||||
|
||||
# Проверка портов
|
||||
echo ""
|
||||
print_info "Проверка портов:"
|
||||
if netstat -tlnp | grep :179; then
|
||||
print_success "Порт 179 прослушивается"
|
||||
else
|
||||
print_warning "Порт 179 не прослушивается"
|
||||
fi
|
||||
|
||||
# Проверка протоколов
|
||||
echo ""
|
||||
print_info "Проверка протоколов:"
|
||||
if birdc show protocols 2>/dev/null; then
|
||||
print_success "BIRD отвечает на команды"
|
||||
else
|
||||
print_warning "BIRD не отвечает на команды"
|
||||
fi
|
||||
}
|
||||
|
||||
# Основная функция
|
||||
main() {
|
||||
echo "=========================================="
|
||||
echo "BIRD Configuration Fix Script"
|
||||
echo "Ubuntu 24.04"
|
||||
echo "=========================================="
|
||||
|
||||
check_root
|
||||
|
||||
# Создание простой конфигурации
|
||||
create_simple_config
|
||||
|
||||
# Проверка конфигурации
|
||||
if check_config; then
|
||||
# Перезапуск сервисов
|
||||
if restart_services; then
|
||||
# Проверка работоспособности
|
||||
test_functionality
|
||||
|
||||
print_success "Конфигурация исправлена успешно!"
|
||||
|
||||
echo ""
|
||||
echo "Полезные команды:"
|
||||
echo " sudo birdc show protocols"
|
||||
echo " sudo birdc show routes"
|
||||
echo " sudo systemctl status bird"
|
||||
echo " sudo journalctl -u bird -f"
|
||||
else
|
||||
print_error "Ошибка перезапуска сервисов"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
print_error "Ошибка в конфигурации"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Запуск основной функции
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user