Statisches Routing

Achtung! ...
Für das Verständnis sollte man vorher das Thema IP-Adressen durchlesen (und verstehen).

Statisches Routing gibt es in jedem Computer, der mit dem Internet oder einem anderen Netzwerk verbunden ist. Auch in anderen Netzwerk-Geräten (Hosts) gibt es Routing. Dazu gehören zum Beispiel Printserver, managebare Switche und Router (wie der Name schon sagt). Dieses Thema geht also alle an, die etwas mit Netzwerken machen. Was ist nun aber dieses statische Routing?

Routing im allgemeinen bedeutet eigentlich nichts anderes, als das man einem Netzwerkgerät sagt, wie es andere Netze erreichen kann. Also zum Beispiel einen Weg zum Internet, in eine andere Firmenfiliale oder ähnliches. Neben dem statischen Routing gibt es auch noch das dynamische Routing über Routingprotokolle (RIP, RIP2, OSPF, BGP, IGRP, EIGRP, ...). In diesem Artikel geht es, der Einfachheit halber, aber nur um statisches Routing.

Wenn man etwas über das Routing in einem Computer erfahren will, so reicht es aus, in einem Konsolen-Fenster den Befehl netstat -rn einzugeben. Das Ergebnis sieht ungefähr so aus:

Linux ...

shogun:/ # netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface (1) 10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 (2) 0.0.0.0 10.10.0.1 0.0.0.0 UG 0 0 0 eth0 Windows ...
C:\WINDOWS>netstat -rn Routing-Tabelle Aktive Routen: Netzwerkadresse Subnet Mask Gateway-Adresse Schnittstelle Anzahl (1) 0.0.0.0 0.0.0.0 10.10.0.1 10.10.0.7 1 (2) 10.10.0.0 255.255.255.0 10.10.0.7 10.10.0.7 1 (3) 10.10.0.7 255.255.255.255 127.0.0.1 127.0.0.1 1 (4) 10.255.255.255 255.255.255.255 10.10.0.7 10.10.0.7 1 (5) 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1 (6) 224.0.0.0 224.0.0.0 10.10.0.7 10.10.0.7 1 (7) 255.255.255.255 255.255.255.255 10.10.0.7 0.0.0.0 1 Die (zeilennummer) wurde für die nun folgende Erklärung hinzugefügt.

Fangen wir mit der Routingtabelle von Linux an. Man sieht in der Zeile (1) das angeschlossene IP-Netz am Interface eth0. Dadurch kennt der Computer sein eigenes Netz. Destination bezeichnet dabei das eigene Netz (10.10.0.0) und Genmask die Größe des Netzes (255.255.255.0). Beim Gateway steht 0.0.0.0 weil das Netz "directly connected" (direkt angeschlossen) ist. In Zeile (2) sieht man eine typische "Default-Route". Die Route erkennt man an dem 0.0.0.0 bei dem Eintrag des Zielnetzes und der Zielmaske. Das Gateway ist meißtens die IP-Adresse eines Router im selben Netz. Alle Daten, die der Computer an Ziel-IPs senden soll, die nicht im eigenen Netz liegen, gehen an dieses Gateway. Das ist also im übertragenen Sinn der Autobahn-Zubringer.

Die Routing-Tabelle bei Windows sieht dagegen sehr unübersichtlich aus. In Zeile (1) findet man allerdings die Default-Route wieder und in Zeile (2) das angeschlossene IP-Netz. Das Interface (Schnittstelle) wird in dieser Tabelle allerdings mit der IP-Adresse der LAN-Karte benannt. Das Gateway ist in dem Fall des angeschlossenen Netzes (2) auch mit der IP-Adresse des Interfaces benannt. In Zeile (3) sieht man noch die eigene IP-Adresse des Computers als "Host-Route" (Maske 255.255.255.255). Die restlichen Zeilen sind ziemlich Windows-spezifisch. Zeile (4) bezeichnet dabei die Broadcast-IP-Adresse im eigenen Netz - aber leider ohne auf die Netzmaske zu sehen sondern nur auf die Adress-Klasse (Class A). Zeile (7) bezeichnet die Broadcast-IP-Adresse an absolut alle IPs und Netze. Zeile (5) zeigt das Local-Net (127.0.0.0) - das Netz der localhost-IP-Adresse (127.0.0.1). Local-Net und localhost sind der eigene Computer. Sie werden verwendet um Dienste auf dem eigenen PC anzusprechen. In Zeile (6) ist zum Schluß noch ein Multicast-Netz für Windows zu sehen. Die Zeilen (4), (6) und (7) werden für das "Computer suchen" und Netzwerkdienste in Windows benötigt.

