11.3    Routing

Mit der Zuweisung der entsprechenden IP-Adressen kann, aber muss unser Netzwerk nicht notwendigerweise richtig konfiguriert sein. Ein wichtiger Aspekt der Netzwerkkonfiguration ist das Routing, und das eröffnet aufgrund der vielfältigen Möglichkeiten, die Linux bietet, eine hübsche Spielwiese – nicht nur für alle technikbegeisterten Freaks.

11.3.1    Was ist Routing?

Sie wissen bisher, dass Rechner in einem Netzwerk IP-Adressen haben. Was Sie aber nicht wissen, ist, wie die Kommunikation von Netzwerk zu Netzwerk funktioniert – woher sollen denn die Rechner wissen, wohin sie ihre Pakete schicken sollen, wenn die Adresse nicht im eigenen Netz liegt? Die Antwort ist einfach: Sie wissen es nicht. Man muss es ihnen sagen, und zwar durch das Routing.

Prinzipiell kann man Routing statisch oder dynamisch organisieren. Dynamisches Routing basiert auf diversen Routing-Protokollen, die auch im TCP/IP-Protokollpaket enthalten sind. Allerdings sind diese Protokolle eher für große Netzwerke gedacht, in denen beispielsweise ein Ausfall von einzelnen Routern automatisch überbrückt werden muss. Aus diesem Grund möchten wir uns nur mit statischem Routing befassen, bei dem jedem Rechner durch explizite Konfiguration gesagt wird, wie er in andere Netze kommt.

Um zu wissen, wohin welches Paket geschickt werden muss, hat jeder Rechner eine sogenannte Routing-Tabelle. Eine Routing-Tabelle enthält als wichtigste Spalten das jeweilige Ziel, das ein einzelner Rechner oder ein ganzes Netz sein kann, das Netzwerkinterface, über das die Pakete gesendet werden müssen, und eventuell einen sogenannten Router bzw. ein Gateway, der bzw. das sich dann weiter um die Pakete kümmert.

So ein Gateway ist immer dann im Einsatz, wenn zwei Netze miteinander verbunden werden sollen. Dabei ist dieses Gateway nur ein Rechner, der in beiden Netzen vorhanden ist. Will ein Rechner aus Netz A zu einem Rechner X in einem anderen Subnetz Kontakt aufnehmen, schickt er seine Pakete also zu einem Gateway. Das Gateway leitet die Pakete einfach nur weiter.

Natürlich müssen Sie nicht für jedes einzelne Netzwerk einen Eintrag in der Routing-Tabelle hinzufügen. Sie können auch einfach ein sogenanntes Standard-Gateway angeben, zu dem alle Pakete geschickt werden, für die sonst keine Regel existiert. Dies wird selbstverständlich vor allem für einen Internetzugang genutzt – dann hat das Standard-Gateway eine Verbindung zum Internet und leitet für Ihr gesamtes internes Netz die Pakete weiter. Das Standard-Gateway wird typischerweise auch via DHCP konfiguriert.

11.3.2    Der Befehl ip route

Der Standardbefehl für das Arbeiten mit der Routing-Tabelle ist mal wieder ip. Wir übergeben zunächst den Parameter route:

# ip route
default via 10.0.2.2 dev eth0 proto dhcp metric 100
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15 metric 100

Listing 11.15     Die Routing-Tabelle

Hier sehen Sie, dass wir das Netz 10.0.2.0 direkt (kein Gateway) über das Interface eth0 erreichen. Für alles andere schicken wir die Pakete auch über eth0 zu 10.0.2.2 und vertrauen darauf, dass dieser Rechner die Pakete ordnungsgemäß weiterleiten wird. Anders formuliert ist 10.0.2.2 unser Standard-Gateway. Dabei ist darauf zu achten, dass das Netz, in dem das Standard-Gateway ist, auch erreicht werden kann! Es nützt nichts, wenn Sie ein schönes Gateway installiert und konfiguriert haben und die anderen Rechner zwar wissen, dass es dieses Gateway gibt, es allerdings nicht erreichen können! Daher ist in diesem Beispiel der erste Eintrag wichtig.

Jetzt schauen wir uns aber einmal an, wie wir eine Routing-Tabelle überhaupt aufbauen. Dazu nehmen wir an, dass wir das Netzwerk 172.20.0.0/16 über die Netzwerkkarte, die mit eth0 bezeichnet wird, erreichbar machen möchten. Dazu legen wir auch fest, dass das Netzwerk direkt über diese Schnittstelle erreichbar ist:

# ip addr add 172.20.0.1/16 dev eth0
# ip route add 172.20.0.0/16 dev eth0

Listing 11.16     Füllen einer Routing-Tabelle

Wir überprüfen unsere Änderungen – es sollte eine neue Route sichtbar sein.

# ip route
default via 10.0.2.2 dev eth0 proto dhcp metric 100
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15 metric 100
172.20.0.0/16 dev eth0 scope link
172.20.0.0/16 dev eth0 proto kernel scope link src 172.20.0.1

Listing 11.17     Überprüfen der aktualisierten Routing-Tabelle

Es hat funktioniert: Unser Rechner weiß nun, dass wir das Netzwerk 172.20.0.0/16 direkt über die Schnittstelle eth0 erreichen können.

Das Standard-Gateway festlegen

Möchten wir unserem Rechner nun sagen, welcher Rechner eines Netzwerks das Standard-Gateway ist, so können wir auch dies mit ip erledigen:

# ip route add default gw 172.20.0.10 dev eth0

Listing 11.18     Das Standard-Gateway festlegen

Routen löschen

Bleibt noch zu klären, wie man eine Route wieder aus der Tabelle löschen kann. Das ist ganz einfach:

# ip route del 172.20.0.0/16

Listing 11.19     Löschen einer Route