2016-07-14 13 views
1

IPテーブルルール(50%の確率でパケットをドロップする)でインターフェイスにパケットをプログラムでドロップしています。私はbashスクリプトを使って、過去3秒間にドロップされたパケットの数を取得できるようにしたい。私はすでにifstatを見てきましたが、ドロップが発生していることを認識しているようです(おそらく、IPtablesを通過した後に入ってくるパケットを見ていますか?)。そのような番号を取得するために使用できるツールやユーティリティはありますか?過去30秒間にドロップされたパケットの数を取得する方法

編集:iptablesは、受信者が膨大な量のパケットをドロップするようになる高速ネットワークをシミュレートするために使用しているツールです。この状況は、私が見て、識別できるようにしたいものです。このため

答えて

3

使用dumpcap:

dumpcap -i your_interface_here -a duration:3 -w log.pcap | grep '^Packets received/dropped' 

dumpcap manpage says:

-a
Dumpcapキャプチャファイルに を書き込みを停止するときに指定する基準を指定します。基準は、形式試験である: 試験のいずれかである値:

 duration:value Stop writing to a capture file after value seconds 
     have elapsed. 

-i
キャプチャインタフェース
-w
はoutfileに生のパケットデータを書き込みます。

+0

OPの質問にはお答えしていません。彼はキャプチャしようとしていないパケットの統計情報を探しているようだ。 – Shadowfen

+1

@ Shadowfen:本当ですか? imhoは「bashスクリプトを使用して過去3秒間にドロップされたパケットの数を取得したいと思っています。」 – sjsam

+0

"ドロップされたパケットの数" - パケットをキャプチャしません。 – Shadowfen

0

試すことができますiptables -vL、それはiptableルールでドロップパケットカウントを示しています。 iptablesの中に定義されたルールの略

s1=$(iptables -vL | grep rule | awk '{ print $1}') 
sleep 3 
s2=$(iptables -vL | grep rule | awk '{ print $1}') 
echo "$(($s2-$s1))" 

ルール。

+0

これはIPtablesでパケットを破棄している特定のシナリオではうまくいくかもしれませんが、長い間、iptablesはネットワークがパケットを破棄するのに十分な速さでネットワークが稼動している状況をシミュレートすることになっています。したがって、iptablesメソッドを使用すると、ルールではなく膨大な量のパケットが廃棄されるため、このような状況では機能しません。 –

関連する問題