tcpdump — Netzwerkverkehr auf der Kommandozeile analysieren

Praxis-Guide zu tcpdump — dem klassischen CLI-Paketanalyzer: Netzwerkverkehr aufzeichnen, BPF-Filter einsetzen und Protokolle debuggen.

tcpdump ist der klassische Paketanalyzer für die Kommandozeile: Mit BPF-Filtern grenzt du den Mitschnitt auf genau den Verkehr ein, den du untersuchen möchtest – einen einzelnen Host, ein bestimmtes Port oder einen TCP-Flag-Zustand. Ob du ein Netzwerkproblem diagnostizierst, ein Protokoll debuggst oder verdächtigen Verkehr analysierst – tcpdump liefert dir die Rohdaten direkt aus dem Kernel, ohne Umwege über eine GUI.

Pakete aufzeichnen

tcpdump — Zeichnet alle Pakete auf dem Standard-Interface auf. Benötigt Root-Rechte.

sudo tcpdump

tcpdump -i INTERFACE — Zeichnet auf einem bestimmten Interface auf.

sudo tcpdump -i eth0

tcpdump -i any — Zeichnet auf allen Interfaces gleichzeitig auf.

sudo tcpdump -i any

tcpdump -c COUNT — Zeichnet eine bestimmte Anzahl von Paketen auf und beendet sich dann.

sudo tcpdump -c 100

tcpdump -D — Listet alle verfügbaren Netzwerk-Interfaces auf.

tcpdump -D

Ausgabe-Optionen

tcpdump -n — Numerische Ausgabe – Hostnamen nicht auflösen.

sudo tcpdump -n

tcpdump -nn — Hostnamen und Portnamen nicht auflösen.

sudo tcpdump -nn

tcpdump -v — Ausführliche Ausgabe – zeigt TTL, Kennung, Gesamtlänge, IP-Optionen.

sudo tcpdump -v

tcpdump -vv — Noch ausführlicher – zusätzliche Details auf Protokollebene.

sudo tcpdump -vv

tcpdump -vvv — Maximale Ausführlichkeit.

sudo tcpdump -vvv

tcpdump -q — Kompakte Ausgabe – weniger Protokollinformationen pro Zeile.

sudo tcpdump -q

tcpdump -e — Zeigt Link-Layer-Header (Ethernet) mit MAC-Adressen.

sudo tcpdump -e

tcpdump -t — Zeitstempel nicht ausgeben.

sudo tcpdump -t

tcpdump -tt — UNIX-Epoch-Zeitstempel ausgeben.

sudo tcpdump -tt

tcpdump -ttt — Zeit-Delta zwischen Paketen ausgeben.

sudo tcpdump -ttt

tcpdump -tttt — Datum und Uhrzeit in lesbarem Format ausgeben.

sudo tcpdump -tttt

Paketinhalt anzeigen

tcpdump -X — Paketdaten in Hex und ASCII ausgeben.

sudo tcpdump -X -c 5

tcpdump -XX — Paketdaten in Hex und ASCII inklusive Link-Layer-Header ausgeben.

sudo tcpdump -XX -c 5

tcpdump -A — Paketdaten nur in ASCII ausgeben. Praktisch zum Lesen von HTTP-Verkehr.

sudo tcpdump -A port 80

tcpdump -s SIZE — Snapshot-Länge in Bytes festlegen (Standard: 262144). 0 für vollständige Pakete.

sudo tcpdump -s 0

tcpdump -s 96 — Nur Header aufzeichnen (96 Bytes). Spart Speicherplatz bei großen Mitschnitten.

sudo tcpdump -s 96

Datei-Operationen

tcpdump -w FILE — Aufgezeichnete Pakete in eine pcap-Datei schreiben.

sudo tcpdump -w capture.pcap

tcpdump -r FILE — Pakete aus einer pcap-Datei lesen und anzeigen.

tcpdump -r capture.pcap

tcpdump -r FILE -nn — pcap-Datei mit numerischer Ausgabe lesen.

tcpdump -r capture.pcap -nn

tcpdump -w FILE -C SIZE_MB — Aufzeichnungsdatei nach SIZE Megabyte rotieren.

sudo tcpdump -w capture.pcap -C 100

tcpdump -w FILE -W COUNT -C SIZE_MB — Durch COUNT Dateien rotieren, jede bis zu SIZE MB (Ringpuffer).

sudo tcpdump -w capture.pcap -W 5 -C 100

tcpdump -w FILE -G SECONDS — Aufzeichnungsdatei alle SECONDS Sekunden rotieren. strftime-Format im Dateinamen verwenden.

sudo tcpdump -w capture_%Y%m%d_%H%M%S.pcap -G 3600

BPF-Filter — Host & Netzwerk

tcpdump host HOST — Verkehr zu oder von einem bestimmten Host aufzeichnen.

sudo tcpdump host 192.168.1.1

tcpdump src host HOST — Verkehr von einem bestimmten Absender aufzeichnen.

sudo tcpdump src host 192.168.1.100

tcpdump dst host HOST — Verkehr zu einem bestimmten Ziel aufzeichnen.

sudo tcpdump dst host 8.8.8.8

tcpdump net NETWORK/CIDR — Verkehr zu oder von einem Netzwerk aufzeichnen.

sudo tcpdump net 192.168.1.0/24

tcpdump src net NETWORK/CIDR — Verkehr aus einem Netzwerk aufzeichnen.

sudo tcpdump src net 10.0.0.0/8

BPF-Filter — Port & Protokoll

tcpdump port PORT — Verkehr auf einem bestimmten Port aufzeichnen (TCP und UDP).

