Tcpdump auf mehreren Schnittstellen

17

Ich muss den Datenverkehr auf einem CentOS 5-Server erfassen, der als Web-Proxy mit 2 WAN-Schnittstellen und 1 LAN fungiert. Um ein seltsames Proxy-Problem zu beheben, möchte ich eine vollständige Konversation aufzeichnen. Da externe Verbindungen zwischen den beiden WAN-Schnittstellen ausgeglichen sind, frage ich mich, ob es möglich ist, auf allen Schnittstellen gleichzeitig zu erfassen.

Ich habe vorher tcpdump verwendet, aber es lässt immer nur eine Schnittstelle zu. Ich kann 3 parallele Prozesse starten, um auf allen Schnittstellen zu erfassen, aber dann erhalte ich 3 verschiedene Erfassungsdateien.

Wie geht das richtig?

Nahidul Islam
quelle
AdamRushad ist richtig. Sie können auch verwenden wireshark.
Ryan Babchishin

Antworten:

25

Laut der tcpdump-Manpage:

Auf Linux-Systemen mit Kerneln der Version 2.2 oder höher kann ein Schnittstellenargument '' any '' verwendet werden, um Pakete von allen Schnittstellen zu erfassen. Beachten Sie, dass das Aufnehmen auf einem beliebigen Gerät nicht im Promiscuous-Modus erfolgt.

Sie sollten also Folgendes ausführen können: tcpdump -i anyUm Daten auf allen Schnittstellen gleichzeitig in einer einzigen Erfassungsdatei zu erfassen.

Adam Rushad
quelle
2
Das funktioniert nicht, wenn ich einige, aber nicht alle Schnittstellen erfassen möchte
Thayne
9

Die Art und Weise, wie ich dies angehen würde, besteht darin, auf jeder Schnittstelle eine separate Datei zu erstellen und diese dann zusammenzuführen. Die Schnittstelle any enthält auch lo-Verkehr, der die Erfassung verschmutzen kann.

Dies ermöglicht auch die Analyse der Paketströme pro Schnittstelle ohne komplexe Filterung.

Ich würde in 3 Terminals oder durch Hintergrund den Befehl mit & erfassen

Die Flags -nn deaktivieren die DNS-Auflösung für die Geschwindigkeit, -s 0 speichert das gesamte Paket und -w schreibt in eine Datei.

tcpdump -i wan0 -nn -s 0 -w wan0.dump
tcpdump -i wan1 -nn -s 0 -w wan1.dump
tcpdump -i lan0 -nn -s 0 -w lan0.dump

Ich würde dann die Dateien mit dem Befehl mergecap von wireshark zusammenführen:

mergecap -w merged.dump wan0.dump wan1.dump lan0.dump
Tim Fletcher
quelle
2

Um einen tcpdump auf allen Schnittstellen zu erfassen, verwenden Sie

tcpdump -i any
Vijay SB
quelle
2
Dies wurde bereits vor 2 Jahren in Adam Rushads Antwort als Antwort gegeben.
Patrick Mevzek