Weiter Zurück Inhalt

9. Linux als Internetgateway

9.1 Einleitung

Dieses Kapitel stammt von Roland Seuhs <roland@wertkarten.net>. Vielen Dank an Roland für diesen Beitrag.

Anmerkung von Heimo Schön: Für AON-Kunden sei hier angemerkt, daß Sie Sie ein Gateway betreiben dürfen. IMHO finden sich in den AGB von AON keine Ausschließungsgründe für ein Gateway, aber sehr deutliche Worte spricht der Absatz 1 im Punkt 9 bezüglich Einzelplatznutzung. Kunden anderer Provider sollten Ihre AGB genau studieren bevor Sie ein Gateway installieren, denn auch Masquerading ist kein einwandfreier Schutz, denn anhand Ihres Surf-Verhaltens kann man schön nachvollziehen ob hier nur ein User oder mehrere verschiedene User surfen.

However, der Einsatz eines Gateways erhöht AFAIK auch die Sicherheit Ihres Internetzugangs. Die Sicherheit der Kunden könnte auch im Interesse des Providers sein, also nehme ich an, das ein Gateway, bei normaler Nutzung als Einzelplatzsystem, zumindest geduldet wird. (Danke Georg Lippitsch <georg.lippitsch@gmx.at> für die anregende Diskussion dieser Anmerkung)

9.2 Was ist ein Gateway?

Ein Gateway ist im Prinzip nichts anderes als Netzwerkpakete von einen Netzwerk in ein anderes zu transportieren. Um auf zwei Netzwerke zugreifen zu können, muß ein Gatewayrechner zwei Geräte zu Verfügung haben um Netzwerke anzusprechen. Also zum Beispiel zwei Netzwerkkarten, oder eine Netzwerkkarte und ein Modem. Wenn beide Netzwerke auf dem Rechner bereits laufen und funktionieren, kann man den Gateway aufsetzen. Wenn Sie ein lokales Netzwerk haben und ein Rechner in diesen Netz verfügt über einen Internetanschluß, so können Sie dann mit allen anderen Rechnern im Netz ebenfalls auf das Internet zugreifen, wenn Sie diesen Rechner als sogenannten Gatewayrechner betreiben. Da die Lizenzgebühren für Windows NT als Gateway sehr teuer sind, bietet sich Linux für diesen Zweck geradezu an.

Nun stellt sich folgendes Problem: Die lokalen Netzwerkadressen (z.B. 192.168.x.x) werden nicht ins Internet geroutet. - Logischerweise, denn diese Adressen müssen offiziell nicht angemeldet werden und sind für lokale Netzwerke reserviert. Man hätte tausende gleiche IP Adressen wenn diese ins Internet geroutet werden. Die Lösung ist IP Maskierung. Bei diesem Verfahren werden die Pakete mit der IP Adresse des Gateways weitergeschickt. Um bei den vom Internet zurückgeschickten Paketen unterscheiden zu können welches Paket zu welchen Computer weitergeleitet werden soll, werden den Rechnern verschiedene Ports zugeordnet. (Die Antworten aus dem Internet gehen dann an diese Ports und werden dann vom Gateway an die jeweiligen Rechner weitergeleitet) Der Rechner, der die Pakete schickt, merkt nicht, daß der Gatewayrechner die Pakete an andere weiterleitet. Es werden Pakete an die selbe IP Adresse, aber an verschiedene Ports geschickt. - Aber das kann durchaus auch beim »normalen« Betrieb passieren; So benutzen z.B. Telnet, ftp und http verschiedene Ports.

9.3 Voraussetzungen

Um IP Maskierung einzurichten, muß man (neben einen Internetzugang und einen lokalen Netz) unter Umständen den Kernel neu konfigurieren. - Bei modernen Distributionen (z.B. SuSE 6.3 ist das jedoch nicht erforderlich) Probieren Sie es einfach aus; Falls sich die Module nicht laden lassen, müssen sich folgende Optionen bei der Neukompilation anwählen:

         * Prompt for development and/or incomplete code/drivers 
       CONFIG_EXPERIMENTAL 
       - this will allow you to select experimental
       IP Masquerade code compiled into the kernel

       * Enable loadable module support 
       CONFIG_MODULES 
       - allows you to load ipmasq modules such as ip_masq_ftp.o

       * Networking support 
       CONFIG_NET 

       * Network firewalls 
       CONFIG_FIREWALL 

       * TCP/IP networking 
       CONFIG_INET 

       * IP: forwarding/gatewaying 
       CONFIG_IP_FORWARD 

       * IP: firewalling 
       CONFIG_IP_FIREWALL 

       * IP: masquerading 
       CONFIG_IP_MASQUERADE 

       * IP: ipportfw masq support 
       CONFIG_IP_MASQUERADE_IPPORTFW
       - recommended

       * IP: ipautofw masquerade support
       CONFIG_IP_MASQUERADE_IPAUTOFW
       - optional

       * IP: ICMP masquerading
       CONFIG_IP_MASQUERADE_ICMP
       - support for masquerading ICMP packets, recommended.

       * IP: always defragment
       CONFIG_IP_ALWAYS_DEFRAG 
       - highly recommended

       * Dummy net driver support
       CONFIG_DUMMY 
       - recommended

       * IP: ip fwmark masq-forwarding support 
       CONFIG_IP_MASQUERADE_MFW
       - optional
   

Falls diese Optionen in Ihren Kernel nicht vorhanden sind, kompilieren Sie einen neuen Kernel. Bevor Sie den Computer neu starten, fügen Sie folgende Zeilen in ein geeignetes (soll beim booten ausgeführt werden; z.B. /sbin/init.d/boot.local für SuSE, Sie können aber auch das Netzwerk Start Skript nehmen) Skript ein. Schalten Sie außerdem noch IP-forwarding ein: Unter SuSE setzen Sie die Variable

       "IP_FORWARD" in /etc/rc.config auf »yes« setzen
   

Unter RedHat wird es folgendermaßen eingeschalten:

       echo 1 > /proc/sys/net/ipv4/ip_forward 
   

Sie sollten das aber auch unter SuSE machen, weil viele Programme diese Datei überprüfen.

Wenn Ihr Kernel nun geeignet ist um IP-Maskierung zu betreiben, dann geben Sie folgendes ein und achten Sie auf Fehlermeldungen:

       # IP Maskierung: ############################
       # Module laden:
       /sbin/depmod -a
       /sbin/modprobe ip_masq_ftp
       /sbin/modprobe ip_masq_raudio
       /sbin/modprobe ip_masq_irc
       /sbin/modprobe ip_masq_cuseeme
       /sbin/modprobe ip_masq_vdolive
       # Forwarden einschalten (nur einmal notwendig:
       #echo 1 > /proc/sys/net/ipv4/ip_forward
       # Einstellungen machen:
       ipchains -P forward DENY
       ipchains -A forward -s 192.168.x.0/255.255.255.0 -j MASQ
   

Die letzte Zeile erlaubt dem Netz 192.168.x.0 IP-Maskierung zu benutzen. Wenn alles klappt, dann tragen sie obiges in /sbin/init.d/boot.local (bei SuSE) oder in ein anderes geeignetes Skript ein.

9.4 Erklärung

Zuerst werden die benötigten Kernelmodule geladen. Dann werden die Einstellungen zur Sicherheit gesetzt:

     ipchains -P forward DENY 
   

Diese Zeile bestimmt, daß die Standardeinstellung für alle Rechte die Verweigerung der IP Maskierung ist. Andernfalls könnte jemand seine Identität verschleiern indem er Pakete durch Ihr Gateway schickt. (Ist zwar für einen Wählleitungszugang unwahrscheinlich, aber die Konsequenzen können sehr ärgerlich sein, wenn jemand Illegales über Ihr Gateway gemacht hat.) Prinzipiell sollte man nur das nötigste erlauben, also erlauben wir IP Maskierung nur für unser lokales Netz mit

      ipchains -A forward -s <Netzwerk>/<Netzmaske> -j MASQ 
   

Selbstverständlich können Sie IP-Maskierung auch nur für einzelne Rechner zulassen:

     ipchains -A forward -s <Rechner>/<Netzmaske> -j MASQ 
   

Bedenken Sie aber, daß jemand, der auf einen von den Rechnern über das Netz einloggen kann, trotzdem die IP Maskierung benutzen kann. Wenn Sie die IP-Maskierung ausprobieren, versuchen Sie zuerst einmal IP Nummern anstatt normaler Namen; Vielleicht stimmt Ihre Nameservereinstellung nicht.

9.5 Masquerading Clients

Dieses Kapitel beschreibt die Einrichtung der Maschinen, die über das Netz IP-Maskierung nutzen wollen: (Clients)

SuSE-User mit YaST:

                       -> Administration des Systems 
                       -> Netzwerk konfigurieren 
                       -> Netzwerk Grundkonfiguration
                       -> F6 (IP-Adressen) bei dem
                               entsprechenden Netz drücken
                       -> Adresse default-Gateway eintragen:
                               (=Adresse des Servers)

       /usr/sbin/rcroute restart
   

9.6 Allgemeines

Den Eintrag

    default     <IP-Adresse des Servers>
   

in /etc/route.conf eintragen und Routing neu starten mit

    /sbin/init.d/route restart
   

Weiterführende Anregungen zu Masquerading und auch zu ICQ finden Sie im Linux IP Masquerade HOWTO

Masquerading und Microsoft Netmeeting finden Sie hier


Weiter Zurück Inhalt