set-nm-node.sh aktualisiert

This commit is contained in:
2026-07-10 17:12:20 +02:00
parent 58461d1216
commit ecd4a7c175
+39 -7
View File
@@ -7,17 +7,49 @@ if [ "$EUID" -ne 0 ]; then
fi fi
echo "--- Starte Netmaker NAT-Setup ---" 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 if [ -f /etc/nftables.conf ]; then
BACKUP_FILE="/etc/nftables.conf.bak_$(date +%F_%H-%M-%S)" BACKUP_FILE="/etc/nftables.conf.bak_$(date +%F_%H-%M-%S)"
cp /etc/nftables.conf "$BACKUP_FILE" cp /etc/nftables.conf "$BACKUP_FILE"
echo "Backup der alten nftables.conf unter $BACKUP_FILE gespeichert." echo "Backup der alten nftables.conf unter $BACKUP_FILE gespeichert."
fi 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..." echo "Schreibe neue nftables.conf..."
cat << 'EOF' > /etc/nftables.conf cat << EOF > /etc/nftables.conf
#!/usr/sbin/nft -f #!/usr/sbin/nft -f
flush ruleset flush ruleset
@@ -25,19 +57,19 @@ flush ruleset
table inet nat { table inet nat {
chain POSTROUTING { chain POSTROUTING {
type nat hook postrouting priority srcnat; policy accept; type nat hook postrouting priority srcnat; policy accept;
oifname "eth0" masquerade oifname "$SELECTED_IFACE" masquerade
} }
} }
EOF EOF
# 4. nftables aktivieren und neu starten # 6. Dienste aktivieren und neustarten
echo "Aktiviere und starte nftables-Dienst..." echo "Aktiviere und starte nftables-Dienst..."
systemctl enable nftables systemctl enable nftables
systemctl restart nftables systemctl restart nftables
# 5. netclient neu starten, damit er seine dynamischen Regeln einfügt
echo "Starte netclient neu..." echo "Starte netclient neu..."
systemctl restart netclient systemctl restart netclient
echo ""
echo "--- Setup erfolgreich abgeschlossen! ---" echo "--- Setup erfolgreich abgeschlossen! ---"
echo "Die Masquerade-Regel für eth0 ist nun dauerhaft aktiv." echo "Die Masquerade-Regel für '$SELECTED_IFACE' ist nun dauerhaft aktiv."