From 8f53e991887cfe66dcfbcf5ac193814f0810ed46 Mon Sep 17 00:00:00 2001 From: Denis Shatskiy Date: Fri, 11 Jul 2025 18:46:16 +0700 Subject: [PATCH] update --- QUICK_START_LINUX.md | 123 +++++++++++++++++++++++++++++++++ README.md | 44 +++++++----- check-bgp-status.ps1 | 67 ------------------ check-bgp-status.sh | 59 ++++++++++++++++ install-dependencies.sh | 106 ++++++++++++++++++++++++++++ quick-run.sh | 63 +++++++++++++++++ quick-stop.sh | 21 ++++++ run-bgp-container.sh | 148 ++++++++++++++++++++++++++++++++++++++++ start-bgp-server.ps1 | 49 ------------- start-bgp-server.sh | 45 ++++++++++++ stop-bgp-server.ps1 | 28 -------- stop-bgp-server.sh | 28 ++++++++ update-prefixes.ps1 | 40 ----------- update-prefixes.sh | 39 +++++++++++ 14 files changed, 660 insertions(+), 200 deletions(-) create mode 100644 QUICK_START_LINUX.md delete mode 100644 check-bgp-status.ps1 create mode 100644 check-bgp-status.sh create mode 100644 install-dependencies.sh create mode 100644 quick-run.sh create mode 100644 quick-stop.sh create mode 100644 run-bgp-container.sh delete mode 100644 start-bgp-server.ps1 create mode 100644 start-bgp-server.sh delete mode 100644 stop-bgp-server.ps1 create mode 100644 stop-bgp-server.sh delete mode 100644 update-prefixes.ps1 create mode 100644 update-prefixes.sh diff --git a/QUICK_START_LINUX.md b/QUICK_START_LINUX.md new file mode 100644 index 0000000..691a6aa --- /dev/null +++ b/QUICK_START_LINUX.md @@ -0,0 +1,123 @@ +# Быстрый старт BGP сервера на Linux + +## Минимальная установка + +### Вариант 1: С Docker Compose +```bash +# 1. Клонируйте или скачайте проект +git clone +cd bgp-server + +# 2. Установите зависимости +./install-dependencies.sh + +# 3. Запустите BGP сервер +./start-bgp-server.sh +``` + +### Вариант 2: Только Docker (рекомендуется) +```bash +# 1. Клонируйте или скачайте проект +git clone +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 remote-as 65000 + neighbor send-community +``` + +## Troubleshooting + +```bash +# Проверить, что Docker работает +docker version + +# Проверить, что контейнер запущен +docker ps + +# Проверить логи +docker-compose logs bgp-server + +# Проверить сетевые порты +netstat -tuln | grep :179 +``` \ No newline at end of file diff --git a/README.md b/README.md index f06a42e..fb1e58f 100644 --- a/README.md +++ b/README.md @@ -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 ``` diff --git a/check-bgp-status.ps1 b/check-bgp-status.ps1 deleted file mode 100644 index da942ff..0000000 --- a/check-bgp-status.ps1 +++ /dev/null @@ -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 \ No newline at end of file diff --git a/check-bgp-status.sh b/check-bgp-status.sh new file mode 100644 index 0000000..75d8251 --- /dev/null +++ b/check-bgp-status.sh @@ -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" \ No newline at end of file diff --git a/install-dependencies.sh b/install-dependencies.sh new file mode 100644 index 0000000..e2ad195 --- /dev/null +++ b/install-dependencies.sh @@ -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" \ No newline at end of file diff --git a/quick-run.sh b/quick-run.sh new file mode 100644 index 0000000..94c57f7 --- /dev/null +++ b/quick-run.sh @@ -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" \ No newline at end of file diff --git a/quick-stop.sh b/quick-stop.sh new file mode 100644 index 0000000..0a18e02 --- /dev/null +++ b/quick-stop.sh @@ -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" \ No newline at end of file diff --git a/run-bgp-container.sh b/run-bgp-container.sh new file mode 100644 index 0000000..9752867 --- /dev/null +++ b/run-bgp-container.sh @@ -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 \ No newline at end of file diff --git a/start-bgp-server.ps1 b/start-bgp-server.ps1 deleted file mode 100644 index 7073182..0000000 --- a/start-bgp-server.ps1 +++ /dev/null @@ -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 \ No newline at end of file diff --git a/start-bgp-server.sh b/start-bgp-server.sh new file mode 100644 index 0000000..54f519f --- /dev/null +++ b/start-bgp-server.sh @@ -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" \ No newline at end of file diff --git a/stop-bgp-server.ps1 b/stop-bgp-server.ps1 deleted file mode 100644 index 18961ee..0000000 --- a/stop-bgp-server.ps1 +++ /dev/null @@ -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 \ No newline at end of file diff --git a/stop-bgp-server.sh b/stop-bgp-server.sh new file mode 100644 index 0000000..3e9c842 --- /dev/null +++ b/stop-bgp-server.sh @@ -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" \ No newline at end of file diff --git a/update-prefixes.ps1 b/update-prefixes.ps1 deleted file mode 100644 index 1fe665e..0000000 --- a/update-prefixes.ps1 +++ /dev/null @@ -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 \ No newline at end of file diff --git a/update-prefixes.sh b/update-prefixes.sh new file mode 100644 index 0000000..71dfb66 --- /dev/null +++ b/update-prefixes.sh @@ -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" \ No newline at end of file