Wahrscheinlich wissen Sie, wie Sie die vorhandenen Routen unter Linux mit dem Befehl route oder netstat überprüfen (oder sogar Routen hinzufügen/ändern). Möglicherweise haben Sie das getan, ohne viel darüber zu wissen, wie IP-Routing funktioniert.
Dieser Artikel hilft Ihnen, die Prinzipien hinter dem IP-Routing und seine Funktionsweise zu verstehen.
Dies ist der 1. Teil der Artikelserie IP-Routing.
IP-Routing beinhaltet die Weiterleitung von IP-Datagrammen. Es ist ein einfacher Vorgang, bei dem der Host das IP-Datagramm direkt an das Ziel sendet, wenn der Zielhost verbunden ist. Beispielsweise über eine Punkt-zu-Punkt-Verbindung oder über ein gemeinsam genutztes Netzwerk. Wenn der Zielhost nicht direkt verbunden ist, sendet der Host das IP-Datagramm an den Standardrouter und lässt den Router entscheiden, wohin das IP-Datagramm weitergesendet werden soll.
Routing-Prinzipien
Ein grundlegender Unterschied zwischen einem normalen Host und einem Router besteht darin, dass ein Host niemals ein Datagramm von einer Schnittstelle zur anderen weiterleitet, während ein Router ein Datagramm weiterleiten kann.
Heutzutage können die meisten Mehrbenutzersysteme so konfiguriert werden, dass sie als Router fungieren. So kann ein gemeinsamer Routing-Algorithmus angegeben werden, der sowohl vom Router als auch von einem Host verwendet werden kann. Wenn ein Host wie ein Router agieren kann, wird allgemein gesagt, dass der Host eine eingebettete Router-Funktionalität hat. Solch ein Host, der eine eingebettete Router-Funktionalität hat, sollte niemals Datagramme weiterleiten, bis und sofern er nicht dafür konfiguriert ist, dh so konfiguriert ist, dass er sich wie ein Router verhält.
Die IP-Schicht verwaltet eine Routing-Tabelle, die sie verwendet, während sie Entscheidungen darüber trifft, was mit dem empfangenen Datagramm geschehen soll. Wenn das Datagramm vom Netzwerk empfangen wird, überprüft die IP-Schicht zuerst ihre IP-Adresse, um festzustellen, ob die IP-Adresse ihre eigene ist oder nicht.
Falls die Ziel-IP-Adresse im Datagramm eine eigene ist, wird das Datagramm an das entsprechende Protokoll auf der Transportschicht gesendet, aber wenn die Zieladresse keine eigene ist, wird das Datagramm weitergeleitet, wenn der Host so konfiguriert wurde, dass er sich wie a verhält Router andernfalls wird das Datagramm verworfen.
Die Daten in der Routing-Tabelle liegen im Allgemeinen in Form von Einträgen vor. Ein typischer Routing-Tabelleneintrag enthält die folgenden Haupteinträge:
- Ziel-IP-Adresse :Dieses Feld stellt die IP-Adresse des Ziels dar. Diese IP-Adresse kann die Adresse eines einzelnen Hosts oder eines Netzwerks sein. Wenn dieser Eintrag die IP-Adresse eines Hosts enthält, wird dies durch eine Host-ID ungleich Null in der Adresse gekennzeichnet, während, wenn der Eintrag die IP-Adresse eines Netzwerks enthält, dies durch einen Host-ID-Wert von 0 gekennzeichnet wird.
- IP-Adresse des nächsten Routers :Wir haben den Begriff „nächster“ verwendet, weil dies nicht immer der endgültige Router ist, sondern sehr wohl ein Zwischenrouter sein könnte. Dieser Eintrag gibt die IP-Adresse des nächsten Routers an, der entscheidet, wie er ein auf seiner Schnittstelle empfangenes IP-Datagramm weitersendet.
- Flaggen :Dieses Feld enthält weitere wichtige Informationen, z. B. die Ziel-IP-Adresse (oben angegeben) ist eine Hostadresse oder eine Netzwerkadresse. Außerdem geben Flags an, ob der nächste Router (oben angegeben) wirklich ein nächster Router oder eine direkt verbundene Schnittstelle ist.
- Spezifikationen der Netzwerkschnittstelle :Eine Angabe über die Netzwerkschnittstelle, die das Datagramm zur weiteren Übertragung übergeben soll.
Wie grundlegendes Routing funktioniert?
Wenn wir also jetzt kurz versuchen, den Routing-Prozess zu visualisieren, dann sehen wir, dass sobald ein Datagramm aus einem Netzwerk auf der IP-Schicht eines Hosts (der so konfiguriert ist, dass er sich wie ein Router verhält) empfangen wird, dann nach der Überprüfung der Ziel-IP Adresse im Paket nicht die dieses Hosts ist, werden die Routing-Tabellen herangezogen.
Jeder Eintrag, dessen erstes Feld vollständig (ein Host) oder teilweise (ein Netzwerk) mit der Ziel-IP-Adresse übereinstimmt, würde die IP-Adresse des nächsten Routers signalisieren. Dies sind die wesentlichen Informationen, die ein Host (der sich wie ein Router verhält) benötigen würde, um ein Paket weiterzuleiten, da diese Informationen direkt angeben, an welchen nächsten Router das Datagramm weitergeleitet werden soll. Alle anderen Felder im Eintrag unterstützen die Entscheidungsfindung, indem sie weitere Informationen für das Routing liefern.
Im obigen Abschnitt bauen wir ein grundlegendes Verständnis auf, aber wenn wir versuchen, eine Ebene tiefer zu gehen, geben die folgenden Punkte detaillierte Informationen über den Routing-Tabellen-Algorithmus:
- Zunächst wird die Routing-Tabelle nach einem Eintrag durchsucht, dessen Feld „Ziel-IP-Adresse“ vollständig mit der Ziel-IP-Adresse des Datagramms übereinstimmt. Mit vollständig ist gemeint, dass Host-ID und Netzwerk-ID der IP-Adressen übereinstimmen. Wenn es gefunden wird, wird das Datagramm an diese Schnittstelle oder an den zwischengeschalteten Router gesendet.
- Wenn keine vollständige Übereinstimmung gefunden wird, wird nach einer übereinstimmenden Netzwerk-ID gesucht. Wenn es gefunden wird, wird das Datagramm an den angegebenen Router weitergeleitet. Wir sehen also, dass alle Hosts in diesem Netzwerk von diesem einzigen Eintrag in der Routing-Tabelle verwaltet werden.
- Wenn keiner der beiden oben genannten Fälle zutrifft, wird das Datagramm an einen „Standardrouter“ weitergeleitet.
- Wenn der obige Schritt ebenfalls fehlschlägt, dh es gibt keinen Standardrouter, dann ist das Datagramm unzustellbar. Jedes unzustellbare Datagramm würde zu einem ICMP-Host nicht erreichbar führen oder ICMP-Netzwerk nicht erreichbar Fehler und dieser Fehler wird an die Anwendung zurückgegeben, die dieses Datagramm generiert hat.
Manchmal würde man fragen, warum es zwei Arten von Einträgen in der Routing-Tabelle gibt oder genauer gesagt, warum netzwerkbezogene Einträge in einem Router benötigt werden? Nun, Einträge in der Routing-Tabelle, die Netzwerken entsprechen, haben einen großen Vorteil. Der Vorteil besteht darin, dass durch einen Eintrag, der sich auf ein vollständiges Netzwerk bezieht, die Notwendigkeit vermieden wird, eine große Anzahl separater Einträge für jeden Host in diesem Netzwerk zu haben. Dies reduziert die Größe der Routing-Tabelle auf ein signifikantes Niveau, was immer gut ist.
Befehl zum Auflisten von Routing-Tabellen
Sie können den Befehl netstat verwenden, um die Routing-Tabellen wie unten gezeigt aufzulisten.
$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0
Die Ausgabe enthält detaillierte Informationen zu den Ziel-IP-Adressen und ihren Gateways. Das Flag „U“ weist darauf hin, dass die Route aktiv ist, und das Flag „G“ weist darauf hin, dass der Router zu einem Gateway (Router) führt. Wenn dieses Flag nicht gesetzt ist, kann davon ausgegangen werden, dass das Ziel direkt verbunden ist.