Wie man sieht, heißt Routing eigentlich nur "Wen kann ich ansprechen, wenn ich das Ziel selber nicht kenne". Der Ansprechpartner muß dabei immer im selben Netz sein! Das ist beim Routing ein gern gesehener Gedankenfehler. Es mag funktionieren, ich würde für solche Routing-Einträge aber nicht die Hand ins Feuer legen. Identisches gilt auch für mehrere Default-Gateways. Wenn die Eintragungen identisch sind und sich nur die Gateway-IPs unterscheiden, kann das Routing unvorhersehbar zwischen diesen Gateways hin- und herspringen. Das gibt dann wunderbare Fehler. Also: Sowas tut man nicht!


Wie konfiguriert man nun aber neue Routen? Dafür gibt es den Befehl "route". Der Befehl ist unter Windows, Linux, OS/2 und anderen Betriebssystemen sehr ähnlich. Auf der Konsole sieht das dann folgendermaßen aus:

Windows ...

route add <ziel-netz> mask <ziel-maske> <gateway> metric <metric>

Linux ...

route add -net <ziel-netz> netmask <ziel-maske> gw <gateway> metric <metric>

Wie man sieht, sind die Unterschiede minimal. Beispiele sehen dann folgendermaßen aus:

route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1
route add 172.16.10.0 mask 255.255.255.0 192.168.1.15 metric 1

Die Metric gibt dabei die "Kosten" einer Route an. Je geringer die Kosten, desto eher wird diese Route verwendet. Wenn zwei Routen für das gleiche Zielnetz bestehen, wird die Route mit den geringeren Kosten verwendet. Solche Einträge werden zum Beispiel für Backup-Verbindungen verwendet. Routen sollten sich bei gleichem Zielnetz mindestens bei der Metric unterscheiden, damit der Computer sich eine Route aussuchen kann. Wenn sich nur das Gateway unterscheidet, sendet der Computer mal über die eine und mal über die andere Route. Das kann dazu führen, dass man zerstückelte Dateien empfägt.

Jetzt sehen wir uns einmal ein Beispielnetz mit den entsprechenden Routen an:



Die Netze sind blau und Die IPs innerhalb der Netze rot. Die Interface-Namen sind eth für Ethernet, ser für Seriell (z.B. X.21) und bri für Basicrate-Interface (ISDN).

Fangen wir mit den PCs an. Sie haben jeweils eine Default-Route auf ihr Default-Gateway (also den Router im Netz).

PC1+2 : route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 metric 1
PC3-5 : route add 0.0.0.0 mask 0.0.0.0 172.24.10.1 metric 1

Damit weiß jeder PC, wo es weitergeht. Nun zum Router1. Er ist am einfachsten von beiden.

ip route 0.0.0.0 0.0.0.0 10.0.0.1 1
ip route 0.0.0.0 0.0.0.0 10.0.0.5 200
Das sind Config-Zeilen bei Cisco-Routern ...
ip route <ziel-netz> <ziel-maske> <gateway> <metric>

Damit leitet der Router alle Pakete an nicht direkt angeschlossene Netze über die serielle Verbindung zum Router2 (wegen der besseren Metric). Wenn die Datenleitung ausfällt, gibt es diese Route aber nicht mehr und er nimmt die Alternativ-Route über die ISDN-Verbindung (Backup). Damit weiß Router1, welche Gateways er verwenden soll. Das Gateway wird bei Routern auch Next-Hop (nächstes Sprungziel) genannt. Zum Schluß noch die Routen von Router2.

ip route 172.24.10.0 255.255.255.0 10.0.0.2 1
ip route 172.24.10.0 255.255.255.0 10.0.0.6 200
ip route 0.0.0.0 0.0.0.0 62.23.45.2

Die ersten beiden Routen sind die Gegenstücke zum Router1. Die dritte Route zeigt den Weg ins Internet. Da im Internet sehr viele Netze und Server mit vielen verschiedenen IPs existieren, benutzt man normalerweise immer eine Default-Route ins Internet. Wie man sieht, muß nicht unbedingt eine Metric angegeben werden. Wenn nur eine Route existiert, reicht der Eintrag auch so.

Wie zu sehen ist, wird immer nur der nächste Sprungpunkt angegeben (darum auch Next-Hop). Um alles richtig zu verstehen sollte man jetzt einfach einmal Datenverbindungen zwischen verschiedenen Zielen annehmen und den Verlauf der Datenpakete mit Hilfe der Routen nachvollziehen. Dadurch sieht man dann auch, das es immer zwei Richtungen zu konfigurieren gibt (Hin- und Rückweg). Wenn man einen vergißt, dann kommen die Pakete zwar zum Ziel, die Antworten aber nie zurück zum Sender. Da ein Verbindungsaufbau bei TCP aber immer ein Handshake (SYN, SYN-ACK, ACK) zwischen den beiden Partnern erfordert, wird die Verbindung nie erfolgen.

Zum Schluß noch ein paar Router-Bilder:

Ein paar weitere Erklärungen auf sccweb.de :

Viel Spaß beim Routen.


Erstellt am 28.03.2005
Artikel: Bernd Dähnrich