NAT Helper

Genügen einem über IP liegendem Netzwerkprotokoll die Möglichkeiten der Adressmanipulation nicht mehr, so kann man für dieses die Funktionalität von NAT durch NAT Helper erweitern.
NAT Helper werden mit Hilfe der ip_nat_helper Struktur registriert. Diese beschreibt die zu untersuchenden Pakete mit einem Tupel, einer Maske und spezifiziert dazu noch zwei Funktionszeiger. Die help Funktion wird für alle auf das Tupel passende Pakete aufgerufen. Sie sammelt unter anderem Informationen für zukünftige ,,RELATED`` Verbindungen und kann auch das Paket verändern. Die andere Funktion (expect) wird für das erste Paket einer erwarteten Verbindung (expectation) aufgerufen. Hier können Adressmanipulationen vorgenommen werden.

Die ip_nat_helper Struktur sieht folgendermaßen aus:

Ein Beispiel dafür ist das FTP Protokoll(6). So ist es notwendig den PORT Befehl eines FTP-Clients nachträglich zu verändern, weil dieser sich in einem Netz befindet, dessen Adressen verändert werden. In diesem Fall muss die Adresse in dem Paket durch die des Gateways getauscht werden. Dazu kann noch die Schwierigkeit kommen, dass sich die Paketgröße ändern kann und es zu einer Verschiebung der erwarteten Paketsequenznummer kommt, die für alle folgenden Pakete ausgeglichen werden muss.

Auch müssen alle als ,,RELATED`` markierten Pakete speziell behandelt werden. So müssen IP Adresse und Portnummer, dem PORT Befehl entsprechend, aller eingehenden FTP-Daten Pakete umgeschrieben werden.

Ein Codeskeleton für Helper Module und weitere Details zu den einzelnen Strukturen gibt es hier (7).

Klaus Rechert 2004-03-09