Tcpdump - 発信および着信UDPパケットの統計

Tcpdump - 発信および着信UDPパケットの統計

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パケット数を取得できます。timeouttcpdump

timeout 20 tcpdump udp

これにより、udpのtcpdumpフィルタリングが実行され、20秒後にtcpdumpが終了します。

関連情報