매뉴얼 페이지를 읽고 StackExchange와 더 넓은 인터넷을 검색했음에도 불구하고 시간 기반, 회전, 제한된 개수의 tcpdump를 만드는 방법을 찾지 못했습니다.
예를 들어, 매시간 24시간 이하의 파일을 갖고 싶습니다. 하지만 24개 파일 이후에 tcpdump가 중지되는 것을 원하지 않고 가장 오래된 파일을 삭제하고 새 파일을 생성하기를 원합니다. 영원히 실행되지만 24개 이상의 파일을 생성하지 않기를 원합니다.
매뉴얼 페이지에서는 -C -W -G
함께 사용하면 이 작업을 수행할 수 있다고 표시하는 것 같지만, 테스트에서는 아직 이것이 가능하다는 것을 보여주지 못했습니다.
5개 파일 이후 사용 -G -W
및 strftime
종료
# 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
이 세 가지를 함께 사용하면 시간 프레임당 생성되는 파일 수만 제한되는 것 같습니다. 예를 들어 다음은 각 5초 창에서 최대 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
하지만 크기 대신 시간별로 회전하고 싶습니다.
답변1
매분 6개의 캡처 파일을 무기한 생성하는 다음 예를 살펴보겠습니다.
# tcpdump -i eth0 -G 10 -w dump-%S.pcap
.
%S
템플릿 파일 이름에 두 번째 시간 변수만 지정하고 회전 시간 범위를 10초로 지정하면 됩니다 -G
. 캡처 시간이 1분마다 변경되면 tcpdump
이전 초 표시 파일을 덮어씁니다.
이제 다음을 통해 시간별 순환 및 일일 순환 캡처를 수행할 수 있습니다.
# tcpdump -i eth0 -G 3600 -w dump-%H.pcap
.
여기에도 동일한 원칙이 적용됩니다. tcpdump
3600초마다 새 파일이 생성되고 현재 시간을 따라 이름이 지정됩니다. 날짜를 변경하면 이전 시간의 파일이 차례로 교체됩니다.