Add simplified VPN manager script for Proxmox Colocation only
This commit is contained in:
parent
596c5033a0
commit
7d079f9b37
1 changed files with 184 additions and 0 deletions
184
vpn-manager.command
Executable file
184
vpn-manager.command
Executable file
|
|
@ -0,0 +1,184 @@
|
|||
#!/bin/bash
|
||||
|
||||
# Get the directory where this script is located
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
# VPN Configuration
|
||||
VPN_CONFIG="$HOME/wg1.conf"
|
||||
VPN_NAME="Proxmox Colocation VPN"
|
||||
VPN_IP="10.6.0.3"
|
||||
VPN_NETWORK="10.6.0.0/24, 10.4.0.0/24"
|
||||
|
||||
# Function to get active VPN interface
|
||||
get_active_vpn() {
|
||||
sudo wg show interfaces 2>/dev/null
|
||||
}
|
||||
|
||||
# Function to show detailed status
|
||||
show_status() {
|
||||
echo "🔍 Checking VPN connection..."
|
||||
echo ""
|
||||
|
||||
local active_interface=$(get_active_vpn)
|
||||
|
||||
if [ -z "$active_interface" ]; then
|
||||
echo "🔴 VPN not connected"
|
||||
return
|
||||
fi
|
||||
|
||||
echo "🟢 VPN Connected:"
|
||||
echo ""
|
||||
sudo wg show
|
||||
echo ""
|
||||
|
||||
# Show routing information
|
||||
echo "📡 Network Routes:"
|
||||
netstat -rn | grep -E "10\.(4|6)\.0" | awk '{printf " %-20s -> %s\n", $1, $NF}'
|
||||
}
|
||||
|
||||
# Function to connect VPN
|
||||
connect_vpn() {
|
||||
if [ ! -f "$VPN_CONFIG" ]; then
|
||||
echo "❌ Configuration file not found: $VPN_CONFIG"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "🔄 Connecting to $VPN_NAME..."
|
||||
result=$(sudo wg-quick up "$VPN_CONFIG" 2>&1)
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Connected Successfully!"
|
||||
echo " VPN IP: $VPN_IP"
|
||||
echo " Networks: $VPN_NETWORK"
|
||||
sleep 1
|
||||
return 0
|
||||
else
|
||||
if echo "$result" | grep -q "already exists"; then
|
||||
echo "ℹ️ VPN is already connected"
|
||||
return 0
|
||||
else
|
||||
echo "❌ Failed to connect:"
|
||||
echo "$result" | head -5
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to disconnect VPN
|
||||
disconnect_vpn() {
|
||||
if [ ! -f "$VPN_CONFIG" ]; then
|
||||
echo "❌ Configuration file not found: $VPN_CONFIG"
|
||||
return 1
|
||||
fi
|
||||
|
||||
echo "🔄 Disconnecting $VPN_NAME..."
|
||||
result=$(sudo wg-quick down "$VPN_CONFIG" 2>&1)
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✅ Disconnected Successfully!"
|
||||
return 0
|
||||
else
|
||||
if echo "$result" | grep -q "is not a WireGuard interface"; then
|
||||
echo "ℹ️ VPN is not connected"
|
||||
return 0
|
||||
else
|
||||
echo "❌ Failed to disconnect:"
|
||||
echo "$result" | head -5
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to test connectivity
|
||||
test_connectivity() {
|
||||
local active_interface=$(get_active_vpn)
|
||||
|
||||
if [ -z "$active_interface" ]; then
|
||||
echo "❌ VPN not connected. Please connect first."
|
||||
return
|
||||
fi
|
||||
|
||||
echo "🔍 Testing connectivity..."
|
||||
echo ""
|
||||
|
||||
# Test internal network (10.4.0.0/24)
|
||||
echo "Testing Internal Network (10.4.0.0/24):"
|
||||
if ping -c 1 -W 2 10.4.0.1 >/dev/null 2>&1; then
|
||||
echo " ✅ Gateway (10.4.0.1): Reachable"
|
||||
else
|
||||
echo " ⚠️ Gateway (10.4.0.1): Not reachable"
|
||||
fi
|
||||
|
||||
if ping -c 1 -W 2 10.4.0.148 >/dev/null 2>&1; then
|
||||
echo " ✅ Proxmox Host (10.4.0.148): Reachable"
|
||||
else
|
||||
echo " ⚠️ Proxmox Host (10.4.0.148): Not reachable"
|
||||
fi
|
||||
|
||||
if ping -c 1 -W 2 10.4.0.205 >/dev/null 2>&1; then
|
||||
echo " ✅ DeafGain Server (10.4.0.205): Reachable"
|
||||
else
|
||||
echo " ⚠️ DeafGain Server (10.4.0.205): Not reachable"
|
||||
fi
|
||||
}
|
||||
|
||||
# Clear screen and show header
|
||||
clear
|
||||
echo "=================================================="
|
||||
echo "🔐 WireGuard VPN Manager - Proxmox Colocation"
|
||||
echo "=================================================="
|
||||
echo ""
|
||||
|
||||
# Main menu
|
||||
while true; do
|
||||
# Check VPN status
|
||||
active_interface=$(get_active_vpn)
|
||||
|
||||
if [ -n "$active_interface" ]; then
|
||||
echo "🟢 Status: VPN Connected"
|
||||
else
|
||||
echo "🔴 Status: VPN Disconnected"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
echo "Options:"
|
||||
echo "1) Connect to VPN"
|
||||
echo "2) Disconnect from VPN"
|
||||
echo "3) Show Detailed Status"
|
||||
echo "4) Test Connectivity"
|
||||
echo "5) Quit"
|
||||
echo ""
|
||||
read -p "Enter your choice (1-5): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
echo ""
|
||||
connect_vpn
|
||||
;;
|
||||
2)
|
||||
echo ""
|
||||
disconnect_vpn
|
||||
;;
|
||||
3)
|
||||
echo ""
|
||||
show_status
|
||||
;;
|
||||
4)
|
||||
echo ""
|
||||
test_connectivity
|
||||
;;
|
||||
5)
|
||||
echo ""
|
||||
echo "👋 Goodbye!"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo ""
|
||||
echo "❌ Invalid choice. Please enter 1-5."
|
||||
;;
|
||||
esac
|
||||
|
||||
echo ""
|
||||
echo "=================================================="
|
||||
echo ""
|
||||
done
|
||||
Loading…
Add table
Reference in a new issue