#!/usr/bin/env bash # 1. Prüfen, ob das Skript als root ausgeführt wird if [ "$EUID" -ne 0 ]; then echo "Fehler: Bitte führe dieses Skript als root (oder mit sudo) aus." exit 1 fi echo "--- Starte Netmaker NAT-Setup ---" echo "" # 2. Automatisches Erkennen des primären Interfaces (über die Default Route) DETECTED_IFACE=$(ip route show default | awk '/default/ {print $5}' | head -n 1) # Alle verfügbaren Interfaces auflisten (ohne das lokale Loopback 'lo') echo "Verfügbare Netzwerk-Interfaces auf diesem System:" ip -o link show | awk -F': ' '{print $2}' | grep -v -w "lo" | while read -r iface; do echo " - $iface" done echo "" # 3. Benutzerabfrage mit dem erkannten Standardwert read -p "Welches Interface soll für das Masquerading (NAT) genutzt werden? [$DETECTED_IFACE]: " SELECTED_IFACE # Wenn der Benutzer einfach nur Enter drückt, nehmen wir den erkannten Wert if [ -z "$SELECTED_IFACE" ]; then SELECTED_IFACE=$DETECTED_IFACE fi # Kurzer Sicherheits-Check: Existiert das Interface überhaupt? if ! ip link show "$SELECTED_IFACE" > /dev/null 2>&1; then echo "Fehler: Das Interface '$SELECTED_IFACE' existiert nicht auf diesem System! Abbruch." exit 1 fi echo "" echo "Okay, nutze Interface: $SELECTED_IFACE" echo "" # 4. Backup der alten nftables-Konfiguration anlegen if [ -f /etc/nftables.conf ]; then BACKUP_FILE="/etc/nftables.conf.bak_$(date +%F_%H-%M-%S)" cp /etc/nftables.conf "$BACKUP_FILE" echo "Backup der alten nftables.conf unter $BACKUP_FILE gespeichert." fi # 5. Neue Basiskonfiguration mit dem gewählten Interface schreiben # WICHTIG: Das EOF darf hier NICHT in Anführungszeichen stehen, # damit die Variable $SELECTED_IFACE in den Text geschrieben wird! echo "Schreibe neue nftables.conf..." cat << EOF > /etc/nftables.conf #!/usr/sbin/nft -f flush ruleset table inet nat { chain POSTROUTING { type nat hook postrouting priority srcnat; policy accept; oifname "$SELECTED_IFACE" masquerade } } EOF # 6. Dienste aktivieren und neustarten echo "Aktiviere und starte nftables-Dienst..." systemctl enable nftables systemctl restart nftables echo "Starte netclient neu..." systemctl restart netclient echo "" echo "--- Setup erfolgreich abgeschlossen! ---" echo "Die Masquerade-Regel für '$SELECTED_IFACE' ist nun dauerhaft aktiv."