Ein unverzichtbares Werkzeug für die Netzwerkadministration ist der Ping-Befehl unter Linux. Möglicherweise haben Sie ping
verwendet vorher für die grundlegende Fehlerbehebung – aber was macht dieser Befehl?
Die ping
Der Befehl sendet ICMP-Anfragen (Internet Control Message Protocol) an entfernte oder lokale Hosts und wartet auf eine Antwort. Keine Antwort könnte auf ein Problem mit der Verbindung oder den Hosts selbst hinweisen.
Lesen Sie weiter und erkunden Sie die praktischen Möglichkeiten zur Verwendung des Ping-Befehls unter Linux!
Voraussetzungen
Dieses Tutorial wird eine praktische Demonstration sein. Wenn Sie mitmachen möchten, stellen Sie sicher, dass Sie einen Linux-Computer mit Internetverbindung haben. Dieses Tutorial verwendet einen Ubuntu 20.04-Computer.
Stellen Sie außerdem sicher, dass Sie bereits eine Terminalsitzung auf Ihrem Linux-Computer geöffnet haben.
Überprüfen der lokalen Netzwerkverbindung
Stellen Sie sich vor, Sie entwickeln eine Webanwendung. Der Test schlägt fehl, wenn Sie versuchen, über die Loopback-Adresse des Hosts (127.0.0.1) auf die Anwendung zuzugreifen. Bevor Sie sich die Haare ausreißen, um die Anwendung zu beheben, stellen Sie sicher, dass das TCP/IP-Protokoll intern funktioniert, indem Sie den ping
verwenden Befehl.
Die Standard-Loopback-Adressen sind 127.0.0.1 und 0:0:0:0:0:0:0:1 (oder ::1) für IPv4 bzw. IPv6.
Um die Konnektivität der Loopback-Adresse zu überprüfen, führen Sie den folgenden ping
aus Befehl gefolgt von der Loopback-Adresse auf dem Terminal. Dieser Befehl demonstriert die grundlegendste Verwendung von ping
Befehl unter Linux.
ping 127.0.0.1
Und wenn das Loopback gut funktioniert, sollten Sie eine ähnliche Ausgabe wie im Screenshot unten sehen.
Alternativ pingen Sie localhost
hostname sollte dasselbe Ergebnis liefern, da er standardmäßig in die Loopback-Adresse aufgelöst wird.
Zum Beenden des ping
Befehl, drücken Sie CTRL+C
auf dem Endgerät. Andernfalls wird der Ping-Befehl kontinuierlich ausgeführt.
Hinweis:Drücken Sie nicht STRG+Z, um den Ping-Befehl zu stoppen. Dadurch wird der Befehl beendet, aber der Prozess läuft im Hintergrund weiter.
Linux-Ausgabe des Ping-Befehls verstehen
Bevor Sie fortfahren, würden Sie davon profitieren, die Ausgabe explizit zu verstehen, anstatt sie nur als „es funktioniert“ zu interpretieren. Sehen Sie sich das Bild unten und die folgende Aufschlüsselung der Werte an.
- A (
bytes
) – Zeigt die Größe der ICMP-Echoanforderung (Paket) in Bytes an. - B (
from
) – Zeigt die IP-Adresse des Zielhostsfrom
wo dieping
Befehl erhält die Antwort. - C (
icmp_seq
) – Gibt die Reihenfolge der Paketübertragung an. Wie Sie sehen können, sendet ping die ICMP-Anfragen nacheinander. Der Wert zeigticmp_seq=N
, wobeiN
ist die Bestellnummer. - D (
TTL
) – Zeigt den Time-To-Live (TTL)-Wert der ICMP-Anfrage an. Der Standardwert ist 64, was bedeutet, dass die Anforderung nur bis zu 64 Hops leben kann und danach abläuft. Der maximal mögliche Wert ist 255. - E (
time
) – Die Gesamtzeit (Millisekunden), die verstrichen ist, bis die Anforderung das Ziel erreicht und zur Quelle zurückgekehrt ist. Dieser Wert wird auch als Round Trip Time (RTT) bezeichnet. Beachten Sie, dasstime
Werte sind in diesem Beispiel kleiner als 0,1 Millisekunden, da das Ziel dieselbe Maschine ist. Dietime
Wert erhöht sich natürlich, wenn dieping
Ziele sind abgelegen oder haben eine Internetadresse. - F (
statistics
) – Zeigt die Zusammenfassung und Statistik desping
Befehlsergebnisse. Die Zusammenfassung zeigt die Anzahl der gesendeten und empfangenen Pakete, den Prozentsatz der Paketverluste und die Gesamtzeit. Die untere Zeile zeigt das Minimum, den Durchschnitt (Mittelwert), das Maximum und die Standardabweichung der gesamten RTT.
Erzwingen der Version des Internetprotokolls
Der Ping-Befehl verwendet standardmäßig IPv4. Aber was ist, wenn Sie die Kompatibilität Ihrer Anwendung mit IPv6 testen? Um zu erzwingen, dass der Ping-Befehl IPv6 verwendet, müssen Sie die Option -6 für Ihren Ping-Befehl unter Linux angeben, wie Sie im folgenden Code sehen können.
ping -6 localhost
Wie Sie unten sehen können, zeigt die from-Antwort, dass die Antwort von der IPv6-Loopback-Adresse (::1) kam.
Anstelle der Option -6 zwingt die Option -4 Ping, IPv4 zu verwenden. Da Ping jedoch standardmäßig auf IPv4 eingestellt ist, müssen Sie die Option -4 normalerweise nicht angeben.
Begrenzung der Anzahl der Antworten
In den vorherigen Beispielen mussten Sie STRG+C drücken, um den Ping-Befehl zu beenden, da er andernfalls ständig ausgeführt würde.
Mit der Option -c können Sie die Anzahl der Antworten angeben, die der Ping-Befehl erhält, bevor er stoppt. Warum diese Option verwenden? In einigen Fällen möchten Sie vielleicht testen, wie Ihr System auf 10, 100, 1000 ICMP-Pakete usw. reagiert.
Führen Sie den folgenden Befehl aus, um fünf ICMP-Pakete an den Zielhost zu senden. Ersetzen Sie 5 durch die Anzahl der ICMP-Antworten, die vor dem Stoppen empfangen werden sollen.
ping -c 5 localhost
Wie Sie unten sehen können, stoppte der Ping-Befehl nach der fünften Anfrage (icmd_seq=5), und Sie mussten nicht STRG+C drücken, um ihn zu beenden.
Anpassen des Anfrageintervalls
Angenommen, Sie möchten die Netzwerkverbindung zwischen zwei Geräten testen, und eines davon hat eine geringe Bandbreite. In diesem Fall können Sie das Intervall zwischen den einzelnen Anfragen erhöhen, damit das zweite Gerät genügend Zeit hat, das aktuelle ICMP-Paket zu verarbeiten.
Die ping
Der Befehl sendet die nachfolgende ICMP-Anfrage standardmäßig eine Sekunde nach Abschluss der vorherigen. Um die Verzögerung anzupassen, müssen Sie den -i
angeben Option gefolgt vom Verzögerungswert in Sekunden.
Führen Sie beispielsweise den folgenden ping
aus Befehl zum Senden von fünf ICMP-Anfragen mit einem Zwei-Sekunden-Intervall zwischen den Anfragen.
ping -c 5 -i 2 localhost
Führen Sie als weiteres Beispiel den folgenden ping
aus Befehl zum Senden von fünf ICMP-Anfragen mit einem Intervall von einer halben Sekunde zwischen jeder Anfrage.
ping -c 5 -i 0.5 localhost
Vergleicht man die Ergebnisse beider Befehle mit unterschiedlichen Intervallen, so zeigt sich der Unterschied zwischen insgesamt time
Werte.
Simulation eines Hochwasserangriffs
Eine Ping-Flood ist eine Art Denial-of-Service-Angriff (DoS), bei dem der Angreifer versucht, ein Zielgerät mit ICMP-Paketen zu überfluten. Der Angriff zielt darauf ab, den Zielcomputer zu überfordern, so viele Anfragen zu beantworten, dass er überlastet und für legitime Benutzer nicht mehr verfügbar ist.
Sie können einen Flood-Angriff simulieren, um zu testen, wie Ihr System auf einen Angriff reagiert. Aber keine Sorge. Die Ping-Flut-Simulation wird gesteuert und Sie können sie jederzeit durch Drücken von STRG+C stoppen.
Führen Sie den folgenden Befehl auf Ihrem lokalen Computer aus, um zu sehen, wie viele Anfragen Ihr Gerät pro Sekunde verarbeiten kann. Der -f
Option bedeutet, mehrere Ping-Pakete schnell und ohne beliebige Begrenzung zu senden.
Ersetzen Sie localhost durch die IP-Adresse oder den Hostnamen der App, die Sie testen möchten. Dieses Beispiel simuliert die Ping-Flut nur auf dem lokalen Host. Lassen Sie den Ping-Befehl etwa fünf Sekunden laufen und drücken Sie dann CTRL+C
zu beenden.
Der Befehl ping -f erfordert, dass Sie der Root-Benutzer sind oder über sudo-Berechtigungen verfügen.
ping -f localhost
Wie Sie unten sehen können, hat der Ping-Befehl es geschafft, 124,685
zu senden und zu empfangen ICMP-Pakete innerhalb von 4276
Millisekunden mit 0%
Paketverlust. Ziemlich gut, oder? In einem realen Anwendungsfall werden Sie jedoch einige Paketverluste feststellen. Paketverlust ist unvermeidlich, da das Netzwerk nicht perfekt ist.
Überprüfen der Internetverbindung
Jeder nutzt das Internet auf irgendeine Weise, oder? Angenommen, Sie versuchen, eine Website mit Ihrem Browser zu laden, aber die Seitenladezeit fühlt sich träge an. Das Symptom würde darauf hinweisen, dass die DNS-Auflösung funktioniert, aber etwas die Netzwerkgeschwindigkeit beeinträchtigt.
Die Diagnose des Problems ohne Tools von Drittanbietern würde den ping
enthalten Befehl. Die Befehlsverwendung ist dieselbe wie beim Testen der lokalen Netzwerkkonnektivität. Aber anstatt auf die Loopback-Adresse abzuzielen, würden Sie eine öffentliche IP- oder Webadresse angeben.
Führen Sie den folgenden Befehl aus, um eine externe öffentliche Website zu pingen. Ersetzen Sie adamtheautomator.com mit einer anderen Webadresse nach Wunsch.
ping -c 5 adamtheautomator.com
Auf Anhieb werden Sie feststellen, dass der Zeitwert relativ höher ist, als wenn Sie den Localhost anpingen. Dieser erhöhte Zeitaufwand ist auf die Zieladresse adamtheautomator.com zurückzuführen befindet sich nicht auf demselben Host und nicht einmal auf demselben Netzwerk.
In den vorherigen Schritten war Ihr Ping-Befehl erfolgreich, aber in der Praxis kann es vorkommen, dass der Ping-Befehl aus vielen möglichen Gründen fehlschlägt.
Im Folgenden finden Sie einige häufige Fehler und deren Fehlerbehebung.
- Zielhost nicht erreichbar – Dieser Fehler bedeutet, dass es keine Route zum Zielhost gibt. Dieser Fehler kann auftreten, wenn der Host oder die Domain ausgefallen ist.
- Zeitüberschreitung bei Anfrage – Dieser Fehler bedeutet, dass die Anfrage an den Zielhost zu lange gedauert hat (über 4 Sekunden oder 4000 Millisekunden) und die Verbindung abgelaufen ist. Dieser Fehler kann auftreten, wenn der Zielhost zu beschäftigt ist, um zu antworten, eine Firewall die Verbindung blockiert oder die Netzwerkhardware (Kabel, Router usw.) defekt ist.
- Unbekannter Host – Dieser Fehler bedeutet, dass der DNS den Hostnamen nicht in eine IP-Adresse auflösen kann. Überprüfen Sie, ob Sie den richtigen Hostnamen eingegeben haben. Wenn Sie vermuten, dass Ihr Router nicht richtig funktioniert, versuchen Sie, Ihren Router neu zu starten.
- TTL während der Übertragung abgelaufen – Dieser Fehler bedeutet, dass die ICMP-Anforderung abgelaufen ist, bevor sie ihr Ziel erreicht hat. Ihr Ping-Paket wird auf Null (0) reduziert, bevor es den Zielhost erreicht. In den meisten Fällen kann eine Fehlkonfiguration in Ihrer Routing-Tabelle diesen Fehler verursachen. Erwägen Sie, Ihre Routing-Tabelle zu überprüfen, um festzustellen, ob ein Problem vorliegt.
Falls Sie es nicht wussten:Spieler beziehen sich in der Gaming-Community auf Ping als ihre Verbindung zum Spielserver. Ein niedriger Ping bedeutet eine reaktionsschnellere Verbindung, insbesondere in schnellen Spielen. Ein hoher Ping weist auf eine weniger reaktionsschnelle Verbindung hin und kann dazu führen, dass sich das Spiel träge anfühlt.
Einige Internetdienstanbieter (ISPs) geben statt einer Fehlermeldung eine Suchseite zurück, wenn Sie versuchen, eine Verbindung zu einer nicht vorhandenen Website herzustellen. Möglicherweise erhalten Sie ein falsch positives Ergebnis, weil Sie statt einer Fehlermeldung eine Antwort erhalten.
Ping-Ausgabe in einer Datei speichern
Die meisten Befehle, wenn nicht alle, geben nur die Ergebnisse auf dem Bildschirm und den ping
zurück Befehl in Linux ist nicht anders. Das Linux-Terminal verfügt über integrierte Ausgabeumleitungsoperatoren, mit denen Sie die Ausgabe in eine Datei umleiten können.
Diese Umleitungsoperatoren sind die folgenden:
(>
) Zeichen, das den Inhalt der Datei überschreibt, und das;
(>>
) Zeichen, das die Ausgabe an den vorhandenen Inhalt anhängt.
Aber warum sollten Sie die Ping-Ergebnisse in einer Datei speichern? Hauptsächlich für die Aufzeichnung und spätere Analyse mit einem Texteditor oder einem Protokollparser.
Sie können auch ein Tabellenkalkulationsprogramm verwenden, um ein Diagramm zu erstellen, das zeigt, wie sich die Ping-Zeit im Laufe der Zeit ändert.
Führen Sie den folgenden Befehl aus, um die Ping-Ausgabe in einer Datei zu speichern. Dieser Befehl schreibt die gesamte Standardausgabe von ping
Befehl in eine Datei namens log.txt auf der Festplatte.
ping -c 10 localhost > log.txt
Während der ping
Befehl ausgeführt wird, werden Sie feststellen, dass keine Ausgabe auf dem Bildschirm erfolgt.
Öffnen Sie nun die log.txt Datei in einem Texteditor wie nano
. Oder zeigen Sie den Inhalt der Datei an, indem Sie cat
ausführen Befehl.
# Open in a text editor
nano log.txt
# OR
# Display the contents on the screen
cat log.txt
Schlussfolgerung
In diesem Tutorial haben Sie anhand verschiedener praktischer Beispiele gelernt, wie Sie den Ping-Befehl Linux verwenden. Sie haben auch gelernt, wie Sie die Ping-Ausgabe in einer Datei auf der Festplatte speichern, damit Sie sie später analysieren können.
An diesem Punkt sollten Sie gut verstehen, wie der Ping-Befehl funktioniert und wie er hilfreich sein kann. Aber bevor Sie loslegen und alles in Sichtweite pingen, müssen Sie einige Regeln in Ihren Sicherheitsgruppen aktivieren, um ICMP-Verkehr zuzulassen.
Vielen Dank fürs Lesen und viel Spaß beim Lernen!