Die iptables-NAT-Tabelle ändert die Ziel-IP beim PREROUTING nicht?

Die iptables-NAT-Tabelle ändert die Ziel-IP beim PREROUTING nicht?

OK, also führe ich bei einer Standardinstallation von Ubuntu 14.04.2 die folgenden Befehle aus:

sudo bash -c 'echo 1 > "/proc/sys/net/ipv4/ip_forward"'
sudo iptables -t nat -A PREROUTING -d 192.168.100.1 -j DNAT --to-destination 10.196.106.230
sudo tcpdump -i wlan0 icmp and icmp[icmptype]=icmp-echo -n

​ Dann pinge ich 192.168.100.1von einem anderen Terminal aus. Aber ich sehe tcpdumpFolgendes:

01:46:37.536354 IP 10.196.100.76 > 192.168.100.1: ICMP echo request, id 6635, seq 1, length 64

Wenn ich jedoch die NAT-Tabelle leere und ausführedieser Befehlstattdessen:

sudo iptables -t nat -A OUTPUT -d 192.168.100.1 -j DNAT --to-destination 10.196.106.230

Dann tcpdumpergibt sich folgendes:

01:46:53.168639 IP 10.196.100.76 > 10.196.106.230: ICMP echo request, id 6638, seq 1, length 64

(Der Ping ist erfolgreich und von der anderen Maschine kommt ein Pong zurück.)

Von demzahlreiche Tutorialsonline würde ich erwarten, dass die Ziel-IP auch in der PREROUTING-Kette geändert wird, oder? Oder übersehe ich etwas?

Antwort1

Die PREROUTING-Kette wird bei Paketen, die von lokalen Prozessen generiert werden, nicht ausgewertet.

Ihre erste Regel funktioniert bei Paketen, die über eine Netzwerkschnittstelle eingehen (versuchen Sie, von einem anderen Computer aus einen Ping auszuführen).

Vielleicht kann dieses Bild verdeutlichen, wie der Paketfluss untersucht wird:Paketfilterung in iptables

Quelle:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security_Guide/sect-Security_Guide-IPTables.html

verwandte Informationen