SelfLinux Linux im Netzwerk Network Address Translation Abschnitt 3 | SelfLinux-0.13.0

| Network Address Translation | Autor Formatierung GPL

#### 5 Kontrollieren, worauf man NAT anwendet

Du musst NAT-Regeln erstellen, die dem Kernel sagen, was für Verbindungen er ändern soll, und wie er sie ändern soll. Um das zu tun, setzen wir das vielseitige iptables Tool ein und sagen ihm durch das Angeben der -t nat Option, dass es die NAT-Tabelle ändern soll.

Die Tabelle der NAT-Regeln enthält drei Listen, die Ketten genannt werden: Alle Regeln werden der Reihe nach untersucht, bis eine davon zutrifft. Die drei Ketten heißen PREROUTING (für Destination NAT, da die Pakete hereinkommen), POSTROUTING (für Source NAT, da die Pakete ausgehen) und OUTPUT (für Destination NAT von lokal generierten Paketen).

Wenn ich irgendein künstlerisches Talent hätte, würde dieses Diagramm es ganz gut zeigen:

      _____                                     _____
     /     \                                   /     \
     PREROUTING -->[Routing ]----------------->POSTROUTING----->
     \D-NAT/     [Entscheidung]                \S-NAT/
                     |                            ^
                     |                          __|__
                     |                         /     \
                     |                        | OUTPUT|
                     |                         \D-NAT/
                     |                            ^
                     |                            |
                     -------->Lokaler Prozess------

Wenn ein Paket durchgeht, schauen wir an jedem der obigen Punkte nach, zu was für einer Verbindung es gehört. Wenn es eine neue Verbindung ist, sehen wir in der entsprechenden Kette der NAT-Tabelle nach, was zu tun ist. Die Antwort, die wir erhalten, wird auf alle weiteren Pakete dieser Verbindung angewendet.

#### 5.1 Einfache Auswahl mit iptables

iptables benötigt eine Reihe von Standardoptionen, die weiter unten aufgelistet werden. Die Optionen mit einem doppelten Gedankenstrich können abgekürzt werden, solange iptables sie danach noch von den anderen Optionen unterscheiden kann. Wenn Dein Kernel iptables als Modul unterstützt, wirst Du das iptables.o Modul zuerst laden müssen: insmod iptables.o.

Die wichtigste Option ist hier die, mit der man die Tabelle auswählen kann, -t. Für alle NAT Operationen wirst Du -t nat verwenden wollen, um in die NAT-Tabelle zu schreiben. Die zweitwichtigste Option ist das -A, mit dem man eine neue Regel an das Ende einer Kette anhängen kann (z.B. -A POSTROUTING), oder -I, um eine Regel am Anfang einer Kette einzufügen (z.B. -I PREROUTING).

Du kannst die Quelle (-s oder --source) und das Ziel (-d oder (--destination) eines Pakets bestimmen, auf das Du NAT anwenden willst. Diesen Angaben kann eine einzelne IP-Adresse (z.B. 192.168.1.1), ein Name (z.B. http://www.gnumonks.org) oder ein Netzwerkadresse (z.B. 192.168.1.0/24 oder 192.168.1.0/255.255.255.0) folgen.

Du kannst die Schnittstelle bestimmen, an der Pakete eingehen (-i oder --in-interface) oder ausgehen (-o oder --out-interface), aber welche von beiden hängt davon ab, in welche Kette Du diese Regel einfügst: Bei der PREROUTING-Kette kannst Du nur die eingehende Schnittstelle wählen, und bei der POSTROUTING-Schnittstelle (OUTPUT) nur die ausgehende. Wenn Du die falsche wählst, wird iptables Dir eine Fehlermeldung geben.

#### 5.2 Genauere Auswahl der betreffenden Pakete

Ich habe weiter oben gesagt, dass Du eine Quell- und eine Zieladresse bestimmen kannst. Wenn Du die Quelladresse weglässt, wird jegliche Adresse zutreffend sein. Wenn Du die Zieladresse weglässt, wird jegliche Zieladresse zutreffend sein.

Du kannst auch ein bestimmtes Protokoll (-p oder --protocol) angeben, so wie TCP oder UDP; nur auf Pakete dieses Typs wird die Regel zutreffen.Der Hauptgrund hierfür besteht darin, dass das Bestimmen eines Protokolls Extra-Optionen erlaubt: insbesondere die --source-port und die --destination-port Optionen (abgekürzt als -sport und -dport).

Diese Optionen erlauben Dir, zu bestimmen, dass eine Regel nur auf Pakete mit einem bestimmten Quell- oder Zielport zutrifft. Dies ist nützlich für umgeleitete Web-Anfragen (TCP-Port 80 und 8080) und lässt andere Pakete außer Acht.

Diese Optionen müssen der -p Option folgen (welche den Nebeneffekt hat, dass die Erweiterungen für die shared libraries für das entsprechende Protokoll geladen werden). Du kannst Portnummern verwenden oder Namen aus der /etc/services Datei.

All die verschiedenen Eigenschaften, nach denen Du Pakete auswählen kannst, werden in schmerzhaften Einzelheiten detailliert in der Man-Page beschrieben (man iptables).