tcpdump
(設定された時間内に)発信および着信UDPパケットの数を計算できますか?
私はこれについての経験があまりないので、tcpdump
これを行う方法についての提案は非常に役立ちます。timeout
一定時間経過後にプロセスを停止したい場合は、推奨事項が良いという内容を読んだので、時間が経つと停止するつもりtcpdump
です。
しかし、出て来るパケットの数を計算し、UDPパケットのみをフィルタリングするにはどうすればよいですか?
答え1
私はtcpdump
これに(または)を使用しません。代わりに、一定期間のパケット数を計算tshark
するために使用します。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
月経が始まると、次のようにカウンタをリセットできます。
# Reset the counters
#
iptables -Z udp_in
iptables -Z udp_out
月経期間の終わりに、以下のようにカウンターを読むことができます。
# 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"
カウンタを読み取るZ
と同時にフラグを提供することで、すぐにリセットできます。例えば
packets_in=$(iptables -nvLZ udp_in | awk '/all/{print $1}')
フラグメントを1つにまとめて、必要な追加のiptablesチェーン(上記を参照)を作成したと仮定すると、次のものを使用できます。
# 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."
答え2
man tcpdump
必要な情報を提供してください。 tcpdump Web ページには次のものもあります。マンページ。
説明には、tcpdump
パケットのキャプチャの終わりにキャプチャされたパケットの数、フィルタで受信したパケットの数、カーネルから削除されたパケットの数が報告されます。
フィルタリング(つまり、特定の種類のパケットのみを見つける方法)ははるかに難しいかもしれませんが、サンプルセクションでは、必要なフィルタのみをサンプルに適用できるudp
十分な手がかりを提供する必要があります。
したがって、正しいフィルタを見つけたら、killを使用して定義した時間だけ実行すると、tcpdump
パケット数を取得できます。timeout
tcpdump
timeout 20 tcpdump udp
これにより、udpのtcpdumpフィルタリングが実行され、20秒後にtcpdumpが終了します。