Ist es möglich, tcpdump
(für eine bestimmte Zeit) die Anzahl der ausgehenden und eingehenden UDP-Pakete zu zählen?
Ich habe nicht viel Erfahrung mit tcpdump
, daher wäre ein Ratschlag, wie das geht, sehr hilfreich. Ich habe gelesen, dass ein timeout
Befehl gut ist, wenn ich einen Prozess nach einer bestimmten Zeit stoppen möchte, also dachte ich daran, ihn einfach tcpdump
nach meiner Zeit zu stoppen.
Aber wie kann ich die Anzahl der ausgehenden und eingehenden Pakete zählen und nur UDP-Pakete filtern?
Antwort1
Ich würde hierfür nicht tcpdump
(oder ) verwenden . Stattdessen würde ich verwenden , um die Pakete über einen bestimmten Zeitraum zu zählentshark
iptables
# Prepare two sets of counters and set up the rules
#
iptables -N udp_in
iptables -N udp_out
iptables -A udp_in
iptables -A udp_out
iptables -A OUTPUT --protocol udp -j udp_out
iptables -A INPUT --protocol udp -j udp_in
So können Sie die Zähler zu Beginn Ihrer Periode zurücksetzen
# Reset the counters
#
iptables -Z udp_in
iptables -Z udp_out
So können Sie die Zähler am Ende Ihrer Periode ablesen
# Look at the counters
#
packets_in=$(iptables -nvL udp_in | awk '/all/{print $1}')
packets_out=$(iptables -nvL udp_out | awk '/all/{print $1}')
echo "in=$packets_in, out=$packets_out"
Sie können einen Zähler auslesen und ihn sofort zurücksetzen, indem Sie Z
gleichzeitig das Flag angeben. Zum Beispiel
packets_in=$(iptables -nvLZ udp_in | awk '/all/{print $1}')
Wenn Sie die Teile zusammenfügen und davon ausgehen, dass Sie bereits die erforderlichen zusätzlichen iptables-Ketten erstellt haben (siehe oben), können Sie so etwas verwenden
# Reset the counters
#
iptables -Z udp_in
iptables -Z udp_out
# Wait 10 seconds
#
period=10
sleep "$period"
# Look at the counters
#
packets_in=$(iptables -nvL udp_in | awk '/all/{print $1}')
packets_out=$(iptables -nvL udp_out | awk '/all/{print $1}')
# Report the results
#
echo "During the last $period seconds we saw $packets_in UDP packet(s) in and $packets_out UDP packet(s) out."
Antwort2
man tcpdump
liefert die Informationen, die Sie benötigen. Die tcpdump-Webseite bietet auch einemanpage.
Direkt in der BESCHREIBUNG heißt es tcpdump
, dass nach Abschluss der Paketerfassung die Anzahl der erfassten, vom Filter empfangenen und vom Kernel gelöschten Pakete gemeldet wird.
Das Filtern (also die Suche nach Paketen eines bestimmten Typs) kann wesentlich schwieriger sein, aber der Abschnitt „Beispiele“ sollte genügend Hinweise darauf geben, dass Sie udp
für Ihr Beispiel nur einen Filter benötigen.
Wenn Sie also den richtigen Filter herausgefunden haben, verwenden Sie „ tcpdump
mit timeout
“, um ihn für die von Ihnen festgelegte Zeit auszuführen, „kill“ tcpdump
, und Sie erhalten die Anzahl der Pakete.
timeout 20 tcpdump udp
Dadurch wird die TCPdump-Filterung für UDP ausgeführt und TCPdump nach 20 Sekunden beendet.