set-nm-node.sh aktualisiert
This commit is contained in:
+39
-7
@@ -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."
|
||||||
Reference in New Issue
Block a user