155 lines
4.6 KiB
Markdown
155 lines
4.6 KiB
Markdown
# BGP Server Setup
|
||
|
||
## Обзор
|
||
BGP сервер на Ubuntu 24.04 с возможностью подключения любых пиров и загрузки префиксов из файла с community.
|
||
|
||
## Архитектура
|
||
- **BGP Server**: BIRD (Bird Internet Routing Daemon)
|
||
- **OS**: Ubuntu 24.04
|
||
- **Функции**:
|
||
- Прием BGP соединений от любых пиров
|
||
- Загрузка префиксов из файла prefixes.txt
|
||
- Настройка community для каждого префикса
|
||
- Сервер НЕ получает префиксы, только раздает их клиентам
|
||
|
||
## Структура проекта
|
||
```
|
||
bgp-server/
|
||
├── README.md
|
||
├── install.sh # Скрипт установки
|
||
├── config/
|
||
│ ├── bird.conf # Основная конфигурация BIRD
|
||
│ └── bird6.conf # Конфигурация для IPv6 (опционально)
|
||
├── scripts/
|
||
│ ├── load_prefixes.py # Скрипт загрузки префиксов
|
||
│ └── monitor.py # Мониторинг BGP сессий
|
||
├── data/
|
||
│ └── prefixes.txt # Файл с префиксами и community
|
||
└── logs/
|
||
└── bird.log # Логи BIRD
|
||
```
|
||
|
||
## Установка
|
||
|
||
### 1. Обновление системы
|
||
```bash
|
||
sudo apt update && sudo apt upgrade -y
|
||
```
|
||
|
||
### 2. Установка BIRD
|
||
```bash
|
||
sudo apt install bird2 -y
|
||
```
|
||
|
||
### 3. Настройка конфигурации
|
||
```bash
|
||
# Копирование конфигурационных файлов
|
||
sudo cp config/bird.conf /etc/bird/bird.conf
|
||
sudo cp config/bird6.conf /etc/bird/bird6.conf
|
||
|
||
# Создание директорий
|
||
sudo mkdir -p /var/log/bird
|
||
sudo mkdir -p /opt/bgp-server/data
|
||
sudo mkdir -p /opt/bgp-server/scripts
|
||
|
||
# Копирование скриптов
|
||
sudo cp scripts/* /opt/bgp-server/scripts/
|
||
sudo cp data/prefixes.txt /opt/bgp-server/data/
|
||
```
|
||
|
||
### 4. Запуск сервисов
|
||
```bash
|
||
sudo systemctl enable bird
|
||
sudo systemctl start bird
|
||
sudo systemctl enable bird6
|
||
sudo systemctl start bird6
|
||
```
|
||
|
||
## Конфигурация
|
||
|
||
### Формат файла prefixes.txt
|
||
```
|
||
# Формат: prefix community description
|
||
# Community: ASN:value (например, 65001:100)
|
||
192.168.1.0/24 65001:100 "Customer A - Premium"
|
||
10.0.1.0/24 65001:200 "Customer B - Standard"
|
||
172.16.1.0/24 65001:300 "Customer C - Basic"
|
||
203.0.113.0/24 65001:400 "Customer D - Enterprise"
|
||
```
|
||
|
||
### Загрузка префиксов
|
||
```bash
|
||
# Загрузка префиксов из файла
|
||
python3 /opt/bgp-server/scripts/load_prefixes.py
|
||
|
||
# Мониторинг BGP сессий
|
||
python3 /opt/bgp-server/scripts/monitor.py
|
||
```
|
||
|
||
## Мониторинг
|
||
|
||
### Проверка статуса BIRD
|
||
```bash
|
||
sudo birdc show protocols
|
||
sudo birdc show routes
|
||
sudo birdc show route table all
|
||
```
|
||
|
||
### Просмотр логов
|
||
```bash
|
||
sudo journalctl -u bird -f
|
||
sudo tail -f /var/log/bird/bird.log
|
||
```
|
||
|
||
## Безопасность
|
||
|
||
### Firewall настройки
|
||
```bash
|
||
# Разрешить BGP (порт 179)
|
||
sudo ufw allow 179/tcp
|
||
|
||
# Разрешить SSH
|
||
sudo ufw allow ssh
|
||
|
||
# Включить firewall
|
||
sudo ufw enable
|
||
```
|
||
|
||
### Ограничение доступа
|
||
- Настройте ACL в конфигурации BIRD
|
||
- Используйте MD5 аутентификацию для BGP сессий
|
||
- Ограничьте доступ к birdc только с localhost
|
||
|
||
## Troubleshooting
|
||
|
||
### Частые проблемы
|
||
1. **BGP сессия не устанавливается**
|
||
- Проверьте firewall настройки
|
||
- Убедитесь, что ASN настроен правильно
|
||
- Проверьте логи BIRD
|
||
|
||
2. **Префиксы не загружаются**
|
||
- Проверьте формат файла prefixes.txt
|
||
- Убедитесь, что скрипт load_prefixes.py имеет права на выполнение
|
||
- Проверьте синтаксис конфигурации BIRD
|
||
|
||
3. **Высокая нагрузка на CPU**
|
||
- Оптимизируйте конфигурацию BIRD
|
||
- Проверьте количество префиксов
|
||
- Мониторьте использование памяти
|
||
|
||
## Полезные команды
|
||
|
||
```bash
|
||
# Перезагрузка конфигурации BIRD
|
||
sudo birdc configure
|
||
|
||
# Проверка синтаксиса конфигурации
|
||
sudo birdc -p
|
||
|
||
# Экспорт маршрутов
|
||
sudo birdc show route export all
|
||
|
||
# Статистика протоколов
|
||
sudo birdc show protocols all
|
||
``` |