Wenn das Netzwerk nicht richtig funktioniert oder Sie einfach nur verstehen möchten, was genau über die Kabel übertragen wird, hilft Ihnen tcpdump. Es ist wie ein Stethoskop für Ihren Server – ein Tool, mit dem Sie den Netzwerkverkehr in Echtzeit „abhören” können. Auf den ersten Blick mag es kompliziert erscheinen, aber in Wirklichkeit ist es ein sehr leistungsfähiger und zuverlässiger Helfer für Systemadministratoren und alle neugierigen Linux-Benutzer.
In diesem Artikel werden wir nicht näher auf die Theorie der Netzwerke eingehen. Stattdessen kommen wir gleich zur Sache und betrachten konkrete Beispiele für Befehle, die Sie in Ihrer täglichen Arbeit anwenden können. Sie lernen, Pakete nach IP-Adressen, Ports und Protokolltypen zu filtern, um schnell die gewünschten Informationen aus der Flut von Netzwerkdaten zu finden.
Unsere Beispiele helfen Ihnen dabei, Verbindungsprobleme zu diagnostizieren, verdächtige Aktivitäten zu verfolgen oder einfach nur Ihre Neugier darüber zu befriedigen, wie Programme miteinander kommunizieren. Beginnen wir mit den einfachsten Befehlen und gehen wir dann schrittweise zu fortgeschritteneren Anwendungsszenarien über.
Tcpdump ist ein nützliches Dienstprogramm in Linux zum Abhören und Analysieren von Netzwerkverkehr, das häufig von Administratoren und Entwicklern verwendet wird, um zu verstehen, was im Netzwerk vor sich geht: zum Beispiel, warum ein Dienst nicht funktioniert, wer den Kanal belastet oder ob es verdächtige Verbindungen gibt. Mit einfachen Befehlen können Sie den Datenverkehr nach IP, Ports, Protokollen oder Schnittstellen filtern, ihn zur weiteren Analyse speichern oder in Echtzeit anzeigen. Das ist so, als würde man sich in ein Gespräch zwischen Computern einschalten und verstehen, worüber sie kommunizieren.
- Installation
- Syntax
- Optionen
- Filter
- Anwendungsbeispiele
- Anzeigen der Schnittstellenliste
- Normale Datenerfassung
- Traffic-Erfassung mit der Option -v
- Optionen -w und -r
- Filterung nach IP
- Filterung nach HOST
- Anwendung des Filters and und or
- Filter port und portrange
- Filterung nach Protokollen
- Filter net
- Filterung nach Paketgröße
Installation
Die meisten Entwickler von Linux-basierten Betriebssystemen nehmen das Dienstprogramm tcpdump in die Liste der vorinstallierten Programme auf, aber wenn es aus irgendeinem Grund in Ihrer Distribution fehlt, können Sie es jederzeit herunterladen und über „Terminal”. Wenn Sie ein Debian-basiertes Betriebssystem verwenden, wie Ubuntu, Linux Mint, Kali Linux und ähnliche, müssen Sie diesen Befehl ausführen:
sudo apt install tcpdump
Bei der Installation müssen Sie ein Passwort eingeben. Beachten Sie, dass es bei der Eingabe nicht angezeigt wird. Zur Bestätigung der Installation müssen Sie außerdem das Zeichen „D” und drücken Sie Enter.
Wenn Sie Red Hat, Fedora oder CentOS verwenden, sieht der Befehl für die Installation wie folgt aus:
sudo yam install tcpdump
Sobald das Dienstprogramm installiert ist, kann es sofort verwendet werden. Darüber und über vieles andere wird weiter unten im Text berichtet.
Syntax
Wie jeder andere Befehl hat auch tcpdump seine eigene Syntax. Wenn Sie diese kennen, können Sie alle erforderlichen Parameter festlegen, die bei der Ausführung des Befehls berücksichtigt werden. Die Syntax sieht wie folgt aus:
tcpdump Optionen -i Schnittstelle Filter
Bei Verwendung des Befehls müssen Sie unbedingt die Schnittstelle für die Verfolgung angeben. Filter und Optionen sind keine obligatorischen Variablen, ermöglichen jedoch eine flexiblere Konfiguration.
Optionen
Auch wenn die Angabe der Option nicht zwingend erforderlich ist, sollten dennoch alle verfügbaren Optionen aufgelistet werden. Die Tabelle enthält nicht die gesamte Liste, sondern nur die beliebtesten Optionen, die jedoch für die meisten Aufgaben völlig ausreichen.
| Option | Definition |
|---|---|
| -A | Ermöglicht das Sortieren von Paketen im ASCII-Format. |
| -l | Fügt eine Scroll-Funktion hinzu. |
| -i | Nach der Eingabe muss die Netzwerk-Schnittstelle angegeben werden, die überwacht werden soll. Um mit der Überwachung aller Schnittstellen zu beginnen, geben Sie nach der Option das Wort „any” ein. |
| -c | Beendet den Tracking-Prozess nach Überprüfung der angegebenen Anzahl von Paketen. |
| -w | Erzeugt eine Textdatei mit dem Prüfbericht. |
| -e | Zeigt den Internetverbindungsstatus des Datenpakets an. |
| -L | Gibt nur die Protokolle aus, die von der angegebenen Netzwerkschnittstelle unterstützt werden. |
| -C | Erstellt während der Aufzeichnung des Pakets eine weitere Datei, wenn dessen Größe die festgelegte Größe überschreitet. |
| -r | Öffnet eine Datei zum Lesen, die mit der Option -w erstellt wurde. |
| -j | Zum Aufzeichnen der Pakete wird das Format TimeStamp verwendet. |
| -J | Ermöglicht die Anzeige aller verfügbaren TimeStamp-Formate. |
| -G | Dient zum Erstellen einer Datei mit Protokollen. Die Option erfordert auch die Angabe eines Zeitwerts, nach dessen Ablauf ein neues Protokoll erstellt wird. |
| -v, -vv, -vvv | Je nach Anzahl der Zeichen in der Option wird die Ausgabe des Befehls detaillierter (die Erhöhung ist direkt proportional zur Anzahl der Zeichen) |
| -f | Zeigt in der Ausgabe den Domänennamen der IP-Adressen an. |
| -F | Ermöglicht das Auslesen von Informationen nicht aus der Netzwerkschnittstelle, sondern aus der angegebenen Datei |
| -D | Zeigt alle Netzwerk-Schnittstellen an, die verwendet werden können |
| -n | Deaktiviert die Anzeige von Domänennamen |
| -Z | Legt den Benutzer fest, unter dessen Konto alle Dateien erstellt werden. |
| -K | Überspringen der Prüfsummenanalyse |
| -q | Anzeige von Kurzinformationen |
| -H | Ermöglicht die Erkennung von 802.11s-Headern |
| -I | Wird beim Erfassen von Paketen im Überwachungsmodus verwendet. |
Nachdem wir die Optionen erläutert haben, werden wir uns nun direkt ihrer Anwendung zuwenden. Zunächst werden jedoch die Filter betrachtet.
Filter
Wie bereits zu Beginn des Artikels erwähnt, können Sie Filter zur tcpdump-Syntax hinzufügen. Im Folgenden werden die beliebtesten davon vorgestellt:
| Filter | Definition |
|---|---|
| host | Dient zur Angabe des Hostnamens |
| net | Gibt die IP-Subnetz- und Netzwerkadresse an |
| ip | Dient zur Angabe der Protokolladresse |
| src | Gibt Pakete aus, die von der angegebenen Adresse gesendet wurden |
| dst | Gibt die Pakete aus, die von der angegebenen Adresse empfangen wurden |
| arp, udp, tcp | Filterung nach einem der Protokolle |
| port | Zeigt Informationen zu einem bestimmten Port an. |
| and, or | Dient zum Kombinieren mehrerer Filter in einem Befehl. |
| weniger, größer | Ausgabe von Paketen, die kleiner oder größer als die angegebene Größe sind |
Alle oben genannten Filter können miteinander kombiniert werden, sodass Sie in der Ausgabe des Befehls nur die Informationen sehen, die Sie sehen möchten. Um die Verwendung der oben genannten Filter genauer zu verstehen, lohnt es sich, Beispiele anzuführen.
Anwendungsbeispiele
Im Folgenden werden häufig verwendete Syntaxvarianten des Befehls tcpdump aufgeführt. Es ist nicht möglich, alle aufzuzählen, da es unendlich viele Variationen geben kann.
Anzeigen der Schnittstellenliste
Es wird jedem Benutzer empfohlen, zunächst die Liste aller seiner Netzwerk-Schnittstellen zu überprüfen, die verfolgt werden können. Aus der obigen Tabelle wissen wir, dass Sie dazu die Option -D, führen Sie daher im Terminal den folgenden Befehl aus:
sudo tcpdump -D
Beispiel:
Wie Sie sehen können, gibt es in diesem Beispiel acht Schnittstellen, die mit dem Befehl tcpdump angezeigt werden können. In diesem Artikel werden Beispiele mit ppp0, sie können aber auch jede andere verwenden.
Normale Datenerfassung
Wenn Sie eine einzelne Netzwerkschnittstelle überwachen möchten, können Sie dies mit der Option -i. Vergessen Sie nicht, nach der Eingabe den Namen der Schnittstelle anzugeben. Hier ein Beispiel für die Ausführung eines solchen Befehls:
sudo tcpdump -i ppp0
Bitte beachten Sie: Vor dem Befehl muss „sudo“ eingegeben werden, da dieser Superuser-Rechte erfordert.
Beispiel:
Hinweis: Nach dem Drücken der Eingabetaste werden im Terminal kontinuierlich die abgefangenen Pakete angezeigt. Um den Datenfluss zu stoppen, drücken Sie die Tastenkombination Strg+C.
Wenn Sie den Befehl ohne zusätzliche Optionen und Filter ausführen, wird das folgende Format für die Anzeige der verfolgten Pakete angezeigt:
22:18:52.597573 IP vrrp-topf2.p.mail.ru. https > 10.0.6.67.35482: Flags [P.], seq 1:595, ack 1118, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594
Wo farbig hervorgehoben:
| Blau | Zeitpunkt des Paketempfangs |
| Orange | Protokollversion |
| Grün | Absenderadresse |
| Violett | Empfängeradresse |
| Grau | Weitere Informationen zu tcp |
| Rot | Paketgröße (angezeigt in Byte) |
Diese Syntax kann im Fenster „Terminal” ohne zusätzliche Optionen.
Traffic-Erfassung mit der Option -v
Wie aus der Tabelle hervorgeht, ist die Option -v ermöglicht es, die Informationsmenge zu erhöhen. Lassen Sie uns dies anhand eines Beispiels erläutern. Überprüfen wir dieselbe Schnittstelle:
sudo tcpdump -v -i ppp0
Beispiel:

