tcpdump – -G、-W、および-Cを使用してキャプチャファイルをローテーションします


12

30分のデータを48ファイルに周期的にキャプチャする回転tcpdump出力をキャプチャできるようにしたいと考えています。

マニュアルページではこれが可能であるべきであると示唆されていますが、私のテストでは探している結果が得られないようです:

-W

      -Cこのオプション と組み合わせて使用​​すると、作成されるファイルの数が指定された数に制限され、最初からファイルの上書きが開始されるため、「回転」バッファーが作成されます。さらに、最大数のファイルをサポートするのに十分な先行0をファイルに付けて、正しくソートできるようにします。

      -Gオプションと組み合わせて使用​​すると、作成される回転ダンプファイルの数が制限され、制限に達するとステータス0で終了します。-C同様に使用すると、動作によりタイムスライスごとに周期的なファイルが作成されます。

これをOS X 10.9.5 / 10.10.3クライアントで実行しています。これがテストコマンドです。3番目のファイルの直後に終了します。

tcpdump -i en0 -w /var/tmp/trace-%Y-%M-%d_%H.%M.%S.pcap -W 3 -G 3 -C -K -n

plsは私の答えを参照してください
MariusMatutiae

回答:


13

あなたがの-W 3代わりに書いたからです-W 48。ただし、コマンドには他のエラーがあります。

オプションの-G意味:

-G rotate_seconds

      指定されている-w場合、オプションで指定されたダンプファイルをrotate_seconds秒ごとにローテーションします。Savefilesには、-wstrftime(3)で定義された時刻形式を含む名前を指定します。時間形式が指定されていない場合、新しいファイルはそれぞれ以前のファイルを上書きします。

      -Cオプションと組み合わせて使用​​する場合、ファイル名は ' file <count>'の形式を取ります

を書いたので-G 3、これを3秒ごとにローテーションしますが、

... 30分のデータをキャプチャします

また、命名スキームが間違っています:上記から、

-Cオプションと組み合わせて使用​​する場合、ファイル名は ' file <count>'の形式を取ります

したがって、名前の時刻形式を指定しても意味がありません。

さらに、この-Cオプションには引数がありませんが、マニュアルページによると、次のようになります。

tcpdump [  -AdDefIKlLnNOpqRStuUvxX  ] [  -B  buffer_size  ] [  -c  count  ]
-C  file_size  ] [  -G  rotate_seconds  ] [  -F  file  ] [  -I  interface  ] [  -m  module  ] [  -M  secret  ] [  -r  file  ] [  -s  snaplen  ] [  -T  type  ] [  -w  file  ] [  -W  filecount  ] [  -E  spi @ ipaddr algo:secret、... ] [  -y  datalinktype  ] [  -z  postrotate-command  ] [  -Z  user  ] [  expression  ]

manページの状態:

-C

      生ファイルをセーブファイルに書き込む前に、ファイルが現在file_sizeよりも大きいかどうかを確認し、そうであれば、現在のセーブファイルを閉じて新しいファイルを開きます。最初のsavefileの後のsavefilesは、-wフラグで指定された名前を持ち、その後に1から始まり上向きに番号が続きます。file_sizeの単位は、数百万バイト(1,048,576バイトではなく、1,000,000バイト)です。

したがって-C 100、100 MBのファイルを生成するために指定する必要があります。

最終的に、コマンドは次のようになります。

tcpdump -i en0 -w /var/tmp/trace -W 48 -G 1800 -C 100 -K -n

これにより、(trace1、trace2、...という名前の)ファイルが周期的にローテーションされます。期間48では、1800秒(= 30分)または100 MBのいずれか早い方になります。


最後の答えには条件がありませIf no time format is specified, each new file will overwrite the previous.ん(答えを更新しました。)
okwap

2
@okwap、答えを編集したとき(-%Y-%m-%d_%H:%M:%Sを追加するため)、-G、-C、および-Wを一緒に使用することの循環的な部分を壊しました。-wファイル名に/ var / tmp / traceのみを使用した元の答えは正しかったため、説明されているとおりに目的の循環出力を生成しました(trace1、trace2、...)。-G、-C、および-Wを一緒に使用すると、ファイル名にstrftime形式を使用できず、循環出力を取得できます。編集を行うと、ファイル名が繰り返されないため、tcpdumpは非周期的にファイルの書き込みを継続します。
ビルメニー

@BillMeneesこれに注目してくれてありがとう、okwapの編集を元に戻しました。
MariusMatutiae

以下のコメントのSwinsterと同じように、この回答では期待される動作が得られないことに注意してください。-w -W -Cおよび-Gを組み合わせて使用​​すると、同じファイルが何度も上書きされます。予想される-W <n>に等しい数のファイルが作成されることはありませ
Niels2000

6

時に拡大flabdabletの回答 (変更-G 1800-G 300、単にテスト目的のために- -回転、5分ごと)

tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300

あなたを与えるだろう%m=month%d=day of month%H=hour of day%M=minute of day%S=second of day%s=millisecond of day、その結果、

/var/temp/trace-03-02-08-30-56-1520002568
/var/temp/trace-03-02-08-35-56-1520002568
/var/temp/trace-03-02-08-40-56-1520002568

