Heim > Artikel > System-Tutorial > Das Geheimnis der Verfolgung des Netzwerk-Routings: Linux-Routing-Erkennungsfähigkeiten gelüftet!
Sind Sie als Linux-Administrator jemals auf Probleme wie eine schlechte Netzwerkverbindung und hohe Latenz gestoßen? Wollten Sie schon immer mehr über Techniken zur Netzwerkroutenverfolgung und -erkennung erfahren, um Probleme besser beheben zu können? Wenn ja, müssen Sie unter Linux Routing-Erkennungsfähigkeiten erlernen! In diesem Artikel stellen wir detailliert vor, wie Sie mithilfe von Linux-Befehlszeilentools schnell und einfach Routenverfolgung und -erkennung durchführen können.
Linux View Network Routing
Jeder Computer, der mit einem Netzwerk verbunden ist, benötigt eine Art Routing-Anweisung für Netzwerk-TCP/IP-Pakete, wenn diese den lokalen Host verlassen. Dies ist normalerweise sehr einfach, da die meisten Netzwerkumgebungen sehr einfach sind und es nur zwei Möglichkeiten gibt, Pakete zu hinterlassen. Alle Pakete werden an Geräte im lokalen Netzwerk oder an andere Remote-Netzwerke gesendet.
Stellen Sie sicher, dass Sie das „lokale“ Netzwerk als das logische Netzwerk definieren, in dem sich der lokale Host befindet, und normalerweise auch als physisches Netzwerk. Logischerweise bezieht sich dies auf das lokale Subnetz, in dem dem Host einer der lokalen Subnetz-IP-Adressbereiche zugewiesen ist. Physikalisch bedeutet dies, dass der Host mit einem oder mehreren Switches verbunden ist, die auch mit dem Rest des lokalen Netzwerks verbunden sind.
TCP/IP-Netzwerkmodell
Bevor Sie mit dem Routing beginnen, holen Sie sich Hilfe, wie Pakete ihren Weg zum richtigen Host im Netzwerk finden. Das TCP/IP-Netzwerkmodell definiert einen fünfschichtigen Stapel, der die Mechanismen beschreibt, die zum Verschieben von Paketen von einem Host zu einem anderen erforderlich sind, unabhängig davon, ob sich dieser Host in einem lokalen Netzwerk oder auf der ganzen Welt befindet. In der folgenden Beschreibung dieses Modells ist jede Schicht nummeriert und enthält außerdem den Namen der Dateneinheit, die von dieser Schicht verarbeitet wird.
5. Anwendungsschicht: Nachricht Diese Schicht umfasst die Verbindungsprotokolle, die für die Kommunikation verschiedener Netzwerkanwendungen erforderlich sind, wie HTTP, DHCP, SSH, FTP, SMTP, IMAP usw. Wenn Sie eine Webseite von einer Remote-Website anfordern, wird eine Verbindungsanfrage an den Webserver gesendet, eine Antwort wird an den Host dieser Ebene zurückgesendet und der Browser zeigt die Webseite in seinem Fenster an.
4. Transportschicht: TCP-Segment. Die Transportschicht bietet End-to-End-Datenübertragungs- und Stream-Management-Dienste, die unabhängig von der Art der transportierten Daten und Protokolle sind. Es verwendet die Ports 80 (z. B. HTTP) und 25 (SMTP), um eine Verbindung zwischen dem sendenden Host und dem Remote-Host herzustellen.
3. Internetschicht: Datenpakete. Das Paketrouting erfolgt auf der Internetebene. Diese Schicht ist für die Weiterleitung von Paketen über zwei oder mehr verschiedene Netzwerke verantwortlich, um ihr endgültiges Ziel zu erreichen. Diese Schicht verwendet IP-Adressen und Routing-Tabellen, um das nächste Gerät zu bestimmen, an das das Paket gesendet werden soll. Beim Senden an einen Router ist jeder Router nur dafür verantwortlich, das Paket an den nächsten Router in der Reihe zu senden, nicht für die Abbildung der gesamten Route vom lokalen Host zum Zielhost. Auf der Internetschicht geht es hauptsächlich darum, dass Router mit Routern kommunizieren, um den nächsten Router in der Verbindung zu bestimmen.
2. Datenverbindungsschicht: Framework. Die Verbindungsschicht verwaltet direkte Verbindungen zwischen Hardware-Hosts in einem einzelnen lokalen logischen Netzwerk. Diese Schicht verwendet MAC-Adressen (Media Access Control), die in Netzwerkschnittstellenkarten (NICs) eingebettet sind, um physische Geräte zu identifizieren, die mit dem lokalen Netzwerk verbunden sind. Diese Ebene kann nicht auf Hosts zugreifen, die sich nicht im lokalen Netzwerk befinden.
1. Physikalische Schicht: Bits. Dies ist die Hardwareschicht, bestehend aus NICs und physischen Ethernet-Kabeln sowie den Protokollen auf Hardwareebene, die zur Übertragung der einzelnen Bits verwendet werden, aus denen ein Datenrahmen zwischen zwei beliebigen Hosts oder anderen Netzwerkknoten besteht, die eine lokale Verbindung bilden.
Ein einfaches Beispiel
Wie sieht es also aus, wenn ein Host mithilfe des TCP/IP-Netzwerkmodells tatsächlich Daten über das Netzwerk sendet? Dies ist meine vollständige Beschreibung, wie Daten von einem Netzwerk in ein anderes übertragen werden. In diesem Beispiel sendet mein Computer eine Webseitenanforderung an einen Remote-Server.
Auf der Anwendungsebene initiiert der Browser eine HTTP-Verbindungsanforderungsnachricht an den Remote-Host www.example.com, um Daten zurückzusenden, die den Webseiteninhalt enthalten. Hier ist die Nachricht, sie enthält nur die IP-Adresse des Remote-Webservers.
Die Transportschicht kapselt die Nachricht mit der Webseitenanforderung in ein TCP-Datagramm, das an die IP-Adresse des Remote-Webservers gerichtet ist. Dieses Paket enthält jetzt zusammen mit dem ursprünglichen Anforderungspaket den Quellport, von dem aus die Anforderung gestellt wurde, normalerweise ein sehr großer Zufallsport, damit die zurückgegebenen Daten wissen, welchen Port der Browser überwacht. und der Zielport auf dem Remote-Host (in diesem Fall Port 80).
Die Internetschicht kapselt das TCP-Datagramm in ein Paket, das auch die Quell-IP-Adresse und die Ziel-IP-Adresse enthält.
Die Datenverbindungsschicht verwendet das Address Resolution Protocol (ARP), um die physische MAC-Adresse des Standardrouters zu identifizieren und Internetpakete in Frames zu kapseln, die die Quell- und Ziel-MAC-Adressen enthalten.
Frames werden über ein Kabel (normalerweise CAT5 oder CAT6) von der Netzwerkkarte auf dem lokalen Host an die Netzwerkkarte auf dem Standardrouter gesendet.
Der Standardrouter öffnet das Datagramm und ermittelt die Ziel-IP-Adresse. Ein Router verwendet seine eigene Routing-Tabelle, um die IP-Adresse des nächsten Routers zu identifizieren, der den Frame zum nächsten Schritt weiterleitet. Anschließend kapselt der Router den Frame erneut in ein neues Datagramm, das seinen eigenen MAC als Quelle und die MAC-Adresse des nächsten Routers enthält, der dann über die entsprechende Schnittstelle gesendet wird. Router führen ihre Routing-Aufgaben auf Layer 3 (Internet-Layer) durch.
Bitte beachten Sie, dass Schalter für alle Protokolle auf Layer 2 und höher unsichtbar sind und daher die Datenübertragung in keiner logischen Weise beeinflussen. Die Funktion eines Switches besteht einfach darin, eine einfache Methode zum Verbinden mehrerer Hosts in einem einzigen physischen Netzwerk über ein Ethernet-Kabel bereitzustellen.
Mit dem Befehl arp[-n] können Sie alle MAC-Adressen anzeigen, die ein Host in seiner Arp-Tabelle gespeichert hat. Dies sind immer Hosts im lokalen Netzwerk.
Routing-Tabelle
Alle Netzwerkgeräte, unabhängig davon, ob es sich um Hosts, Router oder andere Arten von Netzwerkknoten wie beispielsweise an das Netzwerk angeschlossene Drucker handelt, müssen entscheiden, wohin TCP/IP-Pakete weitergeleitet werden sollen. Routing-Tabellen stellen die Konfigurationsinformationen bereit, die für diese Entscheidungen erforderlich sind. Ähnlich wie die sehr einfache Routing-Tabelle in Abbildung 1 wird diese Routing-Tabelle verwendet, um eine einzelne Route zu definieren, die einem typischen lokalen Host zur Verfügung steht, und um zu bestimmen, ob Pakete an den Standard-Gateway-Router gesendet werden sollen. . Der Befehl route -n listet die Routing-Tabelle auf; die Option -n zeigt die Ergebnisse nur als IP-Adressen an und versucht nicht, eine DNS-Suche durchzuführen, die die IP-Adresse durch den Hostnamen ersetzt, falls verfügbar. Die Verwendung des Befehls netstat –RN führt zu sehr ähnlichen Ergebnissen.
[root@host1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.254 0.0.0.0 UG 100 0 0 eno1 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 eno1
Abbildung 1: Eine einfache Routing-Tabelle.
Bei Verwendung der Option -n wird das Standard-Gateway immer mit dem Ziel 0.0.0.0 angezeigt. Wenn -n nicht verwendet wird, erscheint das Wort „Standard“ in der Spalte „Ziel“ der Ausgabe. Die IP-Adresse in der Spalte „Gateway“ ist die IP-Adresse des ausgehenden Gateway-Routers. Eine Netzmaske von 0.0.0.0 für das Standard-Gateway bedeutet, dass unabhängig von der Netzwerkklasse jedes Paket in der Routing-Tabelle, das nicht über einen zusätzlichen Eintrag an das lokale Netzwerk oder einen anderen Outbound-Router adressiert ist, an das Standard-Gateway gesendet wird.
Die Iface-Spalte in Abbildung 1 ist der Name der ausgehenden Netzwerkkarte, in diesem Fall eno1. Für einen Host, der als Router fungiert, werden wahrscheinlich mindestens zwei und manchmal mehr NICs verwendet. Jede als Router verwendete Netzwerkkarte wird mit verschiedenen physischen und logischen Netzwerken verbunden. Das Flag in der Spalte Flags zeigt an, dass die Route Up (U) ist, was das Standard-Gateway (G) ist. Es können auch andere Anzeichen auftreten.
Für die meisten Gastgeber ist die Routing-Entscheidung sehr einfach:
Wenn sich der Zielhost im lokalen Netzwerk befindet, senden Sie die Daten direkt an den Zielhost.
Wenn sich der Zielhost in einem Remote-Netzwerk befindet, das über ein in der Routing-Tabelle aufgeführtes lokales Gateway erreichbar ist, senden Sie ihn an das explizit definierte Gateway.
Wenn sich der Zielhost in einem Remote-Netzwerk befindet und keine anderen Einträge eine Route zu diesem Host definieren, werden die Daten an das Standard-Gateway gesendet.
Diese Regeln bedeuten lediglich, dass das Paket an das Standard-Gateway gesendet wird, wenn alle anderen Vorgänge aufgrund einer Nichtübereinstimmung fehlschlagen.
Die Routing-Tabelle in Abbildung 2 unten ist etwas komplizierter, da sie zu einem Linux-Host gehört, der als Router fungiert und mit drei Netzwerken verbunden ist, von denen eines zum Internet führt. In der Tabelle gibt es Einträge für die lokalen Klasse-C-Netzwerke (192.168.0.0/24 auf Schnittstelle eth1, 192.168.25.0/24 auf eth2) sowie die Standardroute auf eth0 zum Rest der Welt.
[root@host2 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.24 0.0.0.0 255.255.255.252 U 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.25.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2 0.0.0.0 192.168.1.25 0.0.0.0 UG 0 0 0 eth0
Abbildung 2: Eine komplexere Routing-Tabelle mit mehreren Netzwerken.
Bitte beachten Sie, dass es immer noch nur ein Standard-Gateway gibt und dieses sich auf der Schnittstelle eth0 befindet. Allerdings gibt es neben dem Standardrouteintrag, der direkt auf die LAN-seitige IP-Adresse des Routers verweist, auch einen Eintrag für das gesamte Netzwerk 192.168.1.24/30. Das Netzwerk enthält nur zwei verfügbare IP-Adressen, eine für die LAN-Seite des Routers, 192.168.1.25/30, und eine für den Host selbst, 192.168.1.26/30.
Routing-Konfiguration
Wie konfiguriere ich also die Routing-Tabelle? Für Hosts, die über DHCP mit dem Netzwerk verbunden sind, stellt der DHCP-Server die Konfigurationsinformationen für diese Standardroute sowie DNS, die Host-IP-Adresse und möglicherweise andere Informationen (z. B. die IP-Adresse des NTP-Servers) bereit. Die statische Konfiguration ist normalerweise einfach, kann aber manchmal etwas komplex sein.
In den meisten Fällen führt das Hinzufügen einer Standardroute zur Datei /etc/sysconfig/network dazu, dass das Netzwerk eine Standardroute in der Routing-Tabelle konfiguriert. Dieser Eintrag ähnelt dem Beispiel in Abbildung 3.
GATEWAY=192.168.0.1
Abbildung 3: Gateway-Eintrag in der Netzwerkdatei.
Nur das Standard-Gateway kann mithilfe von Netzwerkdateien konfiguriert werden.
Eine andere Möglichkeit, das Standard-Gateway in einer statisch konfigurierten Umgebung zu konfigurieren, besteht darin, es zur entsprechenden Schnittstellenkonfigurationsdatei im Verzeichnis /etc/sysconfig/network-scripts hinzuzufügen. Um das Gateway zur Schnittstellenkonfigurationsdatei für die Schnittstelle eth0 hinzuzufügen, fügen Sie der Datei ifcfg-eth0 dieselben Zeilen wie in Abbildung 3 oben hinzu. Wenn Sie dies tun, sollte der Eintrag aus der Netzwerkdatei entfernt werden.
在更复杂的环境中,例如当主机使用多个NIC连接到多个网络时,以及至少需要在路由表中输入两条或更多条路由时,您应该考虑在其中使用路由文件。 / etc / sysconfig / network-scripts。 对于NIC enp7s1,该文件将是route-enp7s1,它将包含图4所示的条目。
default via 192.168.0.1 dev enp7s1
图4:enp7s1的默认路由条目。
路由接口文件中的默认网关设置将覆盖网络文件中可能列出的所有网关。
当然,您始终可以使用route命令从命令行添加路由。 如果您需要在每次系统引导时都执行此操作,则可能会花费一些时间,因此您可能要考虑使用上述方法,或创建在启动时运行的脚本。 我为我的系统之一编写了一个脚本,其中包含以下两行,如图5所示。
route del default route add default gw 192.168.0.1
图5:从命令行设置默认路由的命令。
请注意,设备名称在所有这些命令中都是可选的,在图5中未使用。
通过阅读本文,我们已经了解了如何使用常见的Linux路由检测命令,例如traceroute和mtr,以及如何利用tcpdump和wireshark来分析网络数据包。通过这些技巧,我们能够有效定位网络连接问题,并快速排除故障。相信这些知识对于广大Linux管理员和网络工程师都将有所帮助,让你们能够更加从容应对复杂的网络环境,提升自己的技术水平。
Das obige ist der detaillierte Inhalt vonDas Geheimnis der Verfolgung des Netzwerk-Routings: Linux-Routing-Erkennungsfähigkeiten gelüftet!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!