Hier sehen Sie, dass die folgende Zeile in der Ausgabe erscheint:
IP (tos 0x0, ttl 58, id 30675, offset 0, flags [DF], proto TCP (6), length 52
Wo die Farbe hervorgehoben ist:
| Orange | Protokollversion |
| Blau | Lebensdauer des Protokolls |
| Grün | Länge des Feldtitels |
| Violett | Version des Pakets tcp |
| Rot | Paketgröße (angezeigt in Byte) |
Sie können auch die Option -vv oder -vvv, dadurch kann noch mehr Information auf dem Bildschirm angezeigt werden.
Optionen -w und -r
In der Optionstabelle wurde die Möglichkeit erwähnt, alle ausgegebenen Daten in einer separaten Datei zu speichern, um sie später anzeigen zu können. Dafür ist die Option -w. Die Verwendung ist recht einfach: Geben Sie ihn einfach im Befehl an und tragen Sie dann den Namen der zukünftigen Datei mit der Erweiterung ein „.pcap“. Verwenden. Betrachten wir alles anhand eines Beispiels:
sudo tcpdump -i ppp0 -w file.pcap
Beispiel:
Bitte beachten Sie: Während der Protokollierung in die Datei wird auf dem Bildschirm „Terminal“ kein Text angezeigt.
Wenn Sie die aufgezeichnete Ausgabe anzeigen möchten, müssen Sie die Option -r, nach dem Sie den Namen der zuvor gespeicherten Datei eingeben müssen. Er wird ohne weitere Optionen und Filter angewendet:
sudo tcpdump -r file.pcap
Beispiel:

Beide Optionen eignen sich hervorragend für Fälle, in denen große Textmengen für die spätere Analyse gespeichert werden müssen.
Filterung nach IP
Aus der Filtertabelle wissen wir, dass dst ermöglicht es, nur die Pakete auf dem Konsolenbildschirm anzuzeigen, die von der in der Befehlssyntax angegebenen Adresse empfangen wurden. Auf diese Weise können Sie die von Ihrem Computer empfangenen Pakete sehr bequem anzeigen. Dazu müssen Sie im Befehl lediglich Ihre IP-Adresse angeben:
sudo tcpdump -i ppp0 ip dst 10.0.6.67
Beispiel:
Wie Sie sehen können, haben wir neben dst, im Befehl auch den Filter ip. Mit anderen Worten, wir haben dem Computer gesagt, dass er bei der Auswahl der Pakete auf deren IP-Adresse achten soll und nicht auf andere Parameter.
Anhand der IP-Adresse können auch gesendete Pakete gefiltert werden. Nehmen wir wieder unsere IP-Adresse als Beispiel. Das heißt, wir verfolgen nun, welche Pakete von unserem Computer an andere Adressen gesendet werden. Dazu müssen Sie den folgenden Befehl ausführen:
sudo tcpdump -i ppp0 ip src 10.0.6.67
Beispiel:

Wie Sie sehen können, haben wir im Befehlssyntax den Filter geändert dst auf src, damit Sie dem Rechner mitteilen, dass er den Absender anhand der IP-Adresse suchen soll.
Filterung nach HOST
Analog zu IP können wir im Befehl den Filter host, um Pakete mit dem gewünschten Host herauszufiltern. Das heißt, in der Syntax muss anstelle der IP-Adresse des Absenders/Empfängers dessen Host angegeben werden. Das sieht wie folgt aus:
sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com
Beispiel:
Auf dem Bild sehen Sie, dass in „Terminal“ werden nur die Pakete angezeigt, die von unserer IP-Adresse an den Host google.com gesendet wurden. Wie Sie sehen können, können Sie anstelle des Hosts google auch einen beliebigen anderen eingeben.
Wie bei der Filterung nach IP, in der Syntax dst kann ersetzt werden durch src, um die Pakete zu sehen, die an Ihren Computer gesendet werden:
sudo tcpdump -i ppp0 src host google-public-dns-a.google.com
Bitte beachten Sie: Der Filter host muss nach dst oder src stehen, sonst gibt der Befehl eine Fehlermeldung aus. Bei der Filterung nach IP stehen dst und src hingegen vor dem Filter ip.
Anwendung des Filters and und or
Wenn Sie mehrere Filter in einem Befehl verwenden müssen, müssen Sie dazu den Filter and oder oder (je nach Fall). Indem Sie Filter in der Syntax angeben und sie mit diesem Operator trennen, „zwingen” Sie sie, als Einheit zu arbeiten. Am Beispiel sieht das wie folgt aus:
sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254
Beispiel:
Aus der Syntax des Befehls geht hervor, dass wir Folgendes auf dem Bildschirm anzeigen möchten „Terminal” alle Pakete, die an die Adresse 95.47.144.254 gesendet wurden, und Pakete, die von derselben Adresse empfangen wurden. Sie können auch einige Variablen in diesem Ausdruck ändern. Geben Sie beispielsweise anstelle von IP HOST an oder ersetzen Sie die Adressen selbst.
Filter port und portrange
Filter port eignet sich hervorragend für Fälle, in denen Sie Informationen über Pakete mit einem bestimmten Port erhalten möchten. Wenn Sie also nur DNS-Antworten oder -Anfragen sehen möchten, müssen Sie den Port 53 angeben:
sudo tcpdump -vv -i ppp0 port 53
Beispiel:
Verwendet. Wenn Sie HTTP-Pakete anzeigen möchten, müssen Sie den Port 80 eingeben:
sudo tcpdump -vv -i ppp0 port 80
Beispiel:
Außerdem besteht die Möglichkeit, einen ganzen Portbereich zu überwachen. Dazu wird der Filter portrange:
sudo tcpdump portrange 50-80
Wie Sie sehen können, in Verbindung mit dem Filter portrange es ist nicht erforderlich, zusätzliche Optionen anzugeben. Es reicht aus, nur den Bereich festzulegen.
Filterung nach Protokollen
Sie können auch nur den Datenverkehr anzeigen, der einem bestimmten Protokoll entspricht. Dazu müssen Sie den Namen dieses Protokolls als Filter verwenden. Betrachten wir ein Beispiel udp:
sudo tcpdump -vvv -i ppp0 udp
Beispiel:

Wie Sie auf dem Bild sehen können, wird nach der Ausführung des Befehls in „Terminal” nur Pakete mit dem Protokoll udp. Entsprechend können Sie auch nach anderen Kriterien filtern, zum Beispiel arp:
sudo tcpdump -vvv -i ppp0 arp
oder tcp:
sudo tcpdump -vvv -i ppp0 tcp
Filter net
Operator net hilft dabei, Pakete anhand ihrer Netzwerkbezeichnung zu filtern. Die Verwendung ist genauso einfach wie bei den anderen – Sie müssen in der Syntax das Attribut) net, und anschließend die Netzwerkadresse eingeben. Hier ein Beispiel für einen solchen Befehl:
sudo tcpdump -i ppp0 net 192.168.1.1
Beispiel:
Filterung nach Paketgröße
Wir haben noch zwei interessante Filter nicht betrachtet: less und greater. Aus der Tabelle mit den Filtern wissen wir, dass sie dazu dienen, Datenpakete auszugeben, die größer sind als (less oder weniger ()greater der Größe angeben, die nach der Eingabe des Attributs angegeben ist.
Angenommen, wir möchten nur Pakete überwachen, die 50 Bit nicht überschreiten, dann sieht der Befehl wie folgt aus:
sudo tcpdump -i ppp0 less 50
Beispiel:

Lassen Sie uns nun in „Terminal” pakete, deren Größe 50 Bit überschreitet:
sudo tcpdump -i ppp0 greater 50
Beispiel:
Wie man sieht, werden sie auf die gleiche Weise angewendet, der einzige Unterschied besteht im Namen des Filters.
Wie Sie sehen, ist tcpdump ein unglaublich leistungsfähiges Tool für alle, die einen Blick unter die Haube der Netzwerkinteraktion werfen möchten. Es ermöglicht Ihnen, in Echtzeit zu sehen, was tatsächlich über Kabel oder Funk übertragen wird, und verwandelt abstrakte Netzwerkprobleme in konkrete Daten, die analysiert werden können.
Beginnen Sie mit einfachen Befehlen wie der Filterung nach Port oder IP-Adresse. Mit zunehmender Übung werden Sie in der Lage sein, komplexere Filter zu erstellen, um genau die gewünschten Pakete zu erfassen. Scheuen Sie sich nicht, auf Ihrem Testrechner zu experimentieren – das ist der beste Weg, um zu verstehen, wie alles funktioniert.
Letztendlich ist die Fähigkeit, tcpdump zu verwenden, eine Superkraft für Systemadministratoren oder Entwickler. Sie ermöglicht Unabhängigkeit bei der Diagnose von Problemen, sei es ein Verbindungsfehler, verdächtige Aktivitäten oder einfach nur der Wunsch, die Funktionsweise eines bestimmten Netzwerkdienstes zu verstehen. Dieses Tool wird zu einem zuverlässigen Helfer in Ihrem Arsenal.









