Detaillierte Erläuterung der TCPdump-Befehlsbeispiele in Linux

Detaillierte Erläuterung der TCPdump-Befehlsbeispiele in Linux

Vorwort

Einfach ausgedrückt ist tcpdump ein Paketanalysetool, das den Datenverkehr in einem Netzwerk ausgibt und Datenpakete im Netzwerk entsprechend der Definition des Benutzers abfängt. Tcpdump kann den „Header“ der im Netzwerk übertragenen Datenpakete vollständig abfangen und analysieren. Es unterstützt das Filtern nach Netzwerkschicht, Protokoll, Host, Netzwerk oder Port und bietet logische Anweisungen wie „und“, „oder“, „nicht“, um Ihnen dabei zu helfen, unnütze Informationen zu entfernen.

Wenn ich vom Befehl tcpdump spreche, muss ich die Entwicklung und Implementierung des CRM-Systems der dritten Generation der Niederlassung Inner Mongolia von China Mobile erwähnen, an der ich beteiligt war. Wenn ich mich richtig erinnere, müsste es 2016 sein. Ich war alleinverantwortlich für die Gesamtumgestaltung des Self-Service-Kanals des gesamten 10086-Kundenservice-Systems. Während der Stresstestphase des Systems kam es beim Aufruf der Schnittstellenplattform immer wieder zu Timeouts. Später wurde dieses Problem immer schwerwiegender. Gleichzeitig wurde dieses Problem auch auf dem Kurzzeit-Hallenkanal und dem CBOSS-Kanal gemeldet. Zu diesem Zeitpunkt erregte dieses Problem die Aufmerksamkeit des großen Chefs und konsultierte daraufhin Experten aller Parteien. Bei solchen Großprojekten gibt es bei der Expertenberatung immer ein Merkmal: Die Experten geben die Befehle und die jüngeren Brüder machen die Arbeit. Und dieser jüngere Bruder war ich damals.

Okay, der Experte hat gesprochen, lasst uns zuerst das Paket erfassen. So begann ich mit meiner Arbeit zur Paketerfassung und meinem umfassenden Verständnis von tcpdump.

Zunächst muss ich sagen, dass tcpdump ein sehr leistungsstarker Befehl ist. Aufgrund seiner leistungsstarken Funktionen ist die Verwendung dieses Befehls sehr kompliziert, was bedeutet, dass es viel Inhalt geben wird, den ich als Nächstes organisieren werde. Wenn Sie den gesamten tcpdump-Befehl beherrschen möchten, müssen Sie ein wenig Geduld haben und den gesamten Artikel lesen. OK, los geht‘s!

Befehlseinführung

Tcpdump ist ein leistungsstarkes Tool zur Netzwerkpaketerfassung, das auf der Linux-Plattform läuft. Wenn wir mit der Verwendung von tcpdump vertraut sind, können wir Netzwerkdaten besser analysieren und debuggen. Um tcpdump gut zu beherrschen, müssen Sie jedoch über ein gewisses Verständnis von Netzwerknachrichten (TCP/IP-Protokoll) verfügen. Für eine einfache Nutzung genügen allerdings grundlegende Netzwerkkonzepte.

Als klassisches, unverzichtbares Tool für Systemadministratoren im Internet ist tcpdump mit seinen leistungsstarken Funktionen und flexiblen Abfangstrategien zu einem der unverzichtbaren Tools für jeden erfahrenen Systemadministrator geworden, um das Netzwerk zu analysieren und Probleme zu beheben. Bei der tatsächlichen Arbeit müssen Sie diesen Befehl mit Root-Rechten ausführen.

