This commit is contained in:
2025-07-11 18:46:16 +07:00
parent af197d8953
commit 8f53e99188
14 changed files with 660 additions and 200 deletions
+123
View File
@@ -0,0 +1,123 @@
# Быстрый старт BGP сервера на Linux
## Минимальная установка
### Вариант 1: С Docker Compose
```bash
# 1. Клонируйте или скачайте проект
git clone <repository-url>
cd bgp-server
# 2. Установите зависимости
./install-dependencies.sh
# 3. Запустите BGP сервер
./start-bgp-server.sh
```
### Вариант 2: Только Docker (рекомендуется)
```bash
# 1. Клонируйте или скачайте проект
git clone <repository-url>
cd bgp-server
# 2. Сделайте скрипты исполняемыми
chmod +x *.sh
# 3. Быстрый запуск одной командой
./quick-run.sh
```
## Проверка работы
```bash
# Проверить статус
./check-bgp-status.sh
# Подключиться к консоли управления
docker exec -it bgp-server vtysh
# Посмотреть логи
docker-compose logs -f bgp-server
```
## Управление
### С Docker Compose
```bash
# Остановить сервер
./stop-bgp-server.sh
# Обновить префиксы
./update-prefixes.sh
# Перезапустить сервер
./stop-bgp-server.sh && ./start-bgp-server.sh
```
### Только Docker
```bash
# Остановить сервер
./quick-stop.sh
# Полное управление контейнером
./run-bgp-container.sh start
./run-bgp-container.sh stop
./run-bgp-container.sh restart
./run-bgp-container.sh status
./run-bgp-container.sh logs
```
## Основные команды vtysh
```bash
# Войти в консоль
docker exec -it bgp-server vtysh
# Показать статус BGP
show ip bgp summary
# Показать анонсированные префиксы
show ip bgp
# Показать соседей
show ip bgp neighbors
# Показать community
show ip bgp community
```
## Настройки по умолчанию
- **ASN**: 65000
- **Router ID**: 192.168.1.1
- **BGP порт**: 179
- **vtysh порт**: 2601
- **Пароль vtysh**: zebra
## Подключение клиентов
Клиенты могут подключаться к BGP серверу по IP адресу сервера на порту 179.
Пример конфигурации клиента:
```
router bgp 65001
neighbor <SERVER_IP> remote-as 65000
neighbor <SERVER_IP> send-community
```
## Troubleshooting
```bash
# Проверить, что Docker работает
docker version
# Проверить, что контейнер запущен
docker ps
# Проверить логи
docker-compose logs bgp-server
# Проверить сетевые порты
netstat -tuln | grep :179
```
+28 -16
View File
@@ -4,9 +4,9 @@
## Требования
- Docker Desktop для Windows
- Docker Engine
- Docker Compose
- PowerShell
- Bash shell
## Структура проекта
@@ -15,24 +15,36 @@ bgp-server/
├── docker-compose.yml # Конфигурация Docker контейнера
├── frr.conf # Конфигурация FRRouting
├── prefixes.txt # Файл с префиксами и community
├── start-bgp-server.ps1 # Скрипт запуска для PowerShell
├── start-bgp-server.sh # Скрипт запуска для Linux
├── stop-bgp-server.sh # Скрипт остановки для Linux
├── check-bgp-status.sh # Скрипт проверки статуса для Linux
├── update-prefixes.sh # Скрипт обновления префиксов для Linux
├── install-dependencies.sh # Скрипт установки зависимостей
└── README.md # Эта инструкция
```
## Быстрый запуск
1. **Запустите Docker Desktop**
1. **Установите зависимости (если не установлены):**
```bash
./install-dependencies.sh
```
2. **Запустите BGP сервер:**
```powershell
.\start-bgp-server.ps1
2. **Сделайте скрипты исполняемыми:**
```bash
chmod +x *.sh
```
3. **Запустите BGP сервер:**
```bash
./start-bgp-server.sh
```
## Ручной запуск
Если вы предпочитаете запускать вручную:
```powershell
```bash
# Остановить существующие контейнеры
docker-compose down
@@ -72,7 +84,7 @@ prefix community1:community2:community3
### Подключение к vtysh (консоль управления)
```powershell
```bash
docker exec -it bgp-server vtysh
```
@@ -97,7 +109,7 @@ show ipv6 bgp summary
### Просмотр логов
```powershell
```bash
# Просмотр логов в реальном времени
docker-compose logs -f bgp-server
@@ -107,7 +119,7 @@ docker-compose logs bgp-server
### Остановка сервера
```powershell
```bash
docker-compose down
```
@@ -149,20 +161,20 @@ protocols {
### Проверка статуса контейнера
```powershell
```bash
docker ps --filter "name=bgp-server"
```
### Проверка сетевых портов
```powershell
netstat -an | findstr :179
netstat -an | findstr :2601
```bash
netstat -tuln | grep :179
netstat -tuln | grep :2601
```
### Проверка логов FRRouting
```powershell
```bash
docker exec bgp-server cat /var/log/frr/frr.log
```
-67
View File
@@ -1,67 +0,0 @@
# PowerShell script to check BGP server status
# BGP Server Status Check Script
Write-Host "Checking BGP Server Status..." -ForegroundColor Cyan
# Check if Docker is running
try {
docker version | Out-Null
Write-Host "✓ Docker is running" -ForegroundColor Green
} catch {
Write-Host "✗ Docker is not running" -ForegroundColor Red
exit 1
}
# Check container status
Write-Host "`nContainer Status:" -ForegroundColor Yellow
$containerStatus = docker ps --filter "name=bgp-server" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
if ($containerStatus -and $containerStatus -notmatch "NAMES") {
Write-Host $containerStatus -ForegroundColor Green
} else {
Write-Host "✗ BGP container is not running" -ForegroundColor Red
Write-Host "To start the server, run: .\start-bgp-server.ps1" -ForegroundColor Yellow
exit 1
}
# Check network ports
Write-Host "`nNetwork Ports:" -ForegroundColor Yellow
$bgpPort = netstat -an | findstr ":179"
$vtyshPort = netstat -an | findstr ":2601"
if ($bgpPort) {
Write-Host "✓ BGP port 179 is listening" -ForegroundColor Green
} else {
Write-Host "✗ BGP port 179 is not listening" -ForegroundColor Red
}
if ($vtyshPort) {
Write-Host "✓ vtysh port 2601 is listening" -ForegroundColor Green
} else {
Write-Host "✗ vtysh port 2601 is not listening" -ForegroundColor Red
}
# Check BGP status inside container
Write-Host "`nBGP Status:" -ForegroundColor Yellow
try {
$bgpSummary = docker exec bgp-server vtysh -c "show ip bgp summary" 2>$null
if ($bgpSummary) {
Write-Host "✓ BGP daemon is running" -ForegroundColor Green
Write-Host "BGP Summary:" -ForegroundColor Cyan
Write-Host $bgpSummary -ForegroundColor White
} else {
Write-Host "✗ BGP daemon is not responding" -ForegroundColor Red
}
} catch {
Write-Host "✗ Cannot connect to BGP daemon" -ForegroundColor Red
}
# Check recent logs
Write-Host "`nRecent Logs:" -ForegroundColor Yellow
$recentLogs = docker-compose logs --tail=10 bgp-server 2>$null
if ($recentLogs) {
Write-Host $recentLogs -ForegroundColor White
} else {
Write-Host "No recent logs available" -ForegroundColor Gray
}
Write-Host "`nStatus check completed!" -ForegroundColor Green
+59
View File
@@ -0,0 +1,59 @@
#!/bin/bash
# Bash script to check BGP server status on Linux
# BGP Server Status Check Script
echo -e "\033[36mChecking BGP Server Status...\033[0m"
# Check if Docker is running
if ! docker version >/dev/null 2>&1; then
echo -e "\033[31m✗ Docker is not running\033[0m"
exit 1
fi
echo -e "\033[32m✓ Docker is running\033[0m"
# Check container status
echo -e "\n\033[33mContainer Status:\033[0m"
container_status=$(docker ps --filter "name=bgp-server" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}")
if [ -n "$container_status" ] && ! echo "$container_status" | grep -q "NAMES"; then
echo -e "\033[32m$container_status\033[0m"
else
echo -e "\033[31m✗ BGP container is not running\033[0m"
echo -e "\033[33mTo start the server, run: ./start-bgp-server.sh\033[0m"
exit 1
fi
# Check network ports
echo -e "\n\033[33mNetwork Ports:\033[0m"
if netstat -tuln 2>/dev/null | grep -q ":179 "; then
echo -e "\033[32m✓ BGP port 179 is listening\033[0m"
else
echo -e "\033[31m✗ BGP port 179 is not listening\033[0m"
fi
if netstat -tuln 2>/dev/null | grep -q ":2601 "; then
echo -e "\033[32m✓ vtysh port 2601 is listening\033[0m"
else
echo -e "\033[31m✗ vtysh port 2601 is not listening\033[0m"
fi
# Check BGP status inside container
echo -e "\n\033[33mBGP Status:\033[0m"
bgp_summary=$(docker exec bgp-server vtysh -c "show ip bgp summary" 2>/dev/null)
if [ -n "$bgp_summary" ]; then
echo -e "\033[32m✓ BGP daemon is running\033[0m"
echo -e "\033[36mBGP Summary:\033[0m"
echo -e "\033[37m$bgp_summary\033[0m"
else
echo -e "\033[31m✗ BGP daemon is not responding\033[0m"
fi
# Check recent logs
echo -e "\n\033[33mRecent Logs:\033[0m"
recent_logs=$(docker-compose logs --tail=10 bgp-server 2>/dev/null)
if [ -n "$recent_logs" ]; then
echo -e "\033[37m$recent_logs\033[0m"
else
echo -e "\033[90mNo recent logs available\033[0m"
fi
echo -e "\n\033[32mStatus check completed!\033[0m"
+106
View File
@@ -0,0 +1,106 @@
#!/bin/bash
# Bash script to install dependencies on Linux
# Dependencies Installation Script
echo -e "\033[36mInstalling BGP Server Dependencies...\033[0m"
# Detect OS
if [ -f /etc/os-release ]; then
. /etc/os-release
OS=$NAME
VER=$VERSION_ID
else
echo -e "\033[31mCannot detect OS version\033[0m"
exit 1
fi
echo -e "\033[33mDetected OS: $OS $VER\033[0m"
# Function to install Docker
install_docker() {
echo -e "\033[33mInstalling Docker...\033[0m"
# Remove old versions
sudo apt-get remove docker docker-engine docker.io containerd runc 2>/dev/null || true
# Update package index
sudo apt-get update
# Install prerequisites
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# Add Docker's official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Set up stable repository
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Install Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# Add user to docker group
sudo usermod -aG docker $USER
# Start and enable Docker
sudo systemctl start docker
sudo systemctl enable docker
echo -e "\033[32m✓ Docker installed successfully\033[0m"
echo -e "\033[33mNote: You may need to log out and back in for group changes to take effect\033[0m"
}
# Function to install Docker Compose
install_docker_compose() {
echo -e "\033[33mInstalling Docker Compose...\033[0m"
# Download Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# Make it executable
sudo chmod +x /usr/local/bin/docker-compose
# Create symbolic link
sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose
echo -e "\033[32m✓ Docker Compose installed successfully\033[0m"
}
# Check if Docker is installed
if ! command -v docker &> /dev/null; then
echo -e "\033[31mDocker is not installed\033[0m"
install_docker
else
echo -e "\033[32m✓ Docker is already installed\033[0m"
fi
# Check if Docker Compose is installed
if ! command -v docker-compose &> /dev/null; then
echo -e "\033[31mDocker Compose is not installed\033[0m"
install_docker_compose
else
echo -e "\033[32m✓ Docker Compose is already installed\033[0m"
fi
# Make scripts executable
echo -e "\033[33mMaking scripts executable...\033[0m"
chmod +x *.sh
# Test Docker installation
echo -e "\033[33mTesting Docker installation...\033[0m"
if sudo docker run hello-world >/dev/null 2>&1; then
echo -e "\033[32m✓ Docker is working correctly\033[0m"
else
echo -e "\033[31m✗ Docker test failed\033[0m"
echo -e "\033[33mYou may need to log out and back in, or restart the system\033[0m"
fi
echo -e "\n\033[32mDependencies installation completed!\033[0m"
echo -e "\033[33mTo start the BGP server, run: ./start-bgp-server.sh\033[0m"
+63
View File
@@ -0,0 +1,63 @@
#!/bin/bash
# Quick run script for BGP container
# Simple one-command BGP server launcher
echo -e "\033[32m🚀 Quick BGP Server Launcher\033[0m"
# Check if required files exist
if [ ! -f "frr.conf" ]; then
echo -e "\033[31mError: frr.conf not found in current directory\033[0m"
exit 1
fi
if [ ! -f "prefixes.txt" ]; then
echo -e "\033[31mError: prefixes.txt not found in current directory\033[0m"
exit 1
fi
# Stop existing container if running
docker stop bgp-server 2>/dev/null || true
docker rm bgp-server 2>/dev/null || true
# Pull latest image
echo -e "\033[33m📥 Pulling FRRouting image...\033[0m"
docker pull quay.io/frrouting/frr:latest
# Run container
echo -e "\033[33m🚀 Starting BGP server...\033[0m"
docker run -d \
--name bgp-server \
--hostname bgp-server \
--privileged \
--network host \
-v "$(pwd)/frr.conf:/etc/frr/frr.conf:ro" \
-v "$(pwd)/prefixes.txt:/etc/frr/prefixes.txt:ro" \
-e FRR_USER=frr \
-e FRR_VTYSH_PASSWORD=zebra \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
--security-opt seccomp=unconfined \
--restart unless-stopped \
quay.io/frrouting/frr:latest \
/usr/lib/frr/frrinit.sh start
# Wait for startup
sleep 5
# Show status
echo -e "\033[36m📊 Container Status:\033[0m"
docker ps --filter "name=bgp-server" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# Show BGP status
echo -e "\n\033[36m🌐 BGP Status:\033[0m"
if docker exec bgp-server vtysh -c "show ip bgp summary" 2>/dev/null; then
echo -e "\n\033[32m✅ BGP Server is running successfully!\033[0m"
else
echo -e "\n\033[33m⚠️ BGP daemon is starting up...\033[0m"
fi
echo -e "\n\033[33m🔧 Useful commands:\033[0m"
echo -e " Connect to vtysh: docker exec -it bgp-server vtysh"
echo -e " View logs: docker logs bgp-server"
echo -e " Stop server: docker stop bgp-server"
echo -e " Check status: docker ps | grep bgp-server"
+21
View File
@@ -0,0 +1,21 @@
#!/bin/bash
# Quick stop script for BGP container
# Simple one-command BGP server stopper
echo -e "\033[33m🛑 Quick BGP Server Stopper\033[0m"
# Check if container is running
if docker ps -q -f name=bgp-server | grep -q .; then
echo -e "\033[33m⏹️ Stopping BGP server...\033[0m"
docker stop bgp-server
docker rm bgp-server
echo -e "\033[32m✅ BGP Server stopped successfully!\033[0m"
else
echo -e "\033[31m❌ BGP Server is not running\033[0m"
fi
# Show remaining containers
echo -e "\n\033[36m📊 Remaining containers:\033[0m"
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo -e "\n\033[33m🚀 To start again: ./quick-run.sh\033[0m"
+148
View File
@@ -0,0 +1,148 @@
#!/bin/bash
# Ready-to-use Docker container script for BGP server
# BGP Container Runner Script
CONTAINER_NAME="bgp-server"
IMAGE_NAME="quay.io/frrouting/frr:latest"
BGP_PORT="179"
VTYSH_PORT="2601"
CONFIG_DIR="$(pwd)"
echo -e "\033[36m=== BGP Server Container Runner ===\033[0m"
# Function to check if Docker is running
check_docker() {
if ! docker version >/dev/null 2>&1; then
echo -e "\033[31mError: Docker is not running. Please start Docker first.\033[0m"
exit 1
fi
echo -e "\033[32m✓ Docker is running\033[0m"
}
# Function to stop existing container
stop_container() {
if docker ps -q -f name=$CONTAINER_NAME | grep -q .; then
echo -e "\033[33mStopping existing container...\033[0m"
docker stop $CONTAINER_NAME
docker rm $CONTAINER_NAME
fi
}
# Function to pull image
pull_image() {
echo -e "\033[33mPulling FRRouting image...\033[0m"
docker pull $IMAGE_NAME
}
# Function to create and run container
run_container() {
echo -e "\033[33mStarting BGP container...\033[0m"
docker run -d \
--name $CONTAINER_NAME \
--hostname $CONTAINER_NAME \
--privileged \
--network host \
-v "$CONFIG_DIR/frr.conf:/etc/frr/frr.conf:ro" \
-v "$CONFIG_DIR/prefixes.txt:/etc/frr/prefixes.txt:ro" \
-e FRR_USER=frr \
-e FRR_VTYSH_PASSWORD=zebra \
--cap-add=NET_ADMIN \
--cap-add=SYS_ADMIN \
--security-opt seccomp=unconfined \
--restart unless-stopped \
$IMAGE_NAME \
/usr/lib/frr/frrinit.sh start
}
# Function to check container status
check_status() {
echo -e "\033[36mContainer Status:\033[0m"
docker ps --filter "name=$CONTAINER_NAME" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo -e "\n\033[36mNetwork Ports:\033[0m"
if netstat -tuln 2>/dev/null | grep -q ":179 "; then
echo -e "\033[32m✓ BGP port 179 is listening\033[0m"
else
echo -e "\033[31m✗ BGP port 179 is not listening\033[0m"
fi
if netstat -tuln 2>/dev/null | grep -q ":2601 "; then
echo -e "\033[32m✓ vtysh port 2601 is listening\033[0m"
else
echo -e "\033[31m✗ vtysh port 2601 is not listening\033[0m"
fi
}
# Function to show logs
show_logs() {
echo -e "\n\033[36mContainer Logs:\033[0m"
docker logs $CONTAINER_NAME
}
# Function to show usage
show_usage() {
echo -e "\033[33mUsage:\033[0m"
echo -e " $0 [start|stop|restart|status|logs|help]"
echo -e ""
echo -e "\033[33mCommands:\033[0m"
echo -e " start - Start BGP container"
echo -e " stop - Stop BGP container"
echo -e " restart - Restart BGP container"
echo -e " status - Show container status"
echo -e " logs - Show container logs"
echo -e " help - Show this help"
echo -e ""
echo -e "\033[33mExamples:\033[0m"
echo -e " $0 start"
echo -e " $0 status"
echo -e " $0 logs"
}
# Main script logic
case "${1:-start}" in
start)
check_docker
stop_container
pull_image
run_container
sleep 3
check_status
show_logs
echo -e "\n\033[32mBGP Server is running!\033[0m"
echo -e "\033[33mTo connect to vtysh: docker exec -it $CONTAINER_NAME vtysh\033[0m"
echo -e "\033[33mTo view logs: $0 logs\033[0m"
echo -e "\033[33mTo stop: $0 stop\033[0m"
;;
stop)
echo -e "\033[33mStopping BGP container...\033[0m"
docker stop $CONTAINER_NAME 2>/dev/null || true
docker rm $CONTAINER_NAME 2>/dev/null || true
echo -e "\033[32mBGP container stopped\033[0m"
;;
restart)
echo -e "\033[33mRestarting BGP container...\033[0m"
$0 stop
sleep 2
$0 start
;;
status)
check_docker
check_status
;;
logs)
if docker ps -q -f name=$CONTAINER_NAME | grep -q .; then
show_logs
else
echo -e "\033[31mContainer is not running\033[0m"
fi
;;
help|--help|-h)
show_usage
;;
*)
echo -e "\033[31mUnknown command: $1\033[0m"
show_usage
exit 1
;;
esac
-49
View File
@@ -1,49 +0,0 @@
# PowerShell script to start BGP server
# BGP Server Startup Script
Write-Host "Starting BGP Server with FRRouting..." -ForegroundColor Green
# Check if Docker is running
try {
docker version | Out-Null
Write-Host "Docker is running" -ForegroundColor Green
} catch {
Write-Host "Error: Docker is not running. Please start Docker Desktop first." -ForegroundColor Red
exit 1
}
# Check if docker-compose is available
try {
docker-compose --version | Out-Null
Write-Host "Docker Compose is available" -ForegroundColor Green
} catch {
Write-Host "Error: Docker Compose is not available. Please install Docker Compose." -ForegroundColor Red
exit 1
}
# Stop any existing containers
Write-Host "Stopping any existing BGP containers..." -ForegroundColor Yellow
docker-compose down
# Start the BGP server
Write-Host "Starting BGP server..." -ForegroundColor Yellow
docker-compose up -d
# Wait for container to start
Start-Sleep -Seconds 5
# Check container status
$containerStatus = docker ps --filter "name=bgp-server" --format "table {{.Names}}\t{{.Status}}"
Write-Host "Container status:" -ForegroundColor Cyan
Write-Host $containerStatus
# Show logs
Write-Host "`nBGP Server logs:" -ForegroundColor Cyan
docker-compose logs bgp-server
Write-Host "`nBGP Server is running!" -ForegroundColor Green
Write-Host "BGP port: 179" -ForegroundColor White
Write-Host "vtysh port: 2601" -ForegroundColor White
Write-Host "`nTo connect to vtysh: docker exec -it bgp-server vtysh" -ForegroundColor Yellow
Write-Host "To view logs: docker-compose logs -f bgp-server" -ForegroundColor Yellow
Write-Host "To stop server: docker-compose down" -ForegroundColor Yellow
+45
View File
@@ -0,0 +1,45 @@
#!/bin/bash
# Bash script to start BGP server on Linux
# BGP Server Startup Script
echo -e "\033[32mStarting BGP Server with FRRouting...\033[0m"
# Check if Docker is running
if ! docker version >/dev/null 2>&1; then
echo -e "\033[31mError: Docker is not running. Please start Docker first.\033[0m"
exit 1
fi
echo -e "\033[32m✓ Docker is running\033[0m"
# Check if docker-compose is available
if ! docker-compose --version >/dev/null 2>&1; then
echo -e "\033[31mError: Docker Compose is not available. Please install Docker Compose.\033[0m"
exit 1
fi
echo -e "\033[32m✓ Docker Compose is available\033[0m"
# Stop any existing containers
echo -e "\033[33mStopping any existing BGP containers...\033[0m"
docker-compose down
# Start the BGP server
echo -e "\033[33mStarting BGP server...\033[0m"
docker-compose up -d
# Wait for container to start
sleep 5
# Check container status
echo -e "\033[36mContainer status:\033[0m"
docker ps --filter "name=bgp-server" --format "table {{.Names}}\t{{.Status}}"
# Show logs
echo -e "\n\033[36mBGP Server logs:\033[0m"
docker-compose logs bgp-server
echo -e "\n\033[32mBGP Server is running!\033[0m"
echo -e "\033[37mBGP port: 179\033[0m"
echo -e "\033[37mvtysh port: 2601\033[0m"
echo -e "\n\033[33mTo connect to vtysh: docker exec -it bgp-server vtysh\033[0m"
echo -e "\033[33mTo view logs: docker-compose logs -f bgp-server\033[0m"
echo -e "\033[33mTo stop server: docker-compose down\033[0m"
-28
View File
@@ -1,28 +0,0 @@
# PowerShell script to stop BGP server
# BGP Server Stop Script
Write-Host "Stopping BGP Server..." -ForegroundColor Yellow
# Stop the BGP server
Write-Host "Stopping BGP containers..." -ForegroundColor Yellow
docker-compose down
# Remove volumes (optional - uncomment if you want to clean up completely)
# Write-Host "Removing volumes..." -ForegroundColor Yellow
# docker-compose down -v
# Check if containers are stopped
$runningContainers = docker ps --filter "name=bgp-server" --format "{{.Names}}"
if ($runningContainers) {
Write-Host "Warning: Some BGP containers are still running:" -ForegroundColor Red
Write-Host $runningContainers -ForegroundColor Red
} else {
Write-Host "BGP Server stopped successfully!" -ForegroundColor Green
}
# Show stopped containers
$stoppedContainers = docker ps -a --filter "name=bgp-server" --format "table {{.Names}}\t{{.Status}}"
Write-Host "`nContainer status:" -ForegroundColor Cyan
Write-Host $stoppedContainers
Write-Host "`nTo start the server again, run: .\start-bgp-server.ps1" -ForegroundColor Yellow
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
# Bash script to stop BGP server on Linux
# BGP Server Stop Script
echo -e "\033[33mStopping BGP Server...\033[0m"
# Stop the BGP server
echo -e "\033[33mStopping BGP containers...\033[0m"
docker-compose down
# Remove volumes (optional - uncomment if you want to clean up completely)
# echo -e "\033[33mRemoving volumes...\033[0m"
# docker-compose down -v
# Check if containers are stopped
running_containers=$(docker ps --filter "name=bgp-server" --format "{{.Names}}")
if [ -n "$running_containers" ]; then
echo -e "\033[31mWarning: Some BGP containers are still running:\033[0m"
echo -e "\033[31m$running_containers\033[0m"
else
echo -e "\033[32mBGP Server stopped successfully!\033[0m"
fi
# Show stopped containers
echo -e "\n\033[36mContainer status:\033[0m"
docker ps -a --filter "name=bgp-server" --format "table {{.Names}}\t{{.Status}}"
echo -e "\n\033[33mTo start the server again, run: ./start-bgp-server.sh\033[0m"
-40
View File
@@ -1,40 +0,0 @@
# PowerShell script to update BGP prefixes
# BGP Prefixes Update Script
param(
[string]$PrefixesFile = "prefixes.txt"
)
Write-Host "Updating BGP Prefixes..." -ForegroundColor Cyan
# Check if container is running
$containerStatus = docker ps --filter "name=bgp-server" --format "{{.Names}}"
if (-not $containerStatus) {
Write-Host "Error: BGP container is not running. Please start it first." -ForegroundColor Red
Write-Host "Run: .\start-bgp-server.ps1" -ForegroundColor Yellow
exit 1
}
# Check if prefixes file exists
if (-not (Test-Path $PrefixesFile)) {
Write-Host "Error: Prefixes file '$PrefixesFile' not found." -ForegroundColor Red
exit 1
}
# Copy new prefixes file to container
Write-Host "Copying new prefixes file to container..." -ForegroundColor Yellow
docker cp $PrefixesFile bgp-server:/etc/frr/prefixes.txt
# Reload BGP configuration
Write-Host "Reloading BGP configuration..." -ForegroundColor Yellow
docker exec bgp-server vtysh -c "configure terminal" -c "router bgp 65000" -c "clear ip bgp *" -c "end"
# Wait a moment for BGP to stabilize
Start-Sleep -Seconds 3
# Show updated BGP table
Write-Host "`nUpdated BGP table:" -ForegroundColor Green
docker exec bgp-server vtysh -c "show ip bgp"
Write-Host "`nPrefixes updated successfully!" -ForegroundColor Green
Write-Host "To view current prefixes: docker exec -it bgp-server vtysh -c 'show ip bgp'" -ForegroundColor Yellow
+39
View File
@@ -0,0 +1,39 @@
#!/bin/bash
# Bash script to update BGP prefixes on Linux
# BGP Prefixes Update Script
PREFIXES_FILE=${1:-"prefixes.txt"}
echo -e "\033[36mUpdating BGP Prefixes...\033[0m"
# Check if container is running
container_status=$(docker ps --filter "name=bgp-server" --format "{{.Names}}")
if [ -z "$container_status" ]; then
echo -e "\033[31mError: BGP container is not running. Please start it first.\033[0m"
echo -e "\033[33mRun: ./start-bgp-server.sh\033[0m"
exit 1
fi
# Check if prefixes file exists
if [ ! -f "$PREFIXES_FILE" ]; then
echo -e "\033[31mError: Prefixes file '$PREFIXES_FILE' not found.\033[0m"
exit 1
fi
# Copy new prefixes file to container
echo -e "\033[33mCopying new prefixes file to container...\033[0m"
docker cp "$PREFIXES_FILE" bgp-server:/etc/frr/prefixes.txt
# Reload BGP configuration
echo -e "\033[33mReloading BGP configuration...\033[0m"
docker exec bgp-server vtysh -c "configure terminal" -c "router bgp 65000" -c "clear ip bgp *" -c "end"
# Wait a moment for BGP to stabilize
sleep 3
# Show updated BGP table
echo -e "\n\033[32mUpdated BGP table:\033[0m"
docker exec bgp-server vtysh -c "show ip bgp"
echo -e "\n\033[32mPrefixes updated successfully!\033[0m"
echo -e "\033[33mTo view current prefixes: docker exec -it bgp-server vtysh -c 'show ip bgp'\033[0m"