Network Address Translation NAT

Man kann zwei verschiedene Arten von NAT unterscheiden:

  1. SNAT (source address NAT), MASQUERADE als spezielles Beispiel
  2. DNAT (destination address NAT), REDIRECT als spezielles Beispiel
Hierzu werden für Adressänderungen von nicht-lokalen Paketen die NF_IP_PRE_ROUTING und NF_IP_POST_ROUTING Hooks genutzt und für das Ändern der Zieladresse von lokal generierten Paketen der NF_IP_LOCAL_OUT Hook.

Im Gegensatz zu der filter Tabelle, muss hier nur das erste Paket einer Verbindung die Tabelle durchlaufen. Das Ergebnis wird dann auf alle Pakete der gleichen Verbindung angewandt.

Ein Beispiel zu SNAT:

		iptables -t nat -A POSTROUTING -j SNAT --to-source 10.0.0.1 -o eth0

Hierdurch werden alle Pakete, die über die Netwerkschnittstelle eth0 geschickt werden sollen, die Quelladresse 10.0.0.1 erhalten.

Das target SNAT benutzt man bei statischen IP Adressen. Hat man eine dynamische IP Adresse, sollte man das target MASQUERADE nutzen.

		iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0

In diesem Beispiel wird der Verkehr über der Schnittstelle ppp0 maskiert. Dies ist der gleiche Vorgang wie beim SNAT Target, mit dem Unterschied, dass die Quelladresse selbst von der Schnittstelle ppp0 ermittelt wird.


Ein Beispiel zu DNAT:

		iptables -t nat -A PREROUTING -j DNAT --to-destination 10.0.0.1:8080 -p tcp \
		--dport 80 -i eth0

Hier werden alle Pakete, welche von der Netwerkschnittstelle eth0 kommen und für Port 80 bestimmt sind, zu der Adresse 10.0.0.1:8080 umgeleitet.

Für das DNAT target kann man das spezielle target REDIRECT nutzen.

		iptables -t nat -A PREROUTING -j REDIRECT --to-port 8080 \
		-i eth0 -p tcp --dport 80

In diesem Beispiel werden alle Webserveranfragen über eth0 zum lokalen Port 8080 umgeleitet.

Klaus Rechert 2004-03-09