Wireshark-Netzwerkanalyse verschafft dir vollständige Transparenz darüber, was auf Packet-Ebene in deinem Netzwerk passiert. Wenn Anwendungen keine Verbindung herstellen können, die Performance unerklärlich einbricht oder du prüfen willst, ob Traffic wie erwartet fließt, erfasst Wireshark jeden einzelnen Frame und lässt dich tief in Protokolldetails eintauchen, die kein anderes Werkzeug offenbart. Dieser Leitfaden behandelt Wireshark praxisnah — von der Installation über fortgeschrittenes Filtern bis zu realen Troubleshooting-Szenarien, denen Netzwerk-Engineers und Sysadmins täglich begegnen.

Voraussetzungen

  • Eine Workstation unter Linux, macOS oder Windows (Wireshark läuft auf allen drei)
  • Administrativer oder Root-Zugriff für Packet-Capture (oder Mitgliedschaft in der Gruppe wireshark unter Linux)
  • Grundkenntnisse TCP/IP-Netzwerke (IP-Adressen, Ports, Protokolle)
  • Ein Netzwerkinterface zum Aufzeichnen (Ethernet, Wi-Fi oder Loopback)

Wireshark installieren

Linux

# Debian / Ubuntu
sudo apt install wireshark
# Während der Installation "Yes" wählen, um Non-Root-Capture zu erlauben

# Falls du den Prompt verpasst hast, nachkonfigurieren:
sudo dpkg-reconfigure wireshark-common
sudo usermod -aG wireshark $USER
# Aus- und wieder einloggen, damit die Gruppenmitgliedschaft greift

# RHEL / Fedora
sudo dnf install wireshark wireshark-cli

# Arch Linux
sudo pacman -S wireshark-qt

Unter Linux gewährt die Gruppe wireshark Zugriff auf das Capture-Interface. Ohne sie muss Wireshark als Root ausgeführt werden — ein Sicherheitsrisiko, das nicht empfohlen wird.

macOS

# Mit Homebrew
brew install --cask wireshark

Alternativ direkt von der offiziellen Website herunterladen. macOS benötigt den ChmodBPF-Helper, um ohne Root zu erfassen.

Windows

Den Installer von der Wireshark-Website herunterladen. Er enthält Npcap (den Windows-Paketerfassungstreiber). Die Npcap-Standardeinstellungen während der Installation übernehmen.

Kommandozeilen-Alternative: tshark

Wireshark enthält tshark, sein CLI-Pendant, das sich für Remote-Server und Scripting eignet:

# 100 Pakete auf eth0 erfassen
tshark -i eth0 -c 100

# Mit Display-Filter erfassen
tshark -i eth0 -Y "http.request" -c 50

# Eine Capture-Datei einlesen
tshark -r capture.pcapng -Y "dns"

Netzwerktraffic erfassen

Einfachen Capture starten

Beim Start von Wireshark siehst du eine Liste verfügbarer Netzwerkinterfaces mit Sparkline-Graphen, die Aktivität anzeigen. Doppelklick auf ein Interface startet die Aufzeichnung sofort.

Per Kommandozeile:

# Verfügbare Interfaces auflisten
tshark -D

# Capture auf einem bestimmten Interface starten
tshark -i eth0

# In eine Datei aufzeichnen
tshark -i eth0 -w /tmp/capture.pcapng

# Mit Ring-Buffer aufzeichnen (5 Dateien, je 100 MB)
tshark -i eth0 -b filesize:102400 -b files:5 -w /tmp/rolling.pcapng

Der Ring-Buffer ist bei Langzeit-Captures auf Produktionssystemen unverzichtbar. Er verhindert, dass der Speicherplatz ausgeht, indem er die älteste Datei überschreibt, sobald das Limit erreicht ist.

Capture-Filter (BPF-Syntax)

Capture-Filter verwenden die Berkeley Packet Filter (BPF)-Syntax — dieselbe wie tcpdump. Sie werden angewendet, bevor Pakete Wireshark erreichen, was die Capture-Dateigröße reduziert.

# Nur Traffic zu/von einem bestimmten Host erfassen
host 192.168.1.100

# Nur HTTP- und HTTPS-Traffic erfassen
port 80 or port 443

# Traffic zwischen zwei bestimmten Hosts erfassen
host 10.0.0.1 and host 10.0.0.2

# Nur TCP-SYN-Pakete erfassen (neue Verbindungen)
tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0

# Nur DNS-Traffic erfassen
port 53

# Traffic in einem bestimmten Subnetz erfassen
net 192.168.1.0/24

# SSH-Traffic ausschließen (nützlich beim Capture auf Remote-Server)
not port 22

Capture-Filter werden im Wireshark-Capture-Options-Dialog (Strg+K) gesetzt oder mit tshark’s -f-Flag:

tshark -i eth0 -f "host 192.168.1.100 and port 443" -w /tmp/https_traffic.pcapng

Wichtige Regel: Auf stark ausgelasteten Netzwerken immer einen Capture-Filter setzen. Ein ungefilterter Capture auf einem Gigabit-Link kann hunderte Megabyte pro Minute erzeugen.

Capture-Berechtigungen und Sicherheit

# Prüfen, ob der Benutzer in der Gruppe wireshark ist (Linux)
groups $USER | grep wireshark

# Capture-Capabilities prüfen
getcap /usr/bin/dumpcap
# Sollte zeigen: /usr/bin/dumpcap cap_net_admin,cap_net_raw=eip

Wireshark niemals als Root ausführen. Die GUI parst komplexe Protokolldaten, und jede Parser-Schwachstelle wird zum Root-Exploit. Stattdessen läuft dumpcap (das eigentliche Capture-Binary) mit erhöhten Capabilities, während die GUI als normaler Benutzer läuft.

Display-Filter — Das Wesentliche finden

Display-Filter sind Wiresharks mächtigstes Feature. Im Gegensatz zu Capture-Filtern wirken sie nach dem Capture und können auf jedes Protokollfeld filtern, das Wireshark kennt — hunderte von Protokollen mit tausenden von Feldern.

Wichtige Display-Filter

# Nach IP-Adresse filtern
ip.addr == 192.168.1.100
ip.src == 10.0.0.1
ip.dst == 10.0.0.2

# Nach Port filtern
tcp.port == 443
udp.port == 53

# Nach Protokoll filtern
http
dns
tls
tcp
arp
icmp

# Nur HTTP-Anfragen
http.request

# HTTP-Antworten mit bestimmten Status-Codes
http.response.code == 404
http.response.code >= 500

# DNS-Anfragen für eine bestimmte Domain
dns.qry.name contains "example.com"

# TCP-Verbindungsprobleme
tcp.analysis.retransmission
tcp.analysis.duplicate_ack
tcp.analysis.zero_window
tcp.analysis.reset

# TLS-Handshake-Pakete
tls.handshake.type == 1    # Client Hello
tls.handshake.type == 2    # Server Hello

# Nach Paketgröße filtern
frame.len > 1400
frame.len < 64

# Filter mit logischen Operatoren kombinieren
ip.addr == 192.168.1.100 and tcp.port == 80
dns or http
not arp and not icmp
(ip.src == 10.0.0.1 or ip.src == 10.0.0.2) and tcp.port == 443

Display-Filter vs. Capture-Filter

AspektCapture-FilterDisplay-Filter
SyntaxBPF (host, port, net)Wireshark (ip.addr, tcp.port)
ZeitpunktVor dem CaptureNach dem Capture, in Echtzeit
Wirkung auf DateiReduziert DateigrößeKeine (Pakete werden nur ausgeblendet)
ProtokolltiefeNur Layer 2-4Alle Protokollschichten
ÄnderbarNur durch Neustart des CapturesJederzeit während der Analyse
PerformanceKernel-seitiges Filtern (schnell)Userspace-Filtern (langsamer)
EinsatzWenn du genau weißt, was du brauchstBeim Erkunden oder Analysieren

Praxistipp: Einen breiten Capture-Filter setzen (z. B. host 192.168.1.100), um die Dateigröße handhabbar zu halten, dann Display-Filter verwenden, um bei der Analyse in bestimmte Protokolle einzutauchen.

Häufige Protokolle analysieren

TCP-Streams folgen

Eine der nützlichsten Funktionen von Wireshark ist die Rekonstruktion von TCP-Konversationen:

  1. Ein Paket der gewünschten Konversation suchen
  2. Rechtsklick → Follow → TCP Stream
  3. Wireshark zeigt das vollständige Gespräch — Client-Daten in einer Farbe, Server-Daten in einer anderen

Das ist unverzichtbar beim Debuggen von HTTP-APIs, SMTP-Sitzungen, Datenbankabfragen und allen textbasierten Protokollen. Bei verschlüsseltem Traffic (TLS) siehst du den Handshake, der Payload ist aber verschlüsselt, sofern du keine Session-Keys bereitstellst.

# Einen bestimmten TCP-Stream mit tshark exportieren
tshark -r capture.pcapng -q -z follow,tcp,ascii,0

DNS-Traffic analysieren

DNS-Probleme verursachen einige der verwirrendsten Netzwerkprobleme. DNS filtern und untersuchen:

# Gesamter DNS-Traffic
dns

# Nur DNS-Anfragen (keine Antworten)
dns.flags.response == 0

# DNS-Antworten mit Fehlern
dns.flags.rcode != 0

# Anfragen für eine bestimmte Domain
dns.qry.name == "api.example.com"

# NXDOMAIN-Antworten finden (Domain existiert nicht)
dns.flags.rcode == 3

Praxisszenario: Langsame Anwendungsperformance diagnostizieren

Eine Webanwendung antwortet gelegentlich erst nach 5+ Sekunden. Server-seitige Metriken zeigen schnelle Verarbeitungszeiten. Das Problem liegt im Netzwerk.

  1. Traffic erfassen zwischen Client und Server:

    tshark -i eth0 -f "host 10.0.0.50 and port 443" -w /tmp/slow_app.pcapng
  2. Langsame Anfrage reproduzieren vom Client aus.

  3. In Wireshark öffnen und Filter anwenden:

    tcp.analysis.retransmission or tcp.analysis.duplicate_ack
  4. TCP-Handshake-Zeit prüfen — wenn SYN-SYN/ACK mehr als 200 ms dauert, liegt ein Routing- oder Distanzproblem vor.

  5. Zeitabstände zwischen Paketen betrachten — wenn der Server Daten schnell sendet, aber zwischen Client-ACKs lange Pausen liegen, ist das Client-Netzwerk überlastet.

  6. TCP-Window-Scaling-Probleme prüfen:

    tcp.analysis.zero_window

    Zero-Window-Events bedeuten, dass der Empfangspuffer voll ist — die Anwendung liest Daten nicht schnell genug.

Die Ursache ist oft: Retransmissions über eine verlustbehaftete Wi-Fi-Verbindung, DNS-Auflösungsverzögerungen oder ein TLS-Handshake mit langsamer OCSP-Prüfung.

Erweiterte Wireshark-Funktionen

IO-Graphs

Wiresharks IO-Graphs (Statistics → IO Graphs) visualisieren Traffic-Muster über die Zeit. Mehrere Graphlinien für verschiedene Filter anlegen:

  • Linie 1: Gesamter Traffic (frame)
  • Linie 2: Retransmissions (tcp.analysis.retransmission)
  • Linie 3: HTTP-Fehler (http.response.code >= 400)

Retransmission-Spitzen, die mit Traffic-Peaks korrelieren, weisen auf Überlastung hin. Anhaltende Retransmissions deuten auf ein Physical-Layer-Problem hin (schlechtes Kabel, Interferenz).

Expert Information

Unter Analyze → Expert Information findet sich Wiresharks automatisierte Diagnose. Sie kategorisiert Probleme in:

  • Errors (rot): Fehlerhaft formatierte Pakete, Prüfsummenfehler
  • Warnings (gelb): Retransmissions, Out-of-Order-Segmente, Zero Windows
  • Notes (cyan): Duplicate ACKs, Keep-Alives
  • Chats (blau): Normale Protokollereignisse (Verbindungsaufbau, HTTP-Anfragen)

Die Analyse hier beginnen. Wenn Expert Information hunderte von Warnings zeigt, zuerst diese untersuchen, bevor einzelne Pakete betrachtet werden.

TLS-Traffic entschlüsseln

Um HTTPS-Inhalte in Wireshark einzusehen:

# Umgebungsvariable setzen, bevor der Browser gestartet wird
export SSLKEYLOGFILE=~/sslkeys.log
google-chrome &
# oder
firefox &

In Wireshark: Edit → Preferences → Protocols → TLS → (Pre)-Master-Secret log filename → ~/sslkeys.log auswählen.

Wireshark entschlüsselt nun den TLS-Traffic dieser Browser-Sitzung. Vollständige HTTP/2-Anfragen, Header und Response-Bodies werden sichtbar. Das funktioniert nur für Traffic aus dem eigenen Browser mit diesem Key-Log — fremder Traffic lässt sich so nicht entschlüsseln.

Statistiken und Konversationen

Wireshark bietet umfangreiche statistische Ansichten:

  • Statistics → Conversations: zeigt alle Kommunikationspaare mit Paketanzahl und Bytes
  • Statistics → Protocol Hierarchy: Aufschlüsselung des Traffics nach Protokollanteil
  • Statistics → Endpoints: listet alle IP-Adressen mit Traffic-Volumen
  • Statistics → HTTP → Requests: alle HTTP-Anfragen sortiert nach URI

Diese Ansichten helfen, die Struktur eines Captures schnell zu erfassen, ohne manuell durch Pakete zu scrollen.

Wireshark mit Alternativen für Netzwerkanalyse vergleichen

FeatureWireshark (GUI)tshark (CLI)tcpdumpngrep
Protokoll-Decoder3000+3000+BasicBasic
GUI-VisualisierungJaNeinNeinNein
Display-FilterVolle Wireshark-SyntaxVolle Wireshark-SyntaxNur BPFRegex auf Payload
Streams folgenJa (TCP, UDP, TLS)JaNeinTeilweise
Auf Servern nutzbarBenötigt X11/VNCJaJaJa
Echtzeit-CaptureJaJaJaJa
pcap-Dateien lesenJaJaJaJa
Am besten fürTiefe interaktive AnalyseGeskriptete Analyse, RemoteSchneller Capture, minimale InstallationGrep-artiger Paketsuche

Wireshark für detaillierte interaktive Protokollanalyse auf der Workstation verwenden. tshark für geskriptete Analysen und Remote-Captures einsetzen. tcpdump nutzen, wenn Wireshark nicht installiert ist und ein schneller Capture benötigt wird. Alle drei Tools teilen dasselbe pcap-Dateiformat — mit einem erfassen, mit einem anderen analysieren.

Fehlerbehebung

”No interfaces found” unter Linux

# Prüfen, ob dumpcap die richtigen Capabilities hat
sudo setcap cap_net_admin,cap_net_raw=eip /usr/bin/dumpcap

# Prüfen, ob der Benutzer in der Gruppe wireshark ist
groups $USER

# Nach dem Hinzufügen zur Gruppe: aus- und wieder einloggen
# Oder neue Sitzung starten:
newgrp wireshark

Capture verliert Pakete auf Hochgeschwindigkeitsverbindungen

# Capture-Buffer vergrößern (Standard ist oft zu klein)
# In Wireshark: Capture Options → Buffer size → auf 256 MB setzen
# Mit tshark:
tshark -i eth0 -B 256 -w /tmp/capture.pcapng

# Capture-Filter verwenden, um das Volumen zu reduzieren
tshark -i eth0 -f "port 443" -B 256 -w /tmp/https_only.pcapng

Wenn weiterhin Pakete verloren gehen, dumpcap direkt verwenden (weniger Overhead als tshark) oder für anhaltende Hochgeschwindigkeitsaufzeichnungen auf ein dediziertes Capture-Gerät wechseln.

Große Capture-Dateien öffnen langsam

# Einen großen Capture in kleinere Dateien aufteilen
editcap -c 100000 large_capture.pcapng split_capture.pcapng

# Mit tshark vorfiltern und kleinere Datei erstellen
tshark -r large_capture.pcapng -Y "http" -w http_only.pcapng

# Mehrere Capture-Dateien zusammenführen
mergecap -w merged.pcapng file1.pcapng file2.pcapng

Wireshark zeigt überall Prüfsummenfehler

Moderne NICs lagern die Prüfsummenberechnung an die Hardware aus. Wireshark erfasst Pakete, bevor die NIC Prüfsummen hinzufügt, weshalb diese ungültig erscheinen. Prüfsummenverifizierung deaktivieren:

Edit → Preferences → Protocols → TCP → Häkchen bei “Validate the TCP checksum if possible” entfernen

Dasselbe für IPv4, UDP und andere Protokolle wiederholen. Dies ist kosmetisch — der tatsächliche Netzwerktraffic enthält korrekte Prüfsummen.

Fallstricke und Sonderfälle

Capture auf dem falschen Interface: Auf Maschinen mit mehreren NICs kann es passieren, dass auf dem Management-Interface mitgeschnitten wird, während der Anwendungstraffic über ein anderes Interface läuft. Mit ip route get <Ziel> prüfen, welches Interface den Traffic zum Ziel leitet.

Promiscuous Mode vs. Normal Mode: Standardmäßig aktiviert Wireshark den Promiscuous Mode und erfasst alle Pakete, die die NIC sieht — nicht nur die an die eigene Maschine adressierten. In einem geswitchten Netzwerk ist nur der eigene Traffic sowie Broadcast/Multicast sichtbar, sofern kein Port-Mirroring am Switch konfiguriert ist.

Wi-Fi-Capture-Einschränkungen: Bei Wi-Fi sind nur Pakete zur und von der eigenen Maschine sichtbar, sofern kein Monitor-Mode verwendet wird. Monitor-Mode erfordert einen kompatiblen Adapter und deaktiviert die normale Wi-Fi-Verbindung.

Paket-Zeitstempel: Wireshark verwendet die Uhr der Capture-Maschine für Zeitstempel. Beim Vergleich von Captures zweier Maschinen sicherstellen, dass die Uhren synchronisiert sind (NTP). Schon wenige hundert Millisekunden Abweichung machen die Korrelation von Ereignissen zwischen Captures irreführend.

VLAN-Tags: Ist das Capture-Interface ein VLAN-Sub-Interface (z. B. eth0.100), werden VLAN-Tags entfernt, bevor Wireshark sie sieht. Für die Sichtbarkeit von VLAN-Tags auf dem Parent-Interface (eth0) erfassen.

Zusammenfassung

  • Wireshark dekodiert 3000+ Protokolle — es ist das maßgebliche Werkzeug, um auf Packet-Ebene zu verstehen, was im Netzwerk passiert
  • Capture-Filter (BPF-Syntax) reduzieren die Dateigröße durch Filterung vor der Aufzeichnung — auf stark ausgelasteten Netzwerken immer einsetzen, um Captures handhabbar zu halten
  • Display-Filter (Wireshark-Syntax) ermöglichen interaktives Eingreifen in beliebige Protokollfelder — ip.addr, tcp.port, tcp.analysis.* und dns.qry.name für die häufigsten Troubleshooting-Fälle beherrschen
  • Follow TCP Stream rekonstruiert vollständige Konversationen zwischen Endpunkten — unverzichtbar beim Debuggen von API-Aufrufen, Authentifizierungsabläufen und Protokollfehlern
  • Expert Information und IO-Graphs bieten automatisierte Diagnose und Traffic-Visualisierung — hier mit der Analyse beginnen, bevor einzelne Pakete untersucht werden
  • TLS-Entschlüsselung funktioniert mit SSLKEYLOGFILE für den eigenen Browser-Traffic — unverzichtbar beim Debuggen von HTTPS-Problemen ohne Proxy

Verwandte Artikel