set-nm-node.sh aktualisiert
This commit is contained in:
+39
-7
@@ -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."
|
||||
echo "Die Masquerade-Regel für '$SELECTED_IFACE' ist nun dauerhaft aktiv."
|
||||
Reference in New Issue
Block a user