Versuchen Sie, Datenpakete zu erfassen, um den Datenverkehr in Ihrem Netzwerk zu analysieren? Möglicherweise sind Sie ein Serveradministrator, der auf ein Problem gestoßen ist und die im Netzwerk übertragenen Daten überwachen möchte. In jeder Situation benötigen Sie das Linux-Dienstprogramm tcpdump.
In diesem Artikel werden wir den Befehl tcpdump ausführlich erläutern, zusammen mit einigen Anleitungen zur Installation und Verwendung von tcpdump auf Ihrem Linux-System.
Was ist der Befehl tcpdump?
Tcpdump ist ein leistungsstarkes Netzwerküberwachungstool, mit dem ein Benutzer Pakete und Datenverkehr in einem Netzwerk effizient filtern kann. Sie können detaillierte Informationen zu TCP / IP und den in Ihrem Netzwerk übertragenen Paketen erhalten. Tcpdump ist ein Befehlszeilenprogramm, dh Sie können es auf Linux-Servern ohne Anzeige ausführen.
Systemadministratoren können das Dienstprogramm tcpdump auch in integrieren cron um verschiedene Aufgaben wie die Protokollierung zu automatisieren. Da tcpdump aufgrund seiner zahlreichen Funktionen sehr vielseitig einsetzbar ist, dient es sowohl als Fehlerbehebung als auch als Sicherheitstool.
So installieren Sie tcpdump unter Linux
Während tcpdump die meiste Zeit auf Ihrem System vorinstalliert ist, werden einige Linux-Distributionen nicht mit dem Paket geliefert. Daher müssen Sie das Dienstprogramm möglicherweise manuell auf Ihrem System installieren.
Sie können überprüfen, ob tcpdump auf Ihrem System installiert ist, indem Sie die welche Befehl.
welche tcpdump
Wenn die Ausgabe einen Verzeichnispfad anzeigt (/usr/bin/tcpdump), dann hat Ihr System das Paket installiert. Wenn nicht, können Sie dies problemlos mit dem Standardpaketmanager auf Ihrem System tun.
So installieren Sie tcpdump auf Debian-basierten Distributionen wie Ubuntu:
sudo apt-get install tcpdump
Die Installation von tcpdump unter CentOS ist ebenfalls einfach.
sudo yum installiere tcpdump
Zu Arch-basierten Distributionen:
sudo pacman -S tcpdump
So installieren Sie auf Fedora:
sudo dnf tcpdump installieren
Beachten Sie, dass das Paket tcpdump erforderlich ist libcap Stellen Sie daher als Abhängigkeit sicher, dass Sie es auch auf Ihrem System installieren.
Tcpdump-Beispiele zum Erfassen von Netzwerkpaketen unter Linux
Nachdem Sie tcpdump erfolgreich auf Ihrem Linux-Computer installiert haben, ist es Zeit, einige Pakete zu überwachen. Da für tcpdump Superuser-Berechtigungen erforderlich sind, um die meisten Vorgänge auszuführen, müssen Sie hinzufügen sudo zu Ihren Befehlen.
1. Alle Netzwerkschnittstellen auflisten
Verwenden Sie die Taste, um zu überprüfen, welche Netzwerkschnittstellen für die Erfassung verfügbar sind -D Flag mit dem Befehl tcpdump.
tcpdump -D
Vorbei an der --list-interfaces Das Flag als Argument gibt dieselbe Ausgabe zurück.
tcpdump --list-interfaces
Die Ausgabe ist eine Liste aller Netzwerkschnittstellen, die auf Ihrem System vorhanden sind.
Nachdem Sie die Liste der Netzwerkschnittstellen erhalten haben, ist es Zeit, Ihr Netzwerk zu überwachen, indem Sie Pakete auf Ihrem System erfassen. Obwohl Sie angeben können, welche Schnittstelle Sie verwenden möchten, können Sie die irgendein Argumentbefehle tcpdump zum Erfassen von Netzwerkpaketen über eine beliebige aktive Schnittstelle.
tcpdump - Schnittstelle beliebig
Das System zeigt die folgende Ausgabe an.
Verbunden: Was ist das Open Systems Interconnection-Modell?
2. Das tcpdump-Ausgabeformat
Ausgehend von der dritten Zeile bezeichnet jede Zeile der Ausgabe ein bestimmtes Paket, das von tcpdump erfasst wird. So sieht die Ausgabe eines einzelnen Pakets aus.
17: 00: 25.369138 wlp0s20f3 Out IP localsystem.40310> kul01s10-in-f46.1e100.net.https: Flags [P.], Seq 196: 568, ack 1, win 309, options [nop, nop, TS val 117964079 ecr 816509256], Länge 33
Beachten Sie, dass nicht alle Pakete auf diese Weise erfasst werden. Dies ist jedoch das allgemeine Format, dem die meisten von ihnen folgen.
Die Ausgabe enthält die folgenden Informationen.
- Zeitstempel des empfangenen Pakets
- Name der Schnittstelle
- Paketfluss
- Name des Netzwerkprotokolls
- IP-Adresse und Portdetails
- TCP-Flags
- Die Sequenznummer der Daten im Paket
- Daten bestätigen
- Fenstergröße
- Paketlänge
Das erste Feld (17:00:25.369138) zeigt den Zeitstempel an, zu dem Ihr System das Paket gesendet oder empfangen hat. Die aufgezeichnete Zeit wird aus der Ortszeit Ihres Systems extrahiert.
Das zweite und dritte Feld bezeichnen die verwendete Schnittstelle und den Paketfluss. Im obigen Ausschnitt wlp0s20f3 ist der Name der drahtlosen Schnittstelle und aus ist der Paketfluss.
Das vierte Feld enthält Informationen zum Netzwerkprotokollnamen. Im Allgemeinen finden Sie zwei Protokolle: IP und IP6, wobei IP IPV4 und IP6 IPV6 bedeutet.
Das nächste Feld enthält die IP-Adressen oder den Namen des Quell- und Zielsystems. Auf die IP-Adressen folgt die Portnummer.
Das sechste Feld in der Ausgabe besteht aus TCP-Flags. Es gibt verschiedene Flags, die in der Ausgabe von tcpdump verwendet werden.
Flaggenname | Wert | Beschreibung |
---|---|---|
SYN | S. | Die Verbindung wurde gestartet |
FLOSSE | F. | Verbindung beendet |
DRÜCKEN | P. | Daten werden gepusht |
RST | R. | Die Verbindung wird zurückgesetzt |
ACK | . | Wissen |
Die Ausgabe kann auch eine Kombination mehrerer TCP-Flags enthalten. Beispielsweise, FLAGGE [f.] steht für ein FIN-ACK-Paket.
Wenn Sie sich im Ausgabeausschnitt weiter bewegen, enthält das nächste Feld die Sequenznummer (seq 196: 568) der Daten im Paket. Das erste Paket hat immer einen positiven ganzzahligen Wert, und die nachfolgenden Pakete verwenden die relative Sequenznummer, um den Datenfluss zu verbessern.
Das nächste Feld enthält die Bestätigungsnummer (ack 1) oder einfache Bestätigungsnummer. Das auf dem Gerät des Absenders erfasste Paket hat 1 als Bestätigungsnummer. Auf der Empfängerseite ist die Bestätigungsnummer der Wert des nächsten Pakets.
Das neunte Feld in der Ausgabe enthält die Fenstergröße (309 gewinnen), dh die Anzahl der im Empfangspuffer verfügbaren Bytes. Es gibt mehrere andere Felder, die der Fenstergröße folgen, einschließlich der maximalen Segmentgröße (MSS).
Das letzte Feld (Länge 33) enthält die Länge des von tcpdump erfassten Gesamtpakets.
3. Begrenzen Sie die Anzahl der erfassten Pakete
Während Sie den Befehl tcpdump zum ersten Mal ausführen, stellen Sie möglicherweise fest, dass das System weiterhin Netzwerkpakete erfasst, bis Sie ein Interrupt-Signal übergeben. Sie können dieses Standardverhalten überschreiben, indem Sie die Anzahl der Pakete angeben, die Sie zuvor mit dem erfassen möchten -c Flagge.
tcpdump - Schnittstelle beliebig -c 10
Der oben genannte Befehl erfasst zehn Pakete von jeder aktiven Netzwerkschnittstelle.
4. Filtern von Paketen basierend auf Feldern
Wenn Sie ein Problem beheben, wird es nicht einfacher, einen großen Textblock auf Ihrem Terminal auszugeben. Hier kommt die Filterfunktion in tcpdump ins Spiel. Sie können die Pakete nach verschiedenen Feldern filtern, einschließlich Host, Protokoll, Portnummer und mehr.
Geben Sie Folgendes ein, um nur TCP-Pakete zu erfassen:
tcpdump - Schnittstelle beliebig -c 5 tcp
Wenn Sie die Ausgabe anhand der Portnummer filtern möchten, gehen Sie wie folgt vor:
tcpdump - Schnittstelle beliebig -c 5 Port 50
Der oben genannte Befehl ruft nur Pakete ab, die über den angegebenen Port übertragen wurden.
So erhalten Sie die Paketdetails für einen bestimmten Host:
tcpdump - Schnittstelle für jeden -c 5-Host 112.123.13.145
Wenn Sie von einem bestimmten Host gesendete oder empfangene Pakete filtern möchten, verwenden Sie die Option src oder dst Argument mit dem Befehl.
tcpdump - Schnittstelle beliebig -c 5 src 112.123.13.145
tcpdump - Schnittstelle beliebig -c 5 dst 112.123.13.145
Sie können auch die logischen Operatoren verwenden und und oder zwei oder mehr Ausdrücke miteinander zu kombinieren. Zum Beispiel, um Pakete abzurufen, die zur Quell-IP gehören 112.123.13.145 und benutze den Port 80:
tcpdump - Schnittstelle beliebig -c 10 src 112.123.13.145 und Port 80
Komplexe Ausdrücke können mit gruppiert werden Klammern wie folgt:
tcpdump - Schnittstelle beliebig -c 10 "(src 112.123.13.145 oder src 234.231.23.234) und (Port 45 oder Port 80)"
5. Zeigen Sie den Inhalt des Pakets an
Du kannst den... benutzen -EIN und -x Flags mit dem Befehl tcpdump, um den Inhalt des Netzwerkpakets zu analysieren. Das -EIN Flagge steht für ASCII Format und -x bezeichnet hexadezimal Format.
So zeigen Sie den Inhalt des nächsten vom System erfassten Netzwerkpakets an:
tcpdump - Schnittstelle beliebig -c 1 -A
tcpdump - Schnittstelle beliebig -c 1 -x
Verbunden: Was ist Paketverlust und wie kann die Ursache behoben werden?
6. Speichern Sie die Erfassungsdaten in einer Datei
Wenn Sie die Erfassungsdaten zu Referenzzwecken speichern möchten, hilft Ihnen tcpdump. Übergeben Sie einfach die -w Flag mit dem Standardbefehl, um die Ausgabe in eine Datei zu schreiben, anstatt sie auf dem Bildschirm anzuzeigen.
tcpdump - Schnittstelle beliebig -c 10 -w data.pcap
Das .pcap Dateierweiterung steht für Paketerfassung Daten. Sie können den oben genannten Befehl auch im ausführlichen Modus mit dem Befehl ausführen -v Flagge.
tcpdump - Schnittstelle beliebig -c 10 -w data.pcap -v
Um a zu lesen .pcap Datei mit tcpdump, verwenden Sie die -r Flag gefolgt vom Dateipfad. Das -r steht für Lesen.
tcpdump -r data.pcap
Sie können Netzwerkpakete auch aus den in der Datei gespeicherten Paketdaten filtern.
tcpdump -r data.pcap Port 80
Überwachen des Netzwerkverkehrs unter Linux
Wenn Sie mit der Verwaltung eines Linux-Servers beauftragt wurden, ist der Befehl tcpdump ein hervorragendes Tool, das Sie in Ihr Arsenal aufnehmen können. Sie können Netzwerkprobleme einfach beheben, indem Sie in Ihrem Netzwerk übertragene Pakete in Echtzeit erfassen.
Zuvor muss Ihr Gerät jedoch mit dem Internet verbunden sein. Für Linux-Anfänger kann es sogar eine Herausforderung sein, sich über die Befehlszeile mit dem Wi-Fi zu verbinden. Aber wenn Sie die richtigen Werkzeuge verwenden, ist es ein Kinderspiel.
Möchten Sie über die Linux-Befehlszeile eine Verbindung zu einem Wi-Fi-Netzwerk herstellen? Folgendes müssen Sie über den Befehl nmcli wissen.
Weiter lesen
- Linux
- Sicherheit
- Netzwerkforensik
Deepesh ist der Junior Editor für Linux bei MUO. Er schreibt seit über 3 Jahren Informationsinhalte im Internet. In seiner Freizeit schreibt er gerne, hört Musik und spielt Gitarre.
Abonnieren Sie unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Noch ein Schritt…!
Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.