#!/bin/bash # Скрипт для установки BIRD6 на Ubuntu 24.04 # BIRD6 не всегда устанавливается по умолчанию 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 } # Установка BIRD6 install_bird6() { print_info "Проверка установки BIRD6..." # Проверка существования bird6 if command -v bird6 &> /dev/null; then print_success "BIRD6 уже установлен" return 0 fi print_info "Установка BIRD6..." # Попытка установки bird6 if apt install -y bird6; then print_success "BIRD6 установлен успешно" else print_warning "BIRD6 не найден в репозиториях, попробуем альтернативные способы" # Попытка установки из пакета bird2 if apt install -y bird2; then print_info "BIRD2 установлен, проверяем наличие bird6" # Проверка символических ссылок if [[ -f /usr/sbin/bird6 ]]; then print_success "BIRD6 найден в BIRD2 пакете" else print_warning "BIRD6 не найден в BIRD2 пакете" return 1 fi else print_error "Не удалось установить BIRD6" return 1 fi fi return 0 } # Настройка BIRD6 сервиса configure_bird6_service() { print_info "Настройка BIRD6 сервиса..." # Проверка существования сервиса if systemctl list-unit-files | grep -q bird6; then print_success "BIRD6 сервис найден" # Включение автозапуска systemctl enable bird6 # Запуск сервиса systemctl start bird6 # Проверка статуса if systemctl is-active --quiet bird6; then print_success "BIRD6 сервис запущен" else print_error "Ошибка запуска BIRD6 сервиса" systemctl status bird6 return 1 fi else print_warning "BIRD6 сервис не найден, создаем вручную" # Создание systemd сервиса для BIRD6 cat > /etc/systemd/system/bird6.service << 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 systemctl daemon-reload # Включение и запуск сервиса systemctl enable bird6 systemctl start bird6 # Проверка статуса if systemctl is-active --quiet bird6; then print_success "BIRD6 сервис создан и запущен" else print_error "Ошибка запуска созданного BIRD6 сервиса" systemctl status bird6 return 1 fi fi return 0 } # Проверка конфигурации BIRD6 check_bird6_config() { print_info "Проверка конфигурации BIRD6..." if [[ -f /etc/bird/bird6.conf ]]; then # Проверка синтаксиса if bird6 -p /etc/bird/bird6.conf; then print_success "Конфигурация BIRD6 корректна" else print_error "Ошибка в конфигурации BIRD6" return 1 fi else print_warning "Файл конфигурации BIRD6 не найден" return 1 fi return 0 } # Основная функция main() { echo "==========================================" echo "BIRD6 Installation Script" echo "Ubuntu 24.04" echo "==========================================" check_root # Установка BIRD6 if install_bird6; then # Настройка сервиса if configure_bird6_service; then # Проверка конфигурации if check_bird6_config; then print_success "BIRD6 успешно установлен и настроен" echo "" echo "Полезные команды:" echo " sudo systemctl status bird6" echo " sudo bird6c show protocols" echo " sudo bird6c show routes" echo " sudo journalctl -u bird6 -f" else print_warning "BIRD6 установлен, но есть проблемы с конфигурацией" fi else print_error "Ошибка настройки BIRD6 сервиса" exit 1 fi else print_error "Ошибка установки BIRD6" exit 1 fi } # Запуск основной функции main "$@"