これらの厄介な断続的な問題のトレースを整理するのに非常に便利です。また、rootでない場合sudoは、もちろんnohupにすることもできます。

sudo bash -c "nohup tcpdump -i en0 -w /var/tmp/trace-%m-%d-%H-%M-%S-%s -W 3 -G 300 &"

3

必要なのは私だけのようです

tcpdump -i en0 -G 1800 -w /var/tmp/trace-%H-%M.pcap

-Gが-wファイル名で予期するstrftime形式指定子は、完全な日付と時刻を表す必要はありません。そこに%Hと%Mだけがあり、正確に30分の回転時間で、tcpdumpの呼び出しは、30分間隔で2つの異なる%M値を生成するだけで、昨日のトレースファイルは同じ時間に上書きされますそして分数が再び転がります。


1

いくつかの実験の後、@ MariusMatutiaeの回答を期待どおりに動作させることができませんでした。時間が制限要因になり、ファイル名に時間形式が追加されない場合、現在のpcapファイルは単純に上書きされます。

たとえば、試してみてください:

tcpdump -i en0 -w /var/tmp/trace -W 10 -G 5 -C 1

あなたが終わるすべては何度trace.pcap0も書かれています。

コメントで示唆されているように、ファイル名に時間のフォーマットを追加すると、ファイルのリストが増えていくだけです。

したがって、サイズが制限された単純なファイルに固執する必要がありました。

tcpdump -i en0 -w /var/tmp/trace -W 48 -C 100

0

ええ、MariusMatutiaeの答えが言っているように、それは機能していないようです。

tcpdump ...{other options}... -w httpdebug.pcap -W 48 -G 1800 -C 100
$ ls -l
-rw-r--r--. 1 tcpdump tcpdump  100007441 Mar 17 17:57 httpdebug.pcap00
-rw-r--r--. 1 tcpdump tcpdump   46895104 Mar 17 18:02 httpdebug.pcap01
-rw-r--r--. 1 tcpdump tcpdump   93091143 Mar 17 17:47 httpdebug.pcap02
-rw-r--r--. 1 tcpdump tcpdump    5372072 Mar 17 16:17 httpdebug.pcap03

タイムスタンプが最も早く、100MBよりもはるかに小さい-C 100ため、30分間にできるだけ多くのMBファイルをキャプチャする可能性があるhttpdebug.pcap03ように思われます。30分にhttpdebug.pcap00達すると、100MBに達すると、ジャンプして数値が増加するようです。これは、30分間に多くのリクエストがある場合、非常に高いhttpdebug.pcapXX番号に到達することを意味します。一度にその数のリクエストに到達しない場合、これらの高いhttpdebug.pcapXX番号は上書きされません。

だから、タイムスライスごとの周期的なファイルは、タイムスライスが-G 1800あり、それが毎回循環し、毎回-G 1800増加することを意味すると考えています-C 100

-W 48影響があるかどうかはわかりませんが、httpdebug.pcap47(カウントが0から始まる場合は、パケットのキャプチャを停止します。


つい最近、混乱した言葉遣いに関するGitHubの問題が発生しました。彼らは実装を変更しませんでしたが、ドキュメントを少し明確にすることを試みました。

提案された変更は、上にマージされた2019年1月28日

2019年3月17日現在、現在のドキュメントは次のとおりです。

-C

.BI \-C " file_size"
Before writing a raw packet to a savefile, check whether the file is
currently larger than \fIfile_size\fP and, if so, close the current
savefile and open a new one.  Savefiles after the first savefile will
have the name specified with the
.B \-w
flag, with a number after it, starting at 1 and continuing upward.
The units of \fIfile_size\fP are millions of bytes (1,000,000 bytes,
not 1,048,576 bytes).

-G

.BI \-G " rotate_seconds"
If specified, rotates the dump file specified with the
.B \-w
option every \fIrotate_seconds\fP seconds.
Savefiles will have the name specified by
.B \-w
which should include a time format as defined by
.BR strftime (3).
If no time format is specified, each new file will overwrite the previous.
Whenever a generated filename is not unique, tcpdump will overwrite the
preexisting data; providing a time specification that is coarser than the
capture period is therefore not advised.
.IP
If used in conjunction with the
.B \-C
option, filenames will take the form of `\fIfile\fP<count>'.

-W

.B \-W
Used in conjunction with the
.B \-C
option, this will limit the number
of files created to the specified number, and begin overwriting files
from the beginning, thus creating a 'rotating' buffer.
In addition, it will name
the files with enough leading 0s to support the maximum number of
files, allowing them to sort correctly.
.IP
Used in conjunction with the
.B \-G
option, this will limit the number of rotated dump files that get
created, exiting with status 0 when reaching the limit.
.IP
If used in conjunction with both
.B \-C
and
.B \-G,
the
.B \-W
option will currently be ignored, and will only affect the file name.

私はまだ少し混乱していると思いますが、上記の結論との違いは-W、使用すると-C -Gファイル名以外には何も影響しないということです。

一般に、-Wファイルの数を制限するために使用されます。したがって、無期限にキャプチャする場合は使用しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.