From ecd4a7c17533314da370a088588dd13558c6b992 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Fri, 10 Jul 2026 17:12:20 +0200 Subject: [PATCH] set-nm-node.sh aktualisiert --- set-nm-node.sh | 46 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/set-nm-node.sh b/set-nm-node.sh index 8672f06..4863d25 100644 --- a/set-nm-node.sh +++ b/set-nm-node.sh @@ -7,17 +7,49 @@ if [ "$EUID" -ne 0 ]; then fi echo "--- Starte Netmaker NAT-Setup ---" +echo "" -# 2. Backup der alten nftables-Konfiguration anlegen (falls vorhanden) +# 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 -# 3. Neue Basiskonfiguration mit eth0 Masquerading schreiben +# 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 +cat << EOF > /etc/nftables.conf #!/usr/sbin/nft -f flush ruleset @@ -25,19 +57,19 @@ flush ruleset table inet nat { chain POSTROUTING { type nat hook postrouting priority srcnat; policy accept; - oifname "eth0" masquerade + oifname "$SELECTED_IFACE" masquerade } } EOF -# 4. nftables aktivieren und neu starten +# 6. Dienste aktivieren und neustarten echo "Aktiviere und starte nftables-Dienst..." systemctl enable nftables systemctl restart nftables -# 5. netclient neu starten, damit er seine dynamischen Regeln einfügt echo "Starte netclient neu..." systemctl restart netclient +echo "" echo "--- Setup erfolgreich abgeschlossen! ---" -echo "Die Masquerade-Regel für eth0 ist nun dauerhaft aktiv." \ No newline at end of file +echo "Die Masquerade-Regel für '$SELECTED_IFACE' ist nun dauerhaft aktiv." \ No newline at end of file