sudo tcpdump port 80

tcpdump src port PORT — Verkehr von einem bestimmten Quell-Port aufzeichnen.

sudo tcpdump src port 443

tcpdump dst port PORT — Verkehr zu einem bestimmten Ziel-Port aufzeichnen.

sudo tcpdump dst port 22

tcpdump portrange START-END — Verkehr auf einem Port-Bereich aufzeichnen.

sudo tcpdump portrange 8000-9000

tcpdump tcp — Nur TCP-Verkehr aufzeichnen.

sudo tcpdump tcp

tcpdump udp — Nur UDP-Verkehr aufzeichnen.

sudo tcpdump udp

tcpdump icmp — Nur ICMP-Verkehr aufzeichnen.

sudo tcpdump icmp

tcpdump arp — Nur ARP-Verkehr aufzeichnen.

sudo tcpdump arp

tcpdump ip6 — Nur IPv6-Verkehr aufzeichnen.

sudo tcpdump ip6

BPF-Filter — Verknüpfen

tcpdump host HOST and port PORT — Filter mit AND verknüpfen.

sudo tcpdump host 192.168.1.1 and port 80

tcpdump port 80 or port 443 — Filter mit OR verknüpfen.

sudo tcpdump port 80 or port 443

tcpdump not port PORT — Bestimmten Verkehr mit NOT ausschließen.

sudo tcpdump not port 22

tcpdump 'host HOST and (port 80 or port 443)' — Klammern zur Gruppierung verwenden (Ausdruck in Anführungszeichen setzen).

sudo tcpdump 'host 192.168.1.1 and (port 80 or port 443)'

tcpdump 'not (port 22 or port 53)' — Mehrere Ports ausschließen.

sudo tcpdump 'not (port 22 or port 53)'

Erweiterte Filter

tcpdump 'tcp[tcpflags] & (tcp-syn) != 0' — Nur TCP-SYN-Pakete aufzeichnen (neue Verbindungen).

sudo tcpdump 'tcp[tcpflags] & (tcp-syn) != 0'

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn' — Nur initiale SYN-Pakete aufzeichnen (SYN ohne ACK).

sudo tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'

tcpdump 'tcp[tcpflags] & (tcp-rst) != 0' — TCP-RST-Pakete aufzeichnen. Hilfreich zum Auffinden abgelehnter Verbindungen.

sudo tcpdump 'tcp[tcpflags] & (tcp-rst) != 0'

tcpdump 'tcp[tcpflags] & (tcp-fin) != 0' — TCP-FIN-Pakete aufzeichnen (Verbindungsabbau).

sudo tcpdump 'tcp[tcpflags] & (tcp-fin) != 0'

tcpdump greater SIZE — Nur Pakete größer als SIZE Bytes aufzeichnen.

sudo tcpdump greater 500

tcpdump less SIZE — Nur Pakete kleiner als SIZE Bytes aufzeichnen.

sudo tcpdump less 100

tcpdump ether host MAC — Verkehr zu/von einer bestimmten MAC-Adresse aufzeichnen.

sudo tcpdump ether host aa:bb:cc:dd:ee:ff

tcpdump vlan VLANID — Verkehr auf einem bestimmten VLAN aufzeichnen.

sudo tcpdump vlan 100

Typische Aufzeichnungs-Muster

tcpdump -i eth0 -nn -c 100 -w capture.pcap — Schneller Mitschnitt: 100 Pakete, numerisch, in Datei gespeichert.

sudo tcpdump -i eth0 -nn -c 100 -w capture.pcap

tcpdump -i any -nn port 80 -A — HTTP-Verkehr in ASCII auf allen Interfaces beobachten.

sudo tcpdump -i any -nn port 80 -A

tcpdump -i any -nn port 53 — DNS-Anfragen und -Antworten überwachen.

sudo tcpdump -i any -nn port 53

tcpdump -i eth0 -nn icmp — ICMP-Verkehr überwachen (Ping, Traceroute, Unreachable).

sudo tcpdump -i eth0 -nn icmp

tcpdump -i any -nn 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn' — Alle neuen eingehenden TCP-Verbindungen beobachten.

sudo tcpdump -i any -nn 'tcp[tcpflags] & (tcp-syn|tcp-ack) == tcp-syn'

tcpdump -i any -nn host HOST and not port 22 — Gesamten Verkehr zu/von einem Host außer SSH überwachen.

sudo tcpdump -i any -nn host 192.168.1.1 and not port 22

tcpdump -r capture.pcap -nn 'tcp[tcpflags] & (tcp-rst) != 0' — RST-Pakete in einer aufgezeichneten Datei suchen.

tcpdump -r capture.pcap -nn 'tcp[tcpflags] & (tcp-rst) != 0'

tcpdump -i eth0 -tttt -nn -s0 -w long_capture.pcap & — Hintergrundmitschnitt mit Zeitstempeln und vollständigen Paketdaten.

sudo tcpdump -i eth0 -tttt -nn -s0 -w long_capture.pcap &

Fazit

tcpdump ist unverzichtbar, sobald du wissen musst, was wirklich über das Kabel geht – kein Logging-Framework zeigt dir das zuverlässiger. Speichere Mitschnitte mit -w als pcap-Datei und öffne sie später in Wireshark für eine grafische Auswertung. Für die schnelle Triage auf einem entfernten Server reicht tcpdump allein.

Verwandte Kommandos

  • nmap – Netzwerke und offene Ports scannen
  • iftop – Bandbreitenverbrauch pro Host in Echtzeit anzeigen
  • socat – bidirektionale Datenströme verbinden und debuggen