tcpdump ist ein sehr komplizierter Befehl. Es ist nicht einfach, alle Aspekte davon zu verstehen, und es wird nicht empfohlen. Der Schlüssel liegt darin, ihn zur Lösung von Problemen bei der täglichen Arbeit verwenden zu können. Daher werde ich mich in der folgenden Zusammenfassung mehr auf die tatsächliche Arbeit konzentrieren und einige häufig verwendete Verwendungen bei der tatsächlichen Arbeit herausstellen. Einige unbeliebte Verwendungen werde ich hier grundsätzlich nicht erwähnen. Wenn sie in Zukunft bei der Arbeit verwendet werden, werde ich sie hier aktualisieren.

Detaillierte Befehlserklärung. Unten finden Sie eine Zusammenfassung einiger häufig verwendeter Optionen von tcpdump.

  • -s Zahl: Standardmäßig erfasst tcpdump nur die ersten 96 Bytes. Wenn Sie den gesamten Nachrichteninhalt erfassen möchten, müssen Sie diese Option verwenden. Zahl ist die Anzahl der zu erfassenden Bytes. Wenn sie 0 ist, bedeutet dies, dass der gesamte Nachrichteninhalt erfasst werden soll.
  • -nn: gibt an, dass der Domänenname nicht aufgelöst, sondern die IP-Adresse direkt angezeigt wird. Diese Option ist auch im Befehl netstat verfügbar.
  • -X: Verwenden Sie Hex und ASCII, um den Nachrichteninhalt gleichzeitig anzuzeigen.
  • -S: Zeigt absolute Sequenznummern anstelle von relativen Nummern an.
  • -i: Gibt die zu überwachende Netzwerkkarte an. Wenn -i any angegeben ist, werden alle Netzwerkkarten überwacht.
  • -v, -vv, -vvv: Zeigt detailliertere Informationen an;
  • -c Nummer: fängt Nummer-Nachrichten ab und beendet dann;
  • -w: Die überwachten Datenpakete in eine Datei schreiben und speichern, ohne sie zu analysieren und auszudrucken;
  • -A: Druckt alle Nachrichtendaten nur in ASCII. Verwenden Sie diese Option nicht in Verbindung mit der Option -X. Zum Abfangen von HTTP-Anfragen können Sie sudo tcpdump -nSA port 80 verwenden.

Obwohl der Befehl tcpdump viele Optionen hat, sind die am häufigsten verwendeten Optionen nur die oben aufgeführten. Hier werde ich mich mehr auf Anwendungsbeispiele konzentrieren und den Befehl tcpdump anhand von Anwendungsbeispielen lernen.

Filter

Bevor wir mit den detaillierten Anwendungsbeispielen beginnen, müssen wir uns einige grundlegende theoretische Kenntnisse zu tcpdump aneignen. Lassen Sie uns zuerst über Filter sprechen.

Auf dem Server gibt es ungewöhnlich viele Netzwerknachrichten. Oft konzentrieren wir uns nur auf Datennachrichten, die sich auf bestimmte Probleme beziehen, und diese nützlichen Nachrichten machen nur einen kleinen Teil aus. Um zu verhindern, dass wir uns im Nachrichtenmeer verlieren, ist es sehr wichtig, dass wir die flexiblen und leistungsstarken Filter von tcpdump kennen.

Filter können auch einfach in drei Kategorien unterteilt werden: Typ, Verzeichnis und Proto.

Typ: Wird hauptsächlich verwendet, um den Quelltyp der gefilterten Nachricht zu unterscheiden, der hauptsächlich aus Host-Host-Nachrichten, Net-Netzwerksegment-Nachrichten und vom Port angegebenen Port-Nachrichten besteht.

dir: Filtert nur die Quelladresse und die Zieladresse der Nachricht, hauptsächlich einschließlich der Quelladresse src und der Zieladresse dst.

proto: filtert nur den Protokolltyp der Nachricht und unterstützt TCP, UDP und ICMP usw.; das Schlüsselwort proto kann bei Verwendung weggelassen werden:

  • tcpdump -i eth1 arp
  • tcpdump -i eth1 ip
  • tcpdump -i eth1 tcp
  • tcpdump -i eth1 udp
  • tcpdump -i eth1 icmp

Diese Filter sind unverzichtbar, wenn wir den Befehl tcpdump verwenden.

Bedingungskombination

Im riesigen Netzwerk ist es immer noch schwierig, das gewünschte Netzwerkpaket zu finden. Um das gewünschte Netzwerkpaket zu erfassen, gilt: Je restriktiver die Bedingungen sind, die wir in unseren Paketerfassungsbefehl aufnehmen, desto weniger irrelevante Pakete werden erfasst. Daher können wir beim Erfassen von Paketen „und“ (und &&), „oder“ (oder, ||) und „nicht“ (nicht, !) verwenden, um mehrere Bedingungen zu kombinieren. Dies ist sehr nützlich, wenn wir Netzwerkpakete basierend auf bestimmten Bedingungen analysieren müssen.

Anwendungsfall

Befehl: tcpdump -i eth1

Beschreibung: Überwachen Sie die Datenpakete der angegebenen Netzwerkschnittstelle

Befehl: tcpdump host 210.27.48.3

Beschreibung: Abfangen aller vom Host 210.27.48.3 empfangenen und gesendeten Datenpakete

Befehl: tcpdump host 210.27.48.4 and (210.27.48.5 or 210.27.48.6)

Beschreibung: Fangen Sie alle Datenpakete zwischen dem Host 210.27.48.3 und dem Host 210.27.48.5 oder 210.27.48.6 ab.

Befehl: tcpdump net 192.168.1.0/24

Beschreibung: Abfangen der Datenpakete des gesamten Netzwerks 192.168.1.0/24

Befehl: tcpdump -i eth0 src host 210.27.48.3

Beschreibung: Überwachen Sie alle Netzwerkpakete mit der Quelladresse 210.27.48.3 auf der eth0-Netzwerkkarte

Befehl: tcpdump -i eth0 dst host 210.27.48.3

Beschreibung: Überwachen Sie alle Netzwerkpakete auf der Netzwerkkarte eth0 mit der Zieladresse 210.27.48.3

Befehl: tcpdump tcp port 23 and host 210.27.48.3

Beschreibung: Alle TCP-Protokollpakete abrufen, die von der Anwendung mit Port 23 auf dem Host 210.27.48.3 gesendet und empfangen werden

Befehl: tcpdump udp port 123

Beschreibung: Alle UDP-Protokollpakete abrufen, die über Port 123 des lokalen Rechners gesendet und empfangen werden

Befehl: tcpdump src host 10.126.1.222 and dst net 10.126.1.0/24

Beschreibung: Die abgefangene Quelladresse ist 10.126.1.222 und die Zieladresse ist das gesamte Netzwerk 10.126.1.0/24

Befehl: tcpdump -i eth0 -s0 -G 60 -Z root -w %Y_%m%d_%H%M_%S.pcap

Hinweis: Nachdem Sie die Nachricht erfasst haben, speichern Sie sie im angegebenen Zeitintervall. Auf die Option -G folgt die Zeit in Sekunden. Der obige Befehl speichert alle 60 Sekunden eine Datei.

Befehl: tcpdump -i eth0 -s0 -C 1 -Z root -w eth0Packet.pcap

Hinweis: Speichern Sie die Pakete nach der Erfassung entsprechend der angegebenen Paketgröße. Auf die Option -C folgt die Dateigröße in MB. Der obige Befehl verwendet eine neue Datei, um die neu erfassten Pakete zu speichern, wenn die Paketerfassungsdatei 1 MB erreicht.

Wie oben erwähnt, generiert tcpdump nach dem Erfassen des Pakets eine entsprechende Datei. Wie also kann diese Datei analysiert werden? Ja, es gibt eine Software namens „Wireshark“, die sich perfekt mit tcpdump kombinieren lässt, um eine visuelle Analyseoberfläche bereitzustellen. Wenn Sie interessiert sind, können Sie sie lernen. Wenn ich später Zeit habe, werde ich auch eine Einführungsreihe zu „Wireshark“ organisieren.

Zusammenfassen

Es hat lange gedauert, das Problem zu lösen, aber jetzt ist es endlich geschafft! Natürlich habe ich keine sehr umfassende Zusammenfassung eines so komplexen Befehls wie tcpdump bereitgestellt, aber der Inhalt, den ich hier zusammengestellt habe, wird Ihre Verwendung des Befehls tcpdump bei Ihrer Arbeit definitiv nicht beeinträchtigen. Es gilt immer noch die „80/20-Regel“. Bei komplexen Befehlen machen häufig verwendete Funktionen nur 20 % aus, und die restlichen 80 % sind relativ obskure Funktionen oder Funktionen, die bei der Arbeit selten verwendet werden.

Nun, das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So verwenden Sie tcpdump zum Erfassen von Paketen im Linux-System
  • Einige Funktionen der Verwendung von tcpdump zum Erfassen von Paketen in der Linux-Befehlszeile
  • Detaillierte Erklärung zur Verwendung des Befehls tcpdump zum Erfassen und Analysieren von Datenpaketen in Linux
  • Linux-Grundlagenlernen mit tcpdump zum Erfassen von Paketbeispielcode
  • Detaillierte Erläuterung der TCPdump-Befehlsbeispiele in Linux
  • So verwenden Sie tcpdump zum Erfassen von Paketen in Linux
  • So verwenden Sie den Befehl tcpdump zum Überwachen bestimmter Netzwerkdatenpakete in Linux
  • Detaillierte Analyse der Verwendung des Linux-Befehls tcpdump
  • Detaillierte Erläuterung der Linux-TCPDUMP-Operationsbefehle
  • Detaillierte Analyse und Verwendung des Befehls tcpdump unter Linux

<<:  Meine persönliche Zusammenfassung der Installationsschritte für die MySQL 5.7-Datenbank

>>:  Detaillierte Erklärung der Rolle statischer Variablen in MySQL

Artikel empfehlen

Implementierung der CommonJS-Modularität in Browsern ohne Kompilierung/Server

Inhaltsverzeichnis Einführung 1. Was ist one-clic...

Über das WeChat-Gleitproblem des UniApp-Editors

Das Uniapp-Applet wird ein ähnliches Dropdown-Pro...

Implementierungsbeispiel für den Linux-Befehl „tac“

1. Befehlseinführung Der Befehl tac (umgekehrte R...

Spezifische Methode zum Anzeigen von Benutzerautorisierungsinformationen in MySQL

Spezifische Methode: 1. Öffnen Sie die Eingabeauf...

Installieren Sie Kafka unter Linux

Inhaltsverzeichnis 1.1 Java-Umgebung als Vorausse...

Vue implementiert einen einfachen Bildwechseleffekt

In diesem Artikelbeispiel wird der spezifische Co...

Erstellen Sie mit Flutter eine verschiebbare Stapel-Widget-Funktion

Dieser Beitrag konzentriert sich auf ein streng g...

isPrototypeOf-Funktion in JavaScript

Inhaltsverzeichnis 1. istPrototyp von() Beispiel ...

Deinstallieren der MySQL-Datenbank unter Linux

Wie deinstalliere ich eine MySQL-Datenbank unter ...

Zusammenfassung von 3 Möglichkeiten zum verzögerten Laden eines Vue-Routers

Kein Lazy Loading verwenden importiere Vue von „v...

Detaillierte Erklärung der reinen SQL-Anweisungsmethode basierend auf JPQL

JPQL steht für Java Persistence Query Language. B...

Allgemeine Linux-Befehle chmod zum Ändern der Dateiberechtigungen 777 und 754

Der folgende Befehl wird häufig verwendet: chmod ...