Gerade bei Netzwerkproblemen hilft die passende Software solche zu lösen. Wenn es darum geht, den Netzwerkverkehr auf der grafischen Oberfläche aufzuzeichnen, ist unter Linux meist Wireshark die passende Lösung. Auf einem Server ohne grafische Oberfläche hilft hingegen die Software tcpdump – mit tcpdump aufgezeichneter Netzwerkverkehr lässt sich auch in Wireshark analysieren.
Inhaltsverzeichnis
tcpdump installieren
Unter auf Debian basierenden Linux-Distributionen installieren Sie diese Software wie üblich ganz einfach über die Paket-Verwaltung, etwa am schnellsten als root auf dem Terminal:
apt update
apt install tcpdump
tcpdump nutzen
tcpdump wird als root auf dem Terminal genutzt. Sie können damit feststellen, mit welchen anderen Rechnern (im lokalen Netzwerk und im Internet) kommuniziert wird, ob der Rechner mit einem anderen überhaupt kommuniziert und natürlich auch, was kommuniziert wird.
Lassen wir uns zu Beginn einfach einmal alle verfügbaren Netzwerk-Schnittstellen anzeigen:
tcpdump -D

Als Ausgabe erhalten Sie pro Zeile eine Netzwerk-Schnittstelle, die Ziffer vorne ist nur reine Information – in der ersten Zeile dieser Ausgabe sehen wir zum Beispiel die Schnittstelle „wlo1„. Mit „any“ hören wir alle Schnittstellen zur selben Zeit ab.
Nun, versuchen wir einmal, jeglichen Netzwerkverkehr auf der Schnittstelle „wlo1“ abzuhören – mit der Option -i gibt man die Schnittstelle an:
tcpdump -i wlo1

Zu Beginn jeder Zeile sehen Sie die Uhrzeit, es folgt die IP-Version (IP = v4 und IP6 = v6). Weiter geht es mit dem Auslöser einer Anfrage – also dessen IP-Adresse und dem Ziel-Rechner und folgend Informationen über die jeweiligen Pakete und Ports. Wichtig – solange Sie keinen Ziel-Host angeben, wird der komplette Netzwerkverkehr des lokalen Netzwerkes mitgeschnitten, also auch Pakete, die den lokalen Rechner nichts angehen. Wir können wie beschrieben natürlich auch alle Netzwerk-Schnittstellen gleichzeitig abhören:
tcpdump -i any
Interessanter wird es natürlich, wenn es darum geht, ob ein bestimmter anderer Rechner überhaupt mit dem lokalen kommuniziert – dazu startet man etwa einen Ping zu diesem Rechner und eine HTTP-Anfrage. Geht der Ping durch und einen HTTP-Anfrage wird nicht beantwortet, wird etwa der Server dort nicht laufen oder die Firewall blockiert die Anfrage. Wird der Ping nicht beantwortet, hängt es irgendwo dazwischen (siehe MTR). Mit der Option host gibt man den entsprechenden Host an, mit dem Hostnamen oder der IP-Adresse (währenddessen läuft hier beispielsweise ein Ping auf die Adresse):
tcpdump -i any host google.com

Mit -c N können Sie die Abfrage auf N Pakete beschränken, so hört die Abfrage nach zehn Paketen auf:
tcpdump -i any -c 10 host google.com
Mit der Option -A können Sie sich die Ausgabe in ASCII (also Text):
tcpdum -i any -c 10 host google.com
Sie können sich auch nur TCP-Pakete anzeigen lassen (also keine Broadcast-Kakete), hierzu dient die Option tcp:
tcp -i any tcp
Auch können Sie die Ausgabe auf einen gewünschten Port beschränken, natürlich auch mit Host – port N:
tcp -i any port 22
tcp -i any port 22 host irgendein.host
Auch können Sie die Ausgabe auf Quelle src und Ziel dst begrenzen:
tcpdump -i any src IP-Adresse
tcpdump -i any dst IP-Adresse
Längere Ausgaben speichert man besser in eine Datei und wertet diese anschließend etwa in Wireshark aus, die passende Dateiendung wäre „.pcap„, hierzu nutzen Sie die Option -r Dateiname:
tcpdump -i any -r dateiname.pcap

Eine Reaktion
Die pcap-Datei kann man jetzt mit wireshark (siehe Roberts Artikel https://linux-bibel.at/index.php/2023/09/10/wireshark-netzwerk-sniffer-unter-linux/ ) in Ruhe auswerten. Wobei man gezielt in eine Verbindung hineinschauen kann und was an der falsch läuft.