#!/bin/bash # Prüfen ob das Skript als root ausgeführt wird if [ "$EUID" -ne 0 ]; then echo "Bitte als root ausführen (sudo ./migrate.sh)" exit 1 fi # 1. Abhängigkeiten installieren echo "[1/5] Installiere iptables und wireguard-tools..." apt-get update > /dev/null apt-get install -y iptables wireguard-tools # Prüfen, ob das netmaker Interface existiert if ! ip link show netmaker > /dev/null 2>&1; then echo "Fehler: Interface 'netmaker' nicht gefunden. Ist Netmaker auf diesem Node aktiv?" exit 1 fi # 2. IP-Adresse aus dem Netmaker-Interface extrahieren echo "[2/5] Lese IP-Adresse aus netmaker Interface..." NM_IP=$(ip -4 addr show dev netmaker | grep -oP '(?<=inet\s)\d+(\.\d+){3}/\d+') if [ -z "$NM_IP" ]; then echo "Fehler: Konnte keine IPv4-Adresse auf dem Interface 'netmaker' finden." exit 1 fi echo " Gefundene IP: $NM_IP" # 3. Konfiguration exportieren und anpassen echo "[3/5] Generiere neue wg0.conf..." mkdir -p /etc/wireguard TMP_CONF="/tmp/wg0.conf.tmp" # Aktuellen Status aus dem Kernel dumpen wg showconf netmaker > "$TMP_CONF" # IP und iptables Regeln direkt nach dem [Interface] Block einfügen sed -i "/^\[Interface\]/a Address = $NM_IP\nPostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE\nPostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE" "$TMP_CONF" # 4. Vorschau und Bestätigung echo -e "\n==========================================" echo "VORSCHAU DER NEUEN /etc/wireguard/wg0.conf" echo "==========================================" cat "$TMP_CONF" echo "==========================================" read -p "Sieht die Konfiguration gut aus und soll angewendet werden? (j/N): " confirm if [[ "$confirm" != [jJ]* ]]; then echo "Abbruch durch Benutzer. Temporäre Datei wurde gelöscht, System bleibt unverändert." rm -f "$TMP_CONF" exit 0 fi # 5. Migration durchführen echo "\n[4/5] Migration wird durchgeführt..." mv "$TMP_CONF" /etc/wireguard/wg0.conf chmod 600 /etc/wireguard/wg0.conf echo " Stoppe und deaktiviere Netclient..." systemctl stop netclient systemctl disable netclient echo " Lösche altes Netmaker-Interface aus dem Kernel..." ip link delete netmaker 2>/dev/null echo "[5/5] Starte reines WireGuard (wg0)..." systemctl enable --now wg-quick@wg0 echo "\nMigration erfolgreich abgeschlossen! Der Node läuft jetzt auf Vanilla WireGuard."