IP-Masquerading


Inhalt

  1. Wozu brauche ich IP-Masquerading?

  2. Wie funktioniert IP-Masquerading?

  3. Probleme

  4. Application Masquerading

  5. Einrichten von IP-Masquerading auf einem Linux System


Quellen:

1. Wozu brauche ich IP-Masquerading?

2. Wie funktioniert IP-Masquerading?

               I======================I    I==============I
               I IP-Masquerade Router I    I lokales Netz I
Internetzugang-I Linux                I----I 192.168.1.0  I
               I 134.109.132.51 (Bsp) I    I              I
               I======================I    I==============I
Alle Anfragen des lokalen Netzes werden an den IP-Masquerade Route weitergeleitet. Dieser kann die Anfragen aber nicht ins Internet leiten, da das lokale Netz nichtweltweit geroutet wird. Es muss als Absenderadresse also eine gueltige Adresse angegeben werden.

Lösung: Der Router traegt im Paket als Absender seine Adresse ein (IP-Masquerading). Da aber mehrere Verbindungen moeglich sein muessen, wird beim Router eine Verbindungsliste aufgebaut. Den Portnummern ab 60000 wird eine neue (virtuelle) Verbindung zugewiesen und bei der Absenderadresse wird diese Portnummer mit angegeben. Der Router kann nun von aussen ankommende Pakete dem wirklichen Absender wieder korrekt zustellen.

            Empfangenes IP Paket            Gesendetes IP Paket
   I=================================================================I
   I  Protocol                        Protocol                       I
   I=================================================================I
   I  Header CRC  		      Header CRC                     I
   I=================================================================I
I--I  Quelladdresse (192.168.1.1)     Quelladresse (134.109.132.51)  I<-I
I  I=================================================================I  I
I--I  Quellport	(23)		      Quellport (60002)              I<-I
I  I=================================================================I  I
I  I  Zieladdresse ================== Zieladdresse                   I  I
I  I=================================================================I  I
I  I  Zielport ====================== Zielport			     I  I
I  I=================================================================I  I
I                   I							I
Verbindungsliste:   I							I
I                  VVV 							I
I  I========================================I                           I
I  I  Zieladresse, Zielport		    I                           I
I  I========================================I                           I
I->I  Quelladdresse, Quellport		    I	                        I
   I========================================I                           I
   I  Masquerade-Addresse, Masquerade-Port  I---------------------------I	
   I========================================I

3. Probleme

- Befehle wie rsh, rlogin funktionieren nicht, da der Server eine Portn. zw. 512 u. 1024 erwartet (Sicherheitsgruende, da nur root diese Ports verwende darf) - auf raw-IP oder ICMP aufsetzende Protokolle werden nicht unterstuetzt (wie z.B. traceroute od. ping), wobei ICMP teilw. integriert wurde - Clients, die die passive Rolle uebernehmen. Wie z.B. FTP. Der FTP-Client erzeugt einen passiven Socket, uebertraegt seine IP-Adresse und wartet auf Verbindungsaufbau vom Server. Die IP-Adresse wird also nicht automatisch maskiert, da der Router ja nicht weiss, dass sie eine IP-Adresse ist.

4. Application Masquerading

Um dem letztgenannten Problem entgegenzuwirken wurde Application-Masquerading eingefuehrt. Der Router liesst den uebertragenen Datenstrom mit und wartet auf einen PORT-Befehl. Die nachfolgende IP-Adresse setzt er korrekt um und uebertraegt sie, dass eine korrekte Verbindung vom FTP-Server zum Client aufgebaut werden kann. Dazu gibt es 2 Module: ip_masq_ftp fuer FTP und ip_masq_irc fuer IRC.

5. Einrichten v. IP-Masquerading auf einem Linux-System

Voraussetzung fuer IP-Masquerading ist ein Kernel ab 1.99.5. Es existieren zwar schon Patches fuer 1.2.13, aber die beherrschen noch kein Application Masquerading.
Folgende Optionen muessen beim kompilieren des Kernels angegeben werden: Der Firewall muss nun noch konfiguriert werden. Dazu gibt es ipfwadm
ipfwadm -F -f
ipfwadm -O -f
Alle forwarding und Output Regeln loeschen (flush)
ipfwadm -F -i masquerade -S 192.168.1.0/255.255.255.0 -D 0.0.0.0/0
Alle Pakete vom lokalen Netz maskieren
ipfwadm -F -i deny -S 0.0.0.0/0 -D 0.0.0.0/0
Alle anderen Pakete werden nicht weitergeleitet
ipfwadm -O -i deny -S 192.168.1.0/255.255.255.0 -D 0.0.0.0/0
Keine Pakete vom lokalen Netz ins Internet
ipfwadm -O -i accept -S 192.168.1.0/255.255.255.0 -D 192.168.1.0/255.255.255.0
Pakete, die Sender und Ziel innerhalb des lokalen Netzes haben, werden weitergeleitet. SOnst waeren z.B. keine Verbindungen zw. Client und Router moeglich.
insmod ip_masq_ftp
FTP Applicationmasquerading laden.