tcpdump – -G, -W 및 -C를 사용하여 캡처 파일 회전


14

30 분 분량의 데이터를 주기적으로 48 파일로 캡처하는 회전 tcpdump 출력을 캡처 할 수 있기를 원합니다.

매뉴얼 페이지는 이것이 가능해야 함을 암시하지만 내 테스트로 원하는 결과를 얻지 못하는 것 같습니다.

-W

      -C이 옵션 과 함께 사용하면 생성 된 파일 수를 지정된 수로 제한하고 처음부터 파일 덮어 쓰기를 시작하여 '회전'버퍼를 만듭니다. 또한 최대 0 개의 파일을 지원할 수있는 선행 0을 가진 파일의 이름을 지정하여 파일을 올바르게 정렬 할 수 있습니다.

      -G이 옵션 과 함께 사용 하면 생성 된 회전 된 덤프 파일 수가 제한에 도달하면 상태 0으로 종료됩니다. 함께 사용 -C하면이 동작으로 인해 타임 슬라이스 당 주기적 파일이 생성됩니다.

OS X 10.9.5 / 10.10.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 초 마다 회전합니다 . 저장 파일은 -wstrftime (3)에 정의 된대로 시간 형식을 포함하도록 지정된 이름을 갖습니다 . 시간 형식을 지정하지 않으면 각 새 파일이 이전 파일을 덮어 씁니다.

      -C옵션 과 함께 사용하면 파일 이름은 ' file <count>' 의 형식을 사용 합니다 .

당신이 썼기 때문에 -G 3, 당신은 당신이 말한 동안 이것을 3 초마다 회전시킬 것입니다

... 30 분 분량의 데이터를 캡처합니다

또한 명명 체계가 잘못되었습니다.

-C옵션 과 함께 사용하면 파일 이름은 ' file <count>' 의 형식을 사용 합니다 .

따라서 이름의 시간 형식을 지정할 필요가 없습니다.

또한이 -C옵션에는 인수가 없지만 man page 에 따르면 다음을 수행 해야합니다.

tcpdump [  -AdDefIKlLnNOpqRStuUvxX  ] [  -B  buffer_size  ] [  -c  count  ]
-C  file_size  ] [  -G  rotate_seconds  ] [  -F  file  ] [  -I  interface  ] [  -m  module  ] [  -M  secret  ] [  -r  파일  ] [  -s  snaplen  ] [  -T  type  ] [  -w  file  ] [  -W  filecount  ] [  -E  spi @ ipaddr algo : secret, ... ] [  -y  데이터 링크 유형  ] [  -z  postrotate-command  ] [  -Z  사용자  ] [   ]

맨 페이지 상태 :

-C

      원시 패킷을 저장 파일에 기록하기 전에 파일이 현재 file_size 보다 큰지 확인 하고, 그렇다면 현재 저장 파일을 닫고 새 파일을여십시오. 첫 번째 저장 파일 이후의 저장 파일은 -w플래그로 지정된 이름을 가지며 그 뒤에 숫자가 1부터 시작하여 위로 계속됩니다. file_size 의 단위 는 수백만 바이트 (1,000,000 바이트, 1,048,576 바이트가 아님)입니다.

따라서 -C 100100MB 파일을 생성하려면 지정해야 합니다.

결국, 당신의 명령은 다음과 같아야합니다 :

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

이렇게하면 1800 초 (= 30 분)마다 또는 100MB마다 (둘 중 빠른 시간이 소요됨)주기가 48 인 파일 (trace1, trace2, ...)이 주기적으로 순환됩니다.


최종 답변에 조건이 없습니다 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는 파일 이름이 반복되지 않기 때문에 비순환 적으로 파일을 계속 작성합니다.
Bill Menees

@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

성가신 간헐적 인 문제에 대한 추적을 구성하는 데 매우 유용합니다. 또한, 당신이 뿌리가 아니라면, 당신은 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

-w 파일 이름에서 -G가 기대하는 strftime 형식 지정자는 완전한 날짜 및 시간을 나타내지 않아도됩니다. % H와 % M 만 있고 정확히 30 분의 회전 시간으로 tcpdump를 호출하면 30 분 간격으로 서로 다른 두 개의 % 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 분 표시로 잘린 것처럼 보입니다. 30 분이 httpdebug.pcap00지나면 100MB에 도달 하면 숫자로 되돌아 가서 숫자를 증가시키는 것으로 보입니다 . 즉, 30 분 동안 많은 요청이 있으면 httpdebug.pcapXX 수가 매우 높아집니다. 더 이상 한 기간 동안 많은 요청에 도달하지 않으면 높은 httpdebug.pcapXX 숫자는 덮어 쓰지 않습니다.

그래서 타임 슬라이스 당 주기적 파일은 타임 슬라이스가 -G 1800있고 매번 순환하고 매번 -G 1800증가 한다는 것을 의미한다고 생각 합니다 -C 100.

-W 48영향을 미치는지 확실하지 않지만 아마도 httpdebug.pcap470에서 시작하면 패킷 캡처가 중지됩니다.


최근에 혼란스러운 문구에 대한 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.