web-dev-qa-db-ja.com

tcpdump時間ベースの循環ローテーション

マニュアルページを読んでStackExchangeやより広いインターネットを検索しているにもかかわらず、時間ベースのローテーションで制限されたカウントのtcpdumpを作成する方法を理解できませんでした。

たとえば、24時間以内で、1時間に1つのファイルが欲しいです。しかし、私はtcpdumpが24個のファイルの後で停止しないようにしたいので、最も古いファイルを削除して新しいファイルを作成します。永久に実行したいが、24個を超えるファイルを作成しない。

Manページは、-C -W -Gを一緒に使用するとこれを達成できることを示しているようですが、私のテストではこれが機能することを示していません。

-G -Wstrftimeを使用すると、5ファイル後に終了します

# tcpdump -w foo.%F_%H%M%S -G 5 -W 5 -Z root port 22
tcpdump: listening on enp0s3, link-type EN10MB (Ethernet), capture size 65535 bytes
Maximum file limit reached: 5

3つすべてを一緒に使用すると、時間枠ごとに生成されるファイルの数が制限されるようです。たとえば、次の例では、各5sウィンドウで最大5 x 1MBのファイルをキャプチャします。 5秒間に5MBを超える場合、最後の5MBのみが保持されます。ただし、合計ファイル数は永久に増加します。

# tcpdump -w foo.%F_%H%M%S -G 5 -C 1 -W 5 -Z root port 22

これは5 x 1MBファイルをキャプチャし、リングで上書きします。

# tcpdump -w foo -C 1 -W 5 -Z root port 22

しかし、サイズではなく、時間ごとにローテーションしたいと考えています。

5
Slashterix

次の例では、毎分6つのキャプチャファイルが無期限に生成されます。

# tcpdump -i eth0 -G 10 -w dump-%S.pcap

2番目の時間変数%Sのみをテンプレートファイル名で指定する必要があり、-Gで10秒の回転時間枠を指定することに注意してください。キャプチャ時間が1分ごとに変わると、tcpdumpは前に2番目にマークされたファイルを上書きします。

現在、1時間ごとのローテーションと毎日の周期的なキャプチャは、次の方法で実現できます。

# tcpdump -i eth0 -G 3600 -w dump-%H.pcap

同じ理論的根拠がここでも当てはまります。 tcpdumpは、3600秒ごとに新しいファイルを作成し、現在の時間を名前に付けます。日を変更すると、前の時間のファイルが順番に置き換えられます。

5
dfernan