私の挑戦
大量のデータのtcpdumpを実行する必要があります。実際には、多くのトラフィックを見ることができる無差別モードのままの2つのインターフェースからです。
まとめると
- 2つのインターフェイスからの無差別モードのすべてのトラフィックを記録します
- これらのインターフェイスにはIPアドレスが割り当てられていません
- pcapファイルは〜1Gごとにローテーションする必要があります
- 10 TBのファイルが保存されたら、最も古いファイルの切り捨てを開始します
私が現在していること
現在、私は次のようにtcpdumpを使用しています。
ifconfig ethX promisc
ifconfig ethX promisc
tcpdump -n -C 1000 -z /data/compress.sh -i any -w /data/livedump/capture.pcap $FILTER
に$FILTER
はsrc / dstフィルターが含まれているため、を使用できます-i any
。この理由は、2つのインターフェイスがあり、2つではなく1つのスレッドでダンプを実行したいからです。
compress.sh
tarを別のCPUコアに割り当て、データを圧縮し、適切なファイル名を付けて、アーカイブの場所に移動します。
2つのインターフェイスを指定できないため、フィルターを使用してany
インターフェイスからダンプすることを選択しました。
現在、私はハウスキーピングを行いませんが、ディスクの監視を計画しており、100Gが残っているときに最も古いファイルの消去を開始します-これで問題ありません。
そしていま; 私の問題
ドロップされたパケットが表示されます。これは、数時間実行され、およそ250ギガバイトのpcapファイルを収集したダンプからのものです。
430083369 packets captured
430115470 packets received by filter
32057 packets dropped by kernel <-- This is my concern
多数のパケットがドロップされるのを回避するにはどうすればよいですか?
これらのことは私がすでに試したか見た
値を変更/proc/sys/net/core/rmem_max
し、/proc/sys/net/core/rmem_default
実際に助けをやっている-実際にはそれだけで約半分ドロップされたパケットのの世話をしました。
gulpについても見てきました。gulpの問題は、1つのプロセスで複数のインターフェースをサポートしておらず、インターフェースにIPアドレスがない場合に怒るということです。残念ながら、それは私の場合、契約を破る要因です。
次の問題は、パイプを介してトラフィックが流れるとき、自動回転を実行できないことです。1つの巨大な10 TBファイルを取得するのはあまり効率的ではなく、wiresharkを実行できる10 TB以上のRAMを搭載したマシンはないので、それはありません。
何か提案はありますか?おそらく、トラフィックダンプをすべて行うより良い方法です。