update
This commit is contained in:
@@ -0,0 +1,293 @@
|
|||||||
|
# Развертывание BGP сервера на Ubuntu 24.04
|
||||||
|
|
||||||
|
## Клонирование репозитория
|
||||||
|
|
||||||
|
### 1. Клонирование с веткой bird
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Клонирование репозитория с веткой bird
|
||||||
|
git clone -b bird <repository-url> bgp-server
|
||||||
|
|
||||||
|
# Переход в директорию проекта
|
||||||
|
cd bgp-server
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Альтернативные способы клонирования
|
||||||
|
|
||||||
|
#### Если ветка bird существует:
|
||||||
|
```bash
|
||||||
|
# Клонирование с указанием ветки
|
||||||
|
git clone -b bird https://github.com/username/bgp-server.git
|
||||||
|
|
||||||
|
# Или клонирование и переключение на ветку
|
||||||
|
git clone https://github.com/username/bgp-server.git
|
||||||
|
cd bgp-server
|
||||||
|
git checkout bird
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Если нужно создать ветку bird:
|
||||||
|
```bash
|
||||||
|
# Клонирование основного репозитория
|
||||||
|
git clone https://github.com/username/bgp-server.git
|
||||||
|
cd bgp-server
|
||||||
|
|
||||||
|
# Создание и переключение на ветку bird
|
||||||
|
git checkout -b bird
|
||||||
|
|
||||||
|
# Добавление всех файлов
|
||||||
|
git add .
|
||||||
|
|
||||||
|
# Коммит изменений
|
||||||
|
git commit -m "Initial BGP server implementation"
|
||||||
|
|
||||||
|
# Отправка ветки на сервер
|
||||||
|
git push origin bird
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Проверка клонирования
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка текущей ветки
|
||||||
|
git branch
|
||||||
|
|
||||||
|
# Проверка содержимого
|
||||||
|
ls -la
|
||||||
|
|
||||||
|
# Проверка статуса git
|
||||||
|
git status
|
||||||
|
```
|
||||||
|
|
||||||
|
## Установка на сервере
|
||||||
|
|
||||||
|
### 1. Подготовка системы
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Обновление системы
|
||||||
|
sudo apt update && sudo apt upgrade -y
|
||||||
|
|
||||||
|
# Установка необходимых пакетов
|
||||||
|
sudo apt install -y python3 python3-pip git curl wget
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Клонирование и установка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Клонирование репозитория (замените на ваш URL)
|
||||||
|
git clone -b bird https://github.com/username/bgp-server.git
|
||||||
|
cd bgp-server
|
||||||
|
|
||||||
|
# Проверка файлов
|
||||||
|
ls -la
|
||||||
|
|
||||||
|
# Сделать скрипт установки исполняемым
|
||||||
|
chmod +x install.sh
|
||||||
|
|
||||||
|
# Запуск установки
|
||||||
|
sudo ./install.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Настройка после установки
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Настройка IP адреса и ASN
|
||||||
|
sudo nano /etc/bird/bird.conf
|
||||||
|
# Измените:
|
||||||
|
# router id YOUR_SERVER_IP;
|
||||||
|
# local as YOUR_ASN;
|
||||||
|
|
||||||
|
# Настройка префиксов
|
||||||
|
sudo nano /opt/bgp-server/data/prefixes.txt
|
||||||
|
# Добавьте ваши префиксы
|
||||||
|
|
||||||
|
# Загрузка префиксов
|
||||||
|
python3 /opt/bgp-server/scripts/load_prefixes.py
|
||||||
|
|
||||||
|
# Проверка статуса
|
||||||
|
python3 /opt/bgp-server/scripts/monitor.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## Примеры команд для разных репозиториев
|
||||||
|
|
||||||
|
### GitHub
|
||||||
|
```bash
|
||||||
|
git clone -b bird https://github.com/username/bgp-server.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### GitLab
|
||||||
|
```bash
|
||||||
|
git clone -b bird https://gitlab.com/username/bgp-server.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bitbucket
|
||||||
|
```bash
|
||||||
|
git clone -b bird https://bitbucket.org/username/bgp-server.git
|
||||||
|
```
|
||||||
|
|
||||||
|
### SSH (если настроен ключ)
|
||||||
|
```bash
|
||||||
|
git clone -b bird [email protected]:username/bgp-server.git
|
||||||
|
```
|
||||||
|
|
||||||
|
## Автоматическое развертывание
|
||||||
|
|
||||||
|
### Скрипт автоматического развертывания
|
||||||
|
|
||||||
|
Создайте файл `deploy.sh`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Автоматическое развертывание BGP сервера
|
||||||
|
REPO_URL="https://github.com/username/bgp-server.git"
|
||||||
|
BRANCH="bird"
|
||||||
|
INSTALL_DIR="/opt/bgp-server-deploy"
|
||||||
|
|
||||||
|
echo "Начинаем развертывание BGP сервера..."
|
||||||
|
|
||||||
|
# Создание директории
|
||||||
|
sudo mkdir -p $INSTALL_DIR
|
||||||
|
cd $INSTALL_DIR
|
||||||
|
|
||||||
|
# Клонирование репозитория
|
||||||
|
echo "Клонирование репозитория..."
|
||||||
|
git clone -b $BRANCH $REPO_URL .
|
||||||
|
|
||||||
|
# Проверка успешности клонирования
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Репозиторий успешно клонирован"
|
||||||
|
|
||||||
|
# Запуск установки
|
||||||
|
chmod +x install.sh
|
||||||
|
sudo ./install.sh
|
||||||
|
else
|
||||||
|
echo "Ошибка при клонировании репозитория"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
### Использование скрипта развертывания
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Создание скрипта
|
||||||
|
nano deploy.sh
|
||||||
|
|
||||||
|
# Сделать исполняемым
|
||||||
|
chmod +x deploy.sh
|
||||||
|
|
||||||
|
# Запуск
|
||||||
|
./deploy.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Проверка установки
|
||||||
|
|
||||||
|
### 1. Проверка сервисов
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Статус BIRD сервисов
|
||||||
|
sudo systemctl status bird bird6
|
||||||
|
|
||||||
|
# Проверка портов
|
||||||
|
sudo netstat -tlnp | grep :179
|
||||||
|
|
||||||
|
# Проверка процессов
|
||||||
|
ps aux | grep bird
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Проверка конфигурации
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка синтаксиса конфигурации
|
||||||
|
sudo birdc -p /etc/bird/bird.conf
|
||||||
|
sudo bird6c -p /etc/bird/bird6.conf
|
||||||
|
|
||||||
|
# Проверка протоколов
|
||||||
|
sudo birdc show protocols
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Проверка префиксов
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Загрузка префиксов
|
||||||
|
python3 /opt/bgp-server/scripts/load_prefixes.py
|
||||||
|
|
||||||
|
# Проверка маршрутов
|
||||||
|
sudo birdc show routes
|
||||||
|
```
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Проблема: Не удается клонировать репозиторий
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка подключения к интернету
|
||||||
|
ping -c 3 github.com
|
||||||
|
|
||||||
|
# Проверка git
|
||||||
|
git --version
|
||||||
|
|
||||||
|
# Очистка кэша git
|
||||||
|
git config --global credential.helper cache
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проблема: Ветка bird не найдена
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Просмотр доступных веток
|
||||||
|
git branch -r
|
||||||
|
|
||||||
|
# Клонирование без указания ветки
|
||||||
|
git clone https://github.com/username/bgp-server.git
|
||||||
|
cd bgp-server
|
||||||
|
|
||||||
|
# Создание локальной ветки
|
||||||
|
git checkout -b bird origin/main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проблема: Нет прав доступа
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Настройка SSH ключей (если используете SSH)
|
||||||
|
ssh-keygen -t rsa -b 4096 -C "[email protected]"
|
||||||
|
cat ~/.ssh/id_rsa.pub
|
||||||
|
# Добавьте ключ в настройки GitHub/GitLab
|
||||||
|
|
||||||
|
# Или используйте HTTPS с токеном
|
||||||
|
git clone https://username:[email protected]/username/bgp-server.git
|
||||||
|
```
|
||||||
|
|
||||||
|
## Обновление репозитория
|
||||||
|
|
||||||
|
### Обновление кода
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Переход в директорию проекта
|
||||||
|
cd /path/to/bgp-server
|
||||||
|
|
||||||
|
# Получение обновлений
|
||||||
|
git fetch origin
|
||||||
|
|
||||||
|
# Переключение на ветку bird
|
||||||
|
git checkout bird
|
||||||
|
|
||||||
|
# Обновление кода
|
||||||
|
git pull origin bird
|
||||||
|
|
||||||
|
# Перезапуск сервисов (если нужно)
|
||||||
|
sudo systemctl restart bird bird6
|
||||||
|
```
|
||||||
|
|
||||||
|
### Автоматическое обновление
|
||||||
|
|
||||||
|
Создайте cron задачу для автоматического обновления:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Редактирование crontab
|
||||||
|
crontab -e
|
||||||
|
|
||||||
|
# Добавление задачи (обновление каждый день в 2:00)
|
||||||
|
0 2 * * * cd /opt/bgp-server && git pull origin bird && sudo systemctl restart bird bird6
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Готово!** Теперь у вас есть полные инструкции по клонированию и развертыванию BGP сервера. 🚀
|
||||||
@@ -0,0 +1,279 @@
|
|||||||
|
# Troubleshooting - Решение проблем
|
||||||
|
|
||||||
|
## Проблема: "Unit file bird6.service does not exist"
|
||||||
|
|
||||||
|
### Описание проблемы
|
||||||
|
В Ubuntu 24.04 сервис `bird6` не всегда устанавливается по умолчанию вместе с пакетом `bird2`.
|
||||||
|
|
||||||
|
### Решение 1: Установка BIRD6 отдельно
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Установка BIRD6
|
||||||
|
sudo apt install -y bird6
|
||||||
|
|
||||||
|
# Проверка установки
|
||||||
|
which bird6
|
||||||
|
systemctl list-unit-files | grep bird6
|
||||||
|
```
|
||||||
|
|
||||||
|
### Решение 2: Использование скрипта установки BIRD6
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Сделать скрипт исполняемым
|
||||||
|
chmod +x install_bird6.sh
|
||||||
|
|
||||||
|
# Запуск установки BIRD6
|
||||||
|
sudo ./install_bird6.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Решение 3: Ручное создание сервиса BIRD6
|
||||||
|
|
||||||
|
Если BIRD6 не устанавливается, создайте сервис вручную:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Создание 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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка статуса BIRD IPv4
|
||||||
|
sudo systemctl status bird
|
||||||
|
|
||||||
|
# Проверка конфигурации
|
||||||
|
sudo birdc -p /etc/bird/bird.conf
|
||||||
|
|
||||||
|
# Запуск BIRD IPv4
|
||||||
|
sudo systemctl start bird
|
||||||
|
```
|
||||||
|
|
||||||
|
## Другие частые проблемы
|
||||||
|
|
||||||
|
### Проблема: "Permission denied" при запуске скриптов
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Установка прав на выполнение
|
||||||
|
chmod +x install.sh
|
||||||
|
chmod +x install_bird6.sh
|
||||||
|
chmod +x scripts/*.py
|
||||||
|
|
||||||
|
# Проверка прав
|
||||||
|
ls -la install.sh
|
||||||
|
ls -la scripts/
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проблема: "Command not found: birdc"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка установки 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"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка существования файлов конфигурации
|
||||||
|
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"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка процессов на порту 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"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка статуса firewall
|
||||||
|
sudo ufw status
|
||||||
|
|
||||||
|
# Разрешение BGP порта
|
||||||
|
sudo ufw allow 179/tcp
|
||||||
|
|
||||||
|
# Проверка правил iptables
|
||||||
|
sudo iptables -L | grep 179
|
||||||
|
```
|
||||||
|
|
||||||
|
### Проблема: "Python script errors"
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка версии Python
|
||||||
|
python3 --version
|
||||||
|
|
||||||
|
# Установка зависимостей
|
||||||
|
sudo apt install -y python3-pip
|
||||||
|
|
||||||
|
# Проверка скриптов
|
||||||
|
python3 -m py_compile scripts/load_prefixes.py
|
||||||
|
python3 -m py_compile scripts/monitor.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## Проверка работоспособности
|
||||||
|
|
||||||
|
### Полная диагностика
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#!/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 не найдены"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Сохранение скрипта диагностики
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Создание скрипта диагностики
|
||||||
|
nano diagnose_bgp.sh
|
||||||
|
# Вставьте код выше
|
||||||
|
|
||||||
|
# Сделать исполняемым
|
||||||
|
chmod +x diagnose_bgp.sh
|
||||||
|
|
||||||
|
# Запуск диагностики
|
||||||
|
./diagnose_bgp.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## Восстановление после сбоя
|
||||||
|
|
||||||
|
### Полное переустановка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Остановка сервисов
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
### Восстановление из резервной копии
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Восстановление конфигурации
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
## Получение помощи
|
||||||
|
|
||||||
|
### Логи для диагностики
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Сбор логов для анализа
|
||||||
|
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
|
||||||
|
```
|
||||||
|
|
||||||
|
### Полезные команды
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Проверка версии BIRD
|
||||||
|
bird --version
|
||||||
|
|
||||||
|
# Проверка синтаксиса конфигурации
|
||||||
|
birdc -p /etc/bird/bird.conf
|
||||||
|
|
||||||
|
# Просмотр протоколов
|
||||||
|
birdc show protocols
|
||||||
|
|
||||||
|
# Просмотр маршрутов
|
||||||
|
birdc show routes
|
||||||
|
|
||||||
|
# Просмотр логов в реальном времени
|
||||||
|
journalctl -u bird -f
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Примечание**: Если проблема не решается, соберите логи и обратитесь к документации BIRD: https://bird.network.cz/
|
||||||
+14
-16
@@ -21,12 +21,25 @@ protocol kernel {
|
|||||||
disabled;
|
disabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Таблица для BGP маршрутов
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
# Статическая таблица маршрутов
|
||||||
|
protocol static {
|
||||||
|
# Маршруты будут загружаться из файла prefixes.txt
|
||||||
|
# через скрипт load_prefixes.py
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
# Пример статических маршрутов
|
||||||
|
# route 192.168.1.0/24 via 192.168.1.1;
|
||||||
|
# route 10.0.1.0/24 via 10.0.1.1;
|
||||||
|
}
|
||||||
|
|
||||||
# BGP Configuration
|
# BGP Configuration
|
||||||
# Принимаем соединения от любых пиров
|
# Принимаем соединения от любых пиров
|
||||||
protocol bgp {
|
protocol bgp {
|
||||||
# Локальные настройки
|
# Локальные настройки
|
||||||
local as 65001;
|
local as 65001;
|
||||||
listen bgp;
|
|
||||||
|
|
||||||
# Настройки для всех пиров
|
# Настройки для всех пиров
|
||||||
hold time 90;
|
hold time 90;
|
||||||
@@ -34,7 +47,6 @@ protocol bgp {
|
|||||||
startup hold time 240;
|
startup hold time 240;
|
||||||
|
|
||||||
# Принимаем соединения от любых IP
|
# Принимаем соединения от любых IP
|
||||||
listen bgp;
|
|
||||||
listen bgp port 179;
|
listen bgp port 179;
|
||||||
|
|
||||||
# Настройки для пиров
|
# Настройки для пиров
|
||||||
@@ -70,20 +82,6 @@ protocol bgp {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
# Статическая таблица маршрутов
|
|
||||||
protocol static {
|
|
||||||
# Маршруты будут загружаться из файла prefixes.txt
|
|
||||||
# через скрипт load_prefixes.py
|
|
||||||
table bgp_table;
|
|
||||||
|
|
||||||
# Пример статических маршрутов
|
|
||||||
# route 192.168.1.0/24 via 192.168.1.1;
|
|
||||||
# route 10.0.1.0/24 via 10.0.1.1;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Таблица для BGP маршрутов
|
|
||||||
table bgp_table;
|
|
||||||
|
|
||||||
# Фильтры для community
|
# Фильтры для community
|
||||||
filter community_filter {
|
filter community_filter {
|
||||||
if bgp_community.matches(65001:*) then {
|
if bgp_community.matches(65001:*) then {
|
||||||
|
|||||||
+14
-16
@@ -21,11 +21,24 @@ protocol kernel {
|
|||||||
disabled;
|
disabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Таблица для BGP маршрутов IPv6
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
# Статическая таблица маршрутов IPv6
|
||||||
|
protocol static {
|
||||||
|
# Маршруты будут загружаться из файла prefixes6.txt
|
||||||
|
# через скрипт load_prefixes.py
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
# Пример статических маршрутов IPv6
|
||||||
|
# route 2001:db8::/32 via 2001:db8::1;
|
||||||
|
# route 2001:db8:1::/48 via 2001:db8:1::1;
|
||||||
|
}
|
||||||
|
|
||||||
# BGP IPv6 Configuration
|
# BGP IPv6 Configuration
|
||||||
protocol bgp {
|
protocol bgp {
|
||||||
# Локальные настройки
|
# Локальные настройки
|
||||||
local as 65001;
|
local as 65001;
|
||||||
listen bgp;
|
|
||||||
|
|
||||||
# Настройки для всех пиров
|
# Настройки для всех пиров
|
||||||
hold time 90;
|
hold time 90;
|
||||||
@@ -33,7 +46,6 @@ protocol bgp {
|
|||||||
startup hold time 240;
|
startup hold time 240;
|
||||||
|
|
||||||
# Принимаем соединения от любых IPv6 адресов
|
# Принимаем соединения от любых IPv6 адресов
|
||||||
listen bgp;
|
|
||||||
listen bgp port 179;
|
listen bgp port 179;
|
||||||
|
|
||||||
# Настройки для пиров
|
# Настройки для пиров
|
||||||
@@ -69,20 +81,6 @@ protocol bgp {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
# Статическая таблица маршрутов IPv6
|
|
||||||
protocol static {
|
|
||||||
# Маршруты будут загружаться из файла prefixes6.txt
|
|
||||||
# через скрипт load_prefixes.py
|
|
||||||
table bgp_table;
|
|
||||||
|
|
||||||
# Пример статических маршрутов IPv6
|
|
||||||
# route 2001:db8::/32 via 2001:db8::1;
|
|
||||||
# route 2001:db8:1::/48 via 2001:db8:1::1;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Таблица для BGP маршрутов IPv6
|
|
||||||
table bgp_table;
|
|
||||||
|
|
||||||
# Фильтры для community
|
# Фильтры для community
|
||||||
filter community_filter {
|
filter community_filter {
|
||||||
if bgp_community.matches(65001:*) then {
|
if bgp_community.matches(65001:*) then {
|
||||||
|
|||||||
@@ -0,0 +1,97 @@
|
|||||||
|
# BIRD Configuration for BGP Server - Accept ANY Peer
|
||||||
|
# Ubuntu 24.04
|
||||||
|
# Эта конфигурация принимает ЛЮБЫХ пиров с ЛЮБЫМИ ASN
|
||||||
|
|
||||||
|
# Logging configuration
|
||||||
|
log "/var/log/bird/bird.log" all;
|
||||||
|
log stderr all;
|
||||||
|
|
||||||
|
# Router ID (замените на ваш IP адрес)
|
||||||
|
router id 192.168.1.1;
|
||||||
|
|
||||||
|
# Protocol configuration
|
||||||
|
protocol device {
|
||||||
|
scan time 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol direct {
|
||||||
|
disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol kernel {
|
||||||
|
disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Таблица для BGP маршрутов
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
# Статическая таблица маршрутов
|
||||||
|
protocol static {
|
||||||
|
# Маршруты будут загружаться из файла prefixes.txt
|
||||||
|
# через скрипт load_prefixes.py
|
||||||
|
table bgp_table;
|
||||||
|
}
|
||||||
|
|
||||||
|
# BGP Configuration - принимаем ЛЮБЫХ пиров
|
||||||
|
protocol bgp {
|
||||||
|
# Локальные настройки
|
||||||
|
local as 65001;
|
||||||
|
|
||||||
|
# Настройки для всех пиров
|
||||||
|
hold time 90;
|
||||||
|
keepalive time 30;
|
||||||
|
startup hold time 240;
|
||||||
|
|
||||||
|
# Принимаем соединения от ЛЮБЫХ IP и ЛЮБЫХ ASN
|
||||||
|
listen bgp port 179;
|
||||||
|
|
||||||
|
# Настройки для пиров - принимаем ЛЮБЫХ пиров
|
||||||
|
import none; # Не импортируем маршруты от пиров
|
||||||
|
export all; # Экспортируем все маршруты пирам
|
||||||
|
|
||||||
|
# Настройки для статических маршрутов
|
||||||
|
import where source = RTS_STATIC;
|
||||||
|
export where source = RTS_STATIC;
|
||||||
|
|
||||||
|
# MD5 аутентификация ОТКЛЮЧЕНА для приема любых пиров
|
||||||
|
# password "your_bgp_password";
|
||||||
|
|
||||||
|
# Настройки для больших таблиц маршрутизации
|
||||||
|
table limit 100000;
|
||||||
|
|
||||||
|
# Настройки для community - принимаем любые community
|
||||||
|
import filter {
|
||||||
|
# Принимаем ВСЕ маршруты от любых пиров
|
||||||
|
accept;
|
||||||
|
};
|
||||||
|
|
||||||
|
export filter {
|
||||||
|
# Экспортируем маршруты с community
|
||||||
|
if source = RTS_STATIC then {
|
||||||
|
bgp_community.add(65001:100);
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
reject;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# Фильтры для community
|
||||||
|
filter community_filter {
|
||||||
|
if bgp_community.matches(65001:*) then {
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
reject;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для добавления community
|
||||||
|
function add_community() {
|
||||||
|
bgp_community.add(65001:100);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Настройки для мониторинга
|
||||||
|
protocol pipe {
|
||||||
|
table master;
|
||||||
|
peer table bgp_table;
|
||||||
|
import all;
|
||||||
|
export none;
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Простая конфигурация BIRD для тестирования
|
||||||
|
# Ubuntu 24.04
|
||||||
|
|
||||||
|
# Logging configuration
|
||||||
|
log "/var/log/bird/bird.log" all;
|
||||||
|
log stderr all;
|
||||||
|
|
||||||
|
# Router ID (замените на ваш IP адрес)
|
||||||
|
router id 192.168.1.1;
|
||||||
|
|
||||||
|
# Protocol configuration
|
||||||
|
protocol device {
|
||||||
|
scan time 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol direct {
|
||||||
|
disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol kernel {
|
||||||
|
disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Статическая таблица маршрутов
|
||||||
|
protocol static {
|
||||||
|
# Пример статических маршрутов
|
||||||
|
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 {
|
||||||
|
# Локальные настройки
|
||||||
|
local as 65001;
|
||||||
|
|
||||||
|
# Принимаем соединения от любых IP
|
||||||
|
listen bgp port 179;
|
||||||
|
|
||||||
|
# Настройки для пиров
|
||||||
|
import none; # Не импортируем маршруты от пиров
|
||||||
|
export all; # Экспортируем все маршруты пирам
|
||||||
|
}
|
||||||
@@ -0,0 +1,401 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Скрипт для включения режима приема ЛЮБЫХ пиров
|
||||||
|
# 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"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Создание конфигурации для любых пиров
|
||||||
|
create_any_peer_config() {
|
||||||
|
local server_ip=$(get_server_ip)
|
||||||
|
|
||||||
|
print_info "Создание конфигурации для приема ЛЮБЫХ пиров с IP: $server_ip"
|
||||||
|
|
||||||
|
# Создание конфигурации IPv4
|
||||||
|
cat > /etc/bird/bird.conf << EOF
|
||||||
|
# BIRD Configuration for BGP Server - Accept ANY Peer
|
||||||
|
# Ubuntu 24.04
|
||||||
|
# Эта конфигурация принимает ЛЮБЫХ пиров с ЛЮБЫМИ ASN
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Таблица для BGP маршрутов
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
# Статическая таблица маршрутов
|
||||||
|
protocol static {
|
||||||
|
# Маршруты будут загружаться из файла prefixes.txt
|
||||||
|
# через скрипт load_prefixes.py
|
||||||
|
table bgp_table;
|
||||||
|
}
|
||||||
|
|
||||||
|
# BGP Configuration - принимаем ЛЮБЫХ пиров
|
||||||
|
protocol bgp {
|
||||||
|
# Локальные настройки
|
||||||
|
local as 65001;
|
||||||
|
|
||||||
|
# Настройки для всех пиров
|
||||||
|
hold time 90;
|
||||||
|
keepalive time 30;
|
||||||
|
startup hold time 240;
|
||||||
|
|
||||||
|
# Принимаем соединения от ЛЮБЫХ IP и ЛЮБЫХ ASN
|
||||||
|
listen bgp port 179;
|
||||||
|
|
||||||
|
# Настройки для пиров - принимаем ЛЮБЫХ пиров
|
||||||
|
import none; # Не импортируем маршруты от пиров
|
||||||
|
export all; # Экспортируем все маршруты пирам
|
||||||
|
|
||||||
|
# Настройки для статических маршрутов
|
||||||
|
import where source = RTS_STATIC;
|
||||||
|
export where source = RTS_STATIC;
|
||||||
|
|
||||||
|
# MD5 аутентификация ОТКЛЮЧЕНА для приема любых пиров
|
||||||
|
# password "your_bgp_password";
|
||||||
|
|
||||||
|
# Настройки для больших таблиц маршрутизации
|
||||||
|
table limit 100000;
|
||||||
|
|
||||||
|
# Настройки для community - принимаем любые community
|
||||||
|
import filter {
|
||||||
|
# Принимаем ВСЕ маршруты от любых пиров
|
||||||
|
accept;
|
||||||
|
};
|
||||||
|
|
||||||
|
export filter {
|
||||||
|
# Экспортируем маршруты с community
|
||||||
|
if source = RTS_STATIC then {
|
||||||
|
bgp_community.add(65001:100);
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
reject;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# Фильтры для community
|
||||||
|
filter community_filter {
|
||||||
|
if bgp_community.matches(65001:*) then {
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
reject;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для добавления community
|
||||||
|
function add_community() {
|
||||||
|
bgp_community.add(65001:100);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Настройки для мониторинга
|
||||||
|
protocol pipe {
|
||||||
|
table master;
|
||||||
|
peer table bgp_table;
|
||||||
|
import all;
|
||||||
|
export none;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Создание конфигурации IPv6
|
||||||
|
cat > /etc/bird/bird6.conf << EOF
|
||||||
|
# BIRD IPv6 Configuration for BGP Server - Accept ANY Peer
|
||||||
|
# Ubuntu 24.04
|
||||||
|
# Эта конфигурация принимает ЛЮБЫХ пиров с ЛЮБЫМИ ASN
|
||||||
|
|
||||||
|
# Logging configuration
|
||||||
|
log "/var/log/bird/bird6.log" all;
|
||||||
|
log stderr all;
|
||||||
|
|
||||||
|
# Router ID
|
||||||
|
router id $server_ip;
|
||||||
|
|
||||||
|
# Protocol configuration
|
||||||
|
protocol device {
|
||||||
|
scan time 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol direct {
|
||||||
|
disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol kernel {
|
||||||
|
disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Таблица для BGP маршрутов IPv6
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
# Статическая таблица маршрутов IPv6
|
||||||
|
protocol static {
|
||||||
|
# Маршруты будут загружаться из файла prefixes6.txt
|
||||||
|
# через скрипт load_prefixes.py
|
||||||
|
table bgp_table;
|
||||||
|
}
|
||||||
|
|
||||||
|
# BGP IPv6 Configuration - принимаем ЛЮБЫХ пиров
|
||||||
|
protocol bgp {
|
||||||
|
# Локальные настройки
|
||||||
|
local as 65001;
|
||||||
|
|
||||||
|
# Настройки для всех пиров
|
||||||
|
hold time 90;
|
||||||
|
keepalive time 30;
|
||||||
|
startup hold time 240;
|
||||||
|
|
||||||
|
# Принимаем соединения от ЛЮБЫХ IPv6 адресов и ЛЮБЫХ ASN
|
||||||
|
listen bgp port 179;
|
||||||
|
|
||||||
|
# Настройки для пиров - принимаем ЛЮБЫХ пиров
|
||||||
|
import none; # Не импортируем маршруты от пиров
|
||||||
|
export all; # Экспортируем все маршруты пирам
|
||||||
|
|
||||||
|
# Настройки для статических маршрутов
|
||||||
|
import where source = RTS_STATIC;
|
||||||
|
export where source = RTS_STATIC;
|
||||||
|
|
||||||
|
# MD5 аутентификация ОТКЛЮЧЕНА для приема любых пиров
|
||||||
|
# password "your_bgp_password";
|
||||||
|
|
||||||
|
# Настройки для больших таблиц маршрутизации
|
||||||
|
table limit 100000;
|
||||||
|
|
||||||
|
# Настройки для community - принимаем любые community
|
||||||
|
import filter {
|
||||||
|
# Принимаем ВСЕ маршруты от любых пиров
|
||||||
|
accept;
|
||||||
|
};
|
||||||
|
|
||||||
|
export filter {
|
||||||
|
# Экспортируем маршруты с community
|
||||||
|
if source = RTS_STATIC then {
|
||||||
|
bgp_community.add(65001:100);
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
reject;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# Фильтры для community
|
||||||
|
filter community_filter {
|
||||||
|
if bgp_community.matches(65001:*) then {
|
||||||
|
accept;
|
||||||
|
}
|
||||||
|
reject;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для добавления community
|
||||||
|
function add_community() {
|
||||||
|
bgp_community.add(65001:100);
|
||||||
|
}
|
||||||
|
|
||||||
|
# Настройки для мониторинга
|
||||||
|
protocol pipe {
|
||||||
|
table master;
|
||||||
|
peer table bgp_table;
|
||||||
|
import all;
|
||||||
|
export none;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Установка правильных прав доступа
|
||||||
|
chown bird:bird /etc/bird/bird*.conf
|
||||||
|
chmod 644 /etc/bird/bird*.conf
|
||||||
|
|
||||||
|
print_success "Конфигурация для любых пиров создана"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Проверка конфигурации
|
||||||
|
check_config() {
|
||||||
|
print_info "Проверка конфигурации..."
|
||||||
|
|
||||||
|
if bird -p /etc/bird/bird.conf; then
|
||||||
|
print_success "Конфигурация BIRD (IPv4) корректна"
|
||||||
|
else
|
||||||
|
print_error "Ошибка в конфигурации BIRD (IPv4)"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v bird6 &> /dev/null; then
|
||||||
|
if bird6 -p /etc/bird/bird6.conf; then
|
||||||
|
print_success "Конфигурация BIRD (IPv6) корректна"
|
||||||
|
else
|
||||||
|
print_warning "Ошибка в конфигурации BIRD (IPv6)"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Перезапуск сервисов
|
||||||
|
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 "Enable ANY Peer Mode for BGP Server"
|
||||||
|
echo "Ubuntu 24.04"
|
||||||
|
echo "=========================================="
|
||||||
|
|
||||||
|
check_root
|
||||||
|
|
||||||
|
# Создание конфигурации для любых пиров
|
||||||
|
create_any_peer_config
|
||||||
|
|
||||||
|
# Проверка конфигурации
|
||||||
|
if check_config; then
|
||||||
|
# Перезапуск сервисов
|
||||||
|
if restart_services; then
|
||||||
|
# Проверка работоспособности
|
||||||
|
test_functionality
|
||||||
|
|
||||||
|
print_success "Режим приема любых пиров включен!"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Теперь сервер принимает ЛЮБЫХ пиров с ЛЮБЫМИ ASN"
|
||||||
|
echo ""
|
||||||
|
echo "Полезные команды:"
|
||||||
|
echo " sudo birdc show protocols"
|
||||||
|
echo " sudo birdc show routes"
|
||||||
|
echo " sudo systemctl status bird"
|
||||||
|
echo " sudo journalctl -u bird -f"
|
||||||
|
echo ""
|
||||||
|
echo "Для подключения клиентов используйте:"
|
||||||
|
echo " Remote AS: 65001"
|
||||||
|
echo " Remote IP: $(get_server_ip)"
|
||||||
|
echo " Port: 179"
|
||||||
|
else
|
||||||
|
print_error "Ошибка перезапуска сервисов"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
print_error "Ошибка в конфигурации"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Запуск основной функции
|
||||||
|
main "$@"
|
||||||
+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 "$@"
|
||||||
+251
-18
@@ -37,6 +37,24 @@ check_root() {
|
|||||||
fi
|
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"
|
||||||
|
}
|
||||||
|
|
||||||
# Проверка версии Ubuntu
|
# Проверка версии Ubuntu
|
||||||
check_ubuntu_version() {
|
check_ubuntu_version() {
|
||||||
if [[ ! -f /etc/os-release ]]; then
|
if [[ ! -f /etc/os-release ]]; then
|
||||||
@@ -110,9 +128,153 @@ copy_config_files() {
|
|||||||
cp /etc/bird/bird6.conf /etc/bird/bird6.conf.backup.$(date +%Y%m%d_%H%M%S)
|
cp /etc/bird/bird6.conf /etc/bird/bird6.conf.backup.$(date +%Y%m%d_%H%M%S)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Копирование новых конфигураций
|
# Получение IP адреса сервера
|
||||||
cp config/bird.conf /etc/bird/bird.conf
|
local server_ip=$(get_server_ip)
|
||||||
cp config/bird6.conf /etc/bird/bird6.conf
|
print_info "Используется IP адрес: $server_ip"
|
||||||
|
|
||||||
|
# Создание правильной конфигурации BIRD IPv4
|
||||||
|
cat > /etc/bird/bird.conf << EOF
|
||||||
|
# BIRD Configuration for BGP Server
|
||||||
|
# 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
protocol static {
|
||||||
|
table bgp_table;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol bgp {
|
||||||
|
local as 65001;
|
||||||
|
listen bgp port 179;
|
||||||
|
hold time 90;
|
||||||
|
keepalive time 30;
|
||||||
|
startup hold time 240;
|
||||||
|
|
||||||
|
# Сервер НЕ принимает маршруты от клиентов
|
||||||
|
import none;
|
||||||
|
# Сервер раздает ТОЛЬКО свои статические маршруты
|
||||||
|
export where source = RTS_STATIC;
|
||||||
|
|
||||||
|
# MD5 аутентификация (опционально)
|
||||||
|
# password "your_bgp_password";
|
||||||
|
table limit 100000;
|
||||||
|
|
||||||
|
# Фильтры: не принимаем ничего, раздаем всё
|
||||||
|
import filter {
|
||||||
|
reject;
|
||||||
|
};
|
||||||
|
export filter {
|
||||||
|
accept;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
filter community_filter {
|
||||||
|
reject;
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_community() {
|
||||||
|
# пусто
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol pipe {
|
||||||
|
table master;
|
||||||
|
peer table bgp_table;
|
||||||
|
import all;
|
||||||
|
export none;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Создание правильной конфигурации BIRD IPv6
|
||||||
|
cat > /etc/bird/bird6.conf << EOF
|
||||||
|
# BIRD IPv6 Configuration for BGP Server
|
||||||
|
# Ubuntu 24.04
|
||||||
|
|
||||||
|
# Logging configuration
|
||||||
|
log "/var/log/bird/bird6.log" all;
|
||||||
|
log stderr all;
|
||||||
|
|
||||||
|
# Router ID
|
||||||
|
router id $server_ip;
|
||||||
|
|
||||||
|
# Protocol configuration
|
||||||
|
protocol device {
|
||||||
|
scan time 10;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol direct {
|
||||||
|
disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol kernel {
|
||||||
|
disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
table bgp_table;
|
||||||
|
|
||||||
|
protocol static {
|
||||||
|
table bgp_table;
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol bgp {
|
||||||
|
local as 65001;
|
||||||
|
listen bgp port 179;
|
||||||
|
hold time 90;
|
||||||
|
keepalive time 30;
|
||||||
|
startup hold time 240;
|
||||||
|
|
||||||
|
# Сервер НЕ принимает маршруты от клиентов
|
||||||
|
import none;
|
||||||
|
# Сервер раздает ТОЛЬКО свои статические маршруты
|
||||||
|
export where source = RTS_STATIC;
|
||||||
|
|
||||||
|
# MD5 аутентификация (опционально)
|
||||||
|
# password "your_bgp_password";
|
||||||
|
table limit 100000;
|
||||||
|
|
||||||
|
# Фильтры: не принимаем ничего, раздаем всё
|
||||||
|
import filter {
|
||||||
|
reject;
|
||||||
|
};
|
||||||
|
export filter {
|
||||||
|
accept;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
filter community_filter {
|
||||||
|
reject;
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_community() {
|
||||||
|
# пусто
|
||||||
|
}
|
||||||
|
|
||||||
|
protocol pipe {
|
||||||
|
table master;
|
||||||
|
peer table bgp_table;
|
||||||
|
import all;
|
||||||
|
export none;
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
# Копирование скриптов
|
# Копирование скриптов
|
||||||
cp scripts/load_prefixes.py /opt/bgp-server/scripts/
|
cp scripts/load_prefixes.py /opt/bgp-server/scripts/
|
||||||
@@ -124,7 +286,11 @@ copy_config_files() {
|
|||||||
# Установка прав на выполнение для скриптов
|
# Установка прав на выполнение для скриптов
|
||||||
chmod +x /opt/bgp-server/scripts/*.py
|
chmod +x /opt/bgp-server/scripts/*.py
|
||||||
|
|
||||||
print_success "Файлы конфигурации скопированы"
|
# Установка правильных прав доступа к конфигурации
|
||||||
|
chown bird:bird /etc/bird/bird*.conf
|
||||||
|
chmod 644 /etc/bird/bird*.conf
|
||||||
|
|
||||||
|
print_success "Файлы конфигурации созданы и скопированы"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Настройка firewall
|
# Настройка firewall
|
||||||
@@ -152,15 +318,21 @@ configure_firewall() {
|
|||||||
configure_services() {
|
configure_services() {
|
||||||
print_info "Настройка systemd сервисов..."
|
print_info "Настройка systemd сервисов..."
|
||||||
|
|
||||||
# Включение автозапуска
|
# Включение автозапуска для bird (IPv4)
|
||||||
systemctl enable bird
|
systemctl enable bird
|
||||||
systemctl enable bird6
|
|
||||||
|
# Проверка существования bird6 сервиса
|
||||||
|
if systemctl list-unit-files | grep -q bird6; then
|
||||||
|
systemctl enable bird6
|
||||||
|
print_info "BIRD6 сервис найден и включен"
|
||||||
|
else
|
||||||
|
print_warning "BIRD6 сервис не найден, будет использоваться только IPv4"
|
||||||
|
fi
|
||||||
|
|
||||||
# Запуск сервисов
|
# Запуск сервисов
|
||||||
systemctl start bird
|
systemctl start bird
|
||||||
systemctl start bird6
|
|
||||||
|
|
||||||
# Проверка статуса
|
# Проверка статуса bird
|
||||||
if systemctl is-active --quiet bird; then
|
if systemctl is-active --quiet bird; then
|
||||||
print_success "BIRD (IPv4) запущен"
|
print_success "BIRD (IPv4) запущен"
|
||||||
else
|
else
|
||||||
@@ -168,11 +340,18 @@ configure_services() {
|
|||||||
systemctl status bird
|
systemctl status bird
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if systemctl is-active --quiet bird6; then
|
# Запуск bird6 если существует
|
||||||
print_success "BIRD (IPv6) запущен"
|
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_error "Ошибка запуска BIRD (IPv6)"
|
||||||
|
systemctl status bird6
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
print_error "Ошибка запуска BIRD (IPv6)"
|
print_warning "BIRD6 не запущен (сервис не найден)"
|
||||||
systemctl status bird6
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,18 +364,57 @@ check_configuration() {
|
|||||||
print_success "Конфигурация BIRD (IPv4) корректна"
|
print_success "Конфигурация BIRD (IPv4) корректна"
|
||||||
else
|
else
|
||||||
print_error "Ошибка в конфигурации BIRD (IPv4)"
|
print_error "Ошибка в конфигурации BIRD (IPv4)"
|
||||||
exit 1
|
print_info "Попытка создания простой конфигурации..."
|
||||||
|
create_simple_config
|
||||||
|
if bird -p /etc/bird/bird.conf; then
|
||||||
|
print_success "Простая конфигурация BIRD (IPv4) создана"
|
||||||
|
else
|
||||||
|
print_error "Не удалось создать рабочую конфигурацию BIRD (IPv4)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверка синтаксиса IPv6 конфигурации
|
# Проверка синтаксиса IPv6 конфигурации
|
||||||
if bird6 -p /etc/bird/bird6.conf; then
|
if command -v bird6 &> /dev/null; then
|
||||||
print_success "Конфигурация BIRD (IPv6) корректна"
|
if bird6 -p /etc/bird/bird6.conf; then
|
||||||
|
print_success "Конфигурация BIRD (IPv6) корректна"
|
||||||
|
else
|
||||||
|
print_warning "Ошибка в конфигурации BIRD (IPv6), будет использоваться только IPv4"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
print_error "Ошибка в конфигурации BIRD (IPv6)"
|
print_warning "BIRD6 не установлен, пропускаем проверку IPv6"
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Создание простой конфигурации
|
||||||
|
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
|
||||||
|
|
||||||
|
log "/var/log/bird/bird.log" all;
|
||||||
|
log stderr all;
|
||||||
|
router id $server_ip;
|
||||||
|
protocol device { scan time 10; }
|
||||||
|
protocol direct { disabled; }
|
||||||
|
protocol kernel { disabled; }
|
||||||
|
protocol static {}
|
||||||
|
protocol bgp {
|
||||||
|
local as 65001;
|
||||||
|
listen bgp port 179;
|
||||||
|
import none;
|
||||||
|
export where source = RTS_STATIC;
|
||||||
|
import filter { reject; };
|
||||||
|
export filter { accept; };
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
chown bird:bird /etc/bird/bird.conf
|
||||||
|
chmod 644 /etc/bird/bird.conf
|
||||||
|
print_success "Простая конфигурация создана"
|
||||||
|
}
|
||||||
|
|
||||||
# Создание systemd таймера для автоматической загрузки префиксов
|
# Создание systemd таймера для автоматической загрузки префиксов
|
||||||
create_systemd_timer() {
|
create_systemd_timer() {
|
||||||
print_info "Создание systemd таймера для загрузки префиксов..."
|
print_info "Создание systemd таймера для загрузки префиксов..."
|
||||||
@@ -270,7 +488,13 @@ final_check() {
|
|||||||
print_info "Статус сервисов:"
|
print_info "Статус сервисов:"
|
||||||
systemctl status bird --no-pager -l
|
systemctl status bird --no-pager -l
|
||||||
echo ""
|
echo ""
|
||||||
systemctl status bird6 --no-pager -l
|
|
||||||
|
# Проверка bird6 если существует
|
||||||
|
if systemctl list-unit-files | grep -q bird6; then
|
||||||
|
systemctl status bird6 --no-pager -l
|
||||||
|
else
|
||||||
|
print_warning "BIRD6 сервис не установлен"
|
||||||
|
fi
|
||||||
|
|
||||||
# Проверка прослушивания порта
|
# Проверка прослушивания порта
|
||||||
if netstat -tlnp | grep :179; then
|
if netstat -tlnp | grep :179; then
|
||||||
@@ -279,6 +503,15 @@ final_check() {
|
|||||||
print_warning "BGP порт 179 не прослушивается"
|
print_warning "BGP порт 179 не прослушивается"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Проверка конфигурации
|
||||||
|
echo ""
|
||||||
|
print_info "Проверка конфигурации:"
|
||||||
|
if birdc show protocols 2>/dev/null; then
|
||||||
|
print_success "BIRD отвечает на команды"
|
||||||
|
else
|
||||||
|
print_warning "BIRD не отвечает на команды (возможно, нужно время для запуска)"
|
||||||
|
fi
|
||||||
|
|
||||||
# Проверка firewall
|
# Проверка firewall
|
||||||
echo ""
|
echo ""
|
||||||
print_info "Статус firewall:"
|
print_info "Статус firewall:"
|
||||||
|
|||||||
@@ -0,0 +1,198 @@
|
|||||||
|
#!/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 "$@"
|
||||||
Reference in New Issue
Block a user