Linux als Router im Netz einzusetzen ist eine häufige und einfach einzurichtende Forderung. Die Problematik besteht meist darin, zu unterscheiden, in welchen Fällen ein einfacher Router ausreichend ist und in welchen Fällen zusätzliche Techniken (Proxy, Masquerading, Firewall) nötig sind.

Routing alleine ist das bloße Weiterleiten eines IP-Paketes von einer Schnittstelle (Netzwerkkarte) zu einer anderen. Um also einen Linux-Rechner zum Router zu machen, genügt es, dass

  • der Linux-Rechner mehrere Netzwerkschnittstellen hat,
  • der Kernel die Fähigkeit aufweist, Pakete von einer Schnittstelle zur anderen weiterzuleiten (IP-Forwarding).

Der erste Punkt wird praktisch automatisch erledigt, sobald ein Rechner mehrere tatsächliche oder auch virtuelle Netzwerkkarten besitzt. Im Grunde müssen es nicht einmal Netzwerkkarten im strengen Sinne sein, es reichen auch Netzwerkschnittstellen wie z.B. ISDN-Karten oder auch Modems, auf denen ein entsprechendes Protokoll (ppp oder slip) läuft.

Sobald eine Netzwerkverbindung eingerichtet ist, existiert eine sogenannte symbolische Schnittstelle im Linux-Kernel, die einen Namen trägt, anhand dessen Rückschlüsse auf die Art des Netzwerks gezogen werden können. Die Schnittstellen heißen

SchnittstelleBedeutung
eth0, eth1, eth2Ethernetkarten. Sollten mehrere IP-Adressen an nur eine Karte vergeben werden, so werden Bezeichnungen wie eth0:1, eth0:2 verwendet.
tr0, tr1, tr2Token Ring Netzwerkkarten
ppp0, ppp1, ppp2PPP-Verbindungen (Point to Point Protocol) Die heute gängigste Methode, IP über serielle Leitungen zu betreiben. In der Regel für Internetzugänge benutzt. Auch ADSL-Verbindungen (PPP over Ethernet) benutzen dieses Protokoll.
sl0, sl1, sl2SLIP-Verbindungen (Serial LIne Protocol) – der Vorgänger von ppp und nicht mehr sehr verbreitet.
ippp0, ippp1, ippp2Synchrones ppp über ISDN-Verbindungen.
fddi0, fddi1, fddi2FDDI (Fiber Distributed Data Interface) Verbindungen. (Glasfaser Wide Area Network)

Aus der Sicht des Kernels sind alle diese Schnittstellen gleich zu bedienen, so dass Linux in der Lage ist, zwischen verschiedensten Netzwerktechniken hin und her zu routen.

Die zweite Voraussetzung (routfähiger Kernel) ist heute praktisch immer gegeben, aber meist deaktiviert. Bei SuSE-Linux findet sich z.B. ein Eintrag in der Datei /etc/rc.config, der diese Fähigkeit des Kernels beim Booten standardmäßig abschaltet:

  IP_FORWARD=no

Dieser Wert muß zwingend auf yes gesetzt werden, sonst wird immer beim Hochfahren des Systems die Routingfähigkeit des Kernels deaktiviert.

Die Einstelung ob der Kernel routet oder nicht kann auch von Hand vorgenommen werden, dazu existiert die Datei /proc/sys/net/ipv4/ip_forward. Genau genommen handelt es sich hier nicht um eine physikalische Datei, sondern um eine Schnittstelle zum Kernel. Der Inhalt der Datei ist entweder eine 0 (Routing ausgeschaltet) oder eine 1 (Routing eingeschaltet). Mit dem Befehl

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

wird das Routing aktiviert.

Routing alleine ist aber nur in Netzen mit bekannten IP-Adressen möglich. Damit lassen sich z.B. zwei physikalische Ethernet-Netze miteinander verbinden oder auch eine ppp-Einwahl über ein Modem ins lokale Netz realisieren. Was mit routing alleine nicht funktioniert ist die Anbindung eines lokalen Netzes mit reservierten (im Internet nicht gültigen) Adressen an das Internet. Denn Routing ist ja ausschließlich die Weitergabe eines IP-Paketes an ein anderes Netz. Das Paket selbst wird dabei nicht manipuliert. Hat das Paket aber eine reservierte Adresse, so ist im Internet keine Antwort möglich…

Hier setzen Techniken wie das Masquerading an, die uns Lösungen für dieses Problem anbieten. Dazu erfahren Sie auf den nächsten Seiten mehr.