Der Befehl route

route ist ein Befehl. Durch ihn ist es möglich statische Routen manuell zu setzen und auch zu testen. Tippt man in der Konsole route ein, so erscheint die Routing-Tabelle des Kernels. Für den Server anakin sieht dies so aus:
Destination Gateway Netmask Device
localnet * 255.255.255.0 eth1
192.168.1.0 * 255.255.255.0 eth0
default firewall.svenaliserver 0.0.0.0 eth0
Wenn einem die Namen nicht gefallen, so kann auch mit route -n eine Ausgabe generiert werden, welche nur IP-Adressen zeigt. Nun stellt sich die Frage nach deren Bedeutung? Fangen wir mit dem einfachsten an. Dem default-Gateway, welcher durch den default-Eintrag angezeigt wird. Er bewirkt, das sämtliche Pakete, mit denen der Server selbst nichts anfangen kann, weitergeschickt werden, in diesem Fall an den Server firewall.svenali - 192.168.0.1. Ob dieser damit was anfangen kann, ist ihm egal. Somit ist zum Beispiel auch klar, daß man über diesen Fileserver, sofern man sich per SSH angemeldet hat auch surfenkönnte. Wir wissen ja, daß firwall.svenali Verbindung zum Internet hat, und ebenfalls ein Gateway ist. Nun zu den anderen beiden Einträgen. Der erste Eintrag in dieser Tabelle gibt an, daß dieser Rechner anakin zu dem Subnetz 192.168.0.0 gehört, und auf dieses auch zugreifen kann - also auf die Rechner 192.168.0.1 bis 192.168.0.254 (wenn es denn auch tatsächlich so viele geben würde). Mit diesem Wissen ist dann auch klar, was der zweite Eintrag bedeutet. Da dort natürlich nur die d-box dranhängt, kann dieser Server auch nur darauf zugreifen. Theoretisch jedoch gilt auch hier 192.168.1.1 bis 192.168.1.254 (Rechner vorrausgesetzt). Es wird klar, das praktisch alle Netze (hier zwei Subnetze) für diesen Server zur Verfügung stehen. Doch was ist mit den anderen Rechnern, die sich in dem 192.168.0.x-Subnetz befinden? Sie können nicht ohne weiteres auf das 192.168.1.x-Subnetz zugreifen, und dementsprechend nicht auf die Dreambox/d-box zugreifen. Diesem Problem stehen wir nun gegenüber.
Setzen wir uns dazu an die Firewall. Warum? Ganz einfach, die Firewall kennen alle. Jeder Client im 192.168.0.x-Subnetz kennt diesen Rechner firewall, denn er ist ja auch für die Internetverbindung zuständig. Somit steht er bei allen auch als default-Gateway eingetragen. Kurz: Alle fragen firwall, wenn es darum geht IP-Adressen aufzulösen und entsprechend weiterzuleiten. Was ist also zu tun? Wir müssen ihm mitteilen was er mit den Anfragen aus dem 192.168.0.x-Subnetz an das 192.168.1.x-Subnetz anfangen soll. Wie das geht? - Na mit route.
Tragen wir dazu eine neue Route ein:
route add -net 192.168.1.0 netmask 255.255.255.0 gw svenali
oder:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.0.2
oder noch einfacher:
route add -net 192.168.1.0/24 gw 192.168.0.2
Die 24 am Ende der IP bedeutet, daß es sich um eine 24-bittige Netzmaske handelt, in der alle Bits auf 1 gesetzt sind. Dies entspricht einer Netzmaske von 255.255.255.0. Jetzt werden alle Anfragen an die Dreambox/d-box weitergeleitet an anakin. Dieser Gateway weiß bestens bescheid und reicht die Pakete weiter in das entsprechende Subnetz 192.168.1.x. Als letztes ist noch wichtig, das IP-Forwarding bei anakin einzuschalten, damit die ankommenden IP-Pakete auch wirklich weitergereicht werden. Dazu editieren wir die Datei /etc/network/options. Dort tragen wir bei ip_forward=no ein yes ein. Alternativ zu diesem Verfahren kann man auch bei jedem Client einzeln die Routen eintragen. Doch dies ist ein erheblich grösserer Aufwand. Vor allem wenn noch anderen Betriebssystemplattformen dahinterhängen, z.B. Windows-Systeme. Nicht das es dort nicht geht - siehe Kapitel 4.11.4. Eine weitere Alternative besteht darin, dem DHCP-Server zu sagen, er soll als default-Gateway nicht die Firewall melden sondern den Fileserver anakin. Damit würde der gesamte Netztraffic zuerst zu anakin geschickt, und danach zur Firewall.


Sven Alisch 2005-08-28