Files

75 lines
2.3 KiB
Bash

#!/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."