Port-Weiterleitung und NAT-Konfiguration: iptables-Anleitung
NAT-Konzepte, DNAT/SNAT-Regeln, Port-Weiterleitung mit iptables und nftables, Masquerading und Anwendungsfälle: Spielserver, Webserver hinter NAT.
Inhaltsverzeichnis
Port-Weiterleitung und NAT-Konfiguration: iptables-Anleitung
Port-Weiterleitung und NAT (Network Address Translation) sind grundlegende Werkzeuge für die Verwaltung von Netzwerkverkehr. Sie verwenden diese Techniken, um Dienste hinter einem Server nach außen zu öffnen, Spielserver einzurichten oder mehrere Dienste über eine einzige IP zu verwalten.
Was ist NAT?
NAT (Network Address Translation) ist eine Netzwerktechnik, die Quell- oder Zieladressen von IP-Paketen ändert. Es gibt zwei Haupttypen:
- SNAT (Source NAT): Ändert die Quell-IP-Adresse — für ausgehenden Verkehr
- DNAT (Destination NAT): Ändert die Ziel-IP-Adresse — für eingehenden Verkehr
- Masquerade: Spezieller SNAT-Typ für dynamische IPs
IP-Weiterleitung aktivieren
# Vorübergehend aktivieren
sudo sysctl -w net.ipv4.ip_forward=1
# Dauerhaft aktivieren
sudo nano /etc/sysctl.conf
# Zeile hinzufügen:
# net.ipv4.ip_forward=1
# Änderungen anwenden
sudo sysctl -p
# Überprüfen
cat /proc/sys/net/ipv4/ip_forward
# Ausgabe: 1
Port-Weiterleitung mit iptables (DNAT)
Grundlegende Port-Weiterleitung
# Externen Port 80 an internen Server weiterleiten
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
# Externen Port 443 an internen Server weiterleiten
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
# An andere Portnummer weiterleiten (extern 8080 → intern 80)
sudo iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
# Weitergeleiteten Verkehr erlauben
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 443 -j ACCEPT
UDP-Port-Weiterleitung
# UDP-Port-Weiterleitung für Spielserver
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -A FORWARD -p udp -d 192.168.1.30 --dport 27015 -j ACCEPT
SNAT und Masquerade
# Masquerade — für dynamische IP
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# SNAT — für statische IP (effizienter)
sudo iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1
Vollständige NAT-Konfiguration
# 1. Bestehende Regeln löschen
sudo iptables -F
sudo iptables -t nat -F
# 2. Standardrichtlinien
sudo iptables -P INPUT DROP
sudo iptables -P FORWARD DROP
sudo iptables -P OUTPUT ACCEPT
# 3. Loopback und bestehende Verbindungen
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# 4. SSH-Zugriff
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 5. Port-Weiterleitungsregeln
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
# 6. Forward-Regeln
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 80 -j ACCEPT
sudo iptables -A FORWARD -p tcp -d 192.168.1.10 --dport 443 -j ACCEPT
sudo iptables -A FORWARD -p udp -d 192.168.1.30 --dport 27015 -j ACCEPT
# 7. Masquerade
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 8. Regeln speichern
sudo apt install iptables-persistent -y
sudo netfilter-persistent save
Port-Weiterleitung mit nftables
#!/usr/sbin/nft -f
flush ruleset
table ip nat {
chain prerouting {
type nat hook prerouting priority -100;
tcp dport 80 dnat to 192.168.1.10:80
tcp dport 443 dnat to 192.168.1.10:443
udp dport 27015 dnat to 192.168.1.30:27015
}
chain postrouting {
type nat hook postrouting priority 100;
oif eth0 masquerade
}
}
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
iif lo accept
ct state established,related accept
tcp dport 22 accept
}
chain forward {
type filter hook forward priority 0; policy drop;
ct state established,related accept
ip daddr 192.168.1.10 tcp dport { 80, 443 } accept
ip daddr 192.168.1.30 udp dport 27015 accept
}
chain output {
type filter hook output priority 0; policy accept;
}
}
Anwendungsfälle
Anwendungsfall 1: Spielserver (CS2, Minecraft)
# CS2-Server
sudo iptables -t nat -A PREROUTING -p udp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -t nat -A PREROUTING -p tcp --dport 27015 -j DNAT --to-destination 192.168.1.30:27015
sudo iptables -A FORWARD -d 192.168.1.30 -p udp --dport 27015 -j ACCEPT
# Minecraft-Server
sudo iptables -t nat -A PREROUTING -p tcp --dport 25565 -j DNAT --to-destination 192.168.1.31:25565
sudo iptables -A FORWARD -d 192.168.1.31 -p tcp --dport 25565 -j ACCEPT
Anwendungsfall 2: Webserver hinter NAT
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.10:443
sudo iptables -A FORWARD -i eth0 -d 192.168.1.10 -p tcp -m multiport --dports 80,443 -j ACCEPT
Fehlerbehebung
# NAT-Tabelle anzeigen
sudo iptables -t nat -L -n -v
# Verbindungsverfolgungstabelle anzeigen
sudo conntrack -L
# Verkehr auf bestimmtem Port überwachen
sudo tcpdump -i eth0 port 80
# IP-Weiterleitung prüfen
cat /proc/sys/net/ipv4/ip_forward
Nach dem Hinzufügen von Port-Weiterleitungsregeln vergessen Sie nicht, sowohl PREROUTING (DNAT) als auch FORWARD-Regeln hinzuzufügen. Nur eine DNAT-Regel hinzuzufügen reicht nicht aus — der Verkehr muss auch in der FORWARD-Kette erlaubt sein.
Fazit
Port-Weiterleitung und NAT sind grundlegende Komponenten der Linux-Netzwerkverwaltung. Durch die korrekte Konfiguration von DNAT-, SNAT- und Masquerade-Regeln mit iptables oder nftables können Sie Spielserver, Webdienste und andere Anwendungen hinter NAT nach außen öffnen.
Verwandte Artikel
Malware & Rootkit-Scan: rkhunter und ClamAV Anleitung
Schützen Sie Ihren Linux-Server vor Malware und Rootkits. rkhunter und ClamAV Installation, Scan-Konfiguration, Ergebnisinterpretation, geplante Scans und Incident-Response-Anleitung.
Fail2Ban Konfiguration: SSH Brute-Force-Schutz Anleitung
Schützen Sie Ihren Server vor SSH-Brute-Force-Angriffen mit Fail2Ban. Installation, jail.local-Konfiguration, Nginx/Apache-Jails, IP-Whitelist, Ban-Überwachung und E-Mail-Benachrichtigungen.
WireGuard VPN-Server einrichten: Schritt-für-Schritt-Anleitung
WireGuard VPN-Server einrichten: Schlüsselgenerierung, Server- und Client-Konfiguration, IP-Weiterleitung, Firewall-Regeln und Windows/Linux/Android-Client-Setup.