Ipfw nat

Tronar

aus Überzeugung altmodisch
Hallo, Netzwerker,
ich möchte eine FreeBSD-Kiste als Internet-Gateway für ein LAN aufsetzen, mit Firewall und NAT, eigentlich ein Standard-Setup. Am Anfang stehen aber ein, zwei Verständnisfragen bzgl. NAT, die die IPFW-Manpage nicht klären konnte.
Also: Einer der LAN-Clients surft im Web. Der HTTP-Request tröppelt in meinen Gateway rein, auf dem Rausweg ins Internet wird er dann geNATtet. Nebenbei: Gibt es einen Grund, derlei Verkehr schon beim Reinkommen aus dem LAN zu NATten? Wohl kaum!
Weil ich den Zugriff ins Internet reglementieren will, durchläuft das Paket auch einen Filter. Um nach der NAT-Regel noch filtern zu können, habe ich "sysctl net.inet.ip.fw.one_pass=0" gesetzt. Dann läßt eine Regel der Art "add 99 allow proto tcp dst-port 80 out via ng0 setup keep-state" das Paket hinaus. Weil hier eine dynamische Regel für das bereits geNATtete Paket erstellt wird, muß ich bei der eingehenden Antwort doch das "check-state" vor dem Zurück-NATten aufrufen. Aber "check-state" läßt die Pakete ja dann aus der Firewall raus, dann kann ich ja gar nicht mehr zurück-NATten! Zusammengefaßt:
Client --> Gateway --> NAT --> keep-state --> Internet
Client <-- Gateway <-- DeNAT <-- check-state <-- Internet
DeNAT geht nicht, weil bei check-state Schluß ist (falls check-state ein Match ergibt).

Andere Möglichkeit:
Client --> Gateway --> keep-state --> NAT --> Internet
Client <-- Gateway <-- check-state <-- DeNAT <-- Internet
Hier geht das NAT nicht, weil die Regel mit keep-state ja die Pakete schon rausläßt, wenn sie matchet.

Also: Wie kombiniert man Stateful filtering mit NAT?

Andere Frage: Das Rückwärts-NAT geht doch mit dem gleichen Aufruf wie das Vorwärts-NAT, also beides in der Art:
nat 10 config if ng0 log reset deny_in // definition
add 55 nat 10 proto tcp src-ip 192.168.0.0/16 dst-port 80 out via ng0 // vorwaerts
add 66 nat 10 proto tcp src-port 80 dst-ip me in via ng0 // rueckwaerts

Und noch eine: Wie hält das System eigentlich die NAT-Zuordnungen auseinander, z. B. wenn zwei Clients auf dieselbe Web-Site zugreifen?
 
Zurück
Oben