Tcpdump 로테이션 파일저장(크기, 주기, 파일 개수)
tcpdump를 필요 시에 라이브하게 사용하는 경우가 일반적이지만,
어떤 작업을 걸어두고 여러 파일로 쪼개서 저장해야하는 경우도 생기게 된다.
그럴 때 사용할 수 있는 로테이션 관련 옵션 메모
1. -w [파일명]
파일명으로 저장
[root@localhost ~]# tcpdump -ne -i br0 -w test.pcap tcpdump: listening on br0, link-type EN10MB (Ethernet), capture size 262144 bytes ^C15 packets captured 18 packets received by filter 0 packets dropped by kernel [root@localhost ~]# ls -al test.pcap* -rw-r--r--. 1 tcpdump tcpdump 1715 3월 18 17:36 test.pcap [root@localhost ~]# |
br0 인터페이스에서 15개의 패킷 캡쳐해서 test.pcap으로 저장하였다.
파일 목록을 보면 test.pcap 저장됨을 확인할 수 있다.
2. -G [초]
로테이션 기준 시간(초단위)
[root@localhost ~]# tcpdump -ne -i br0 -w test.pcap -G 3 tcpdump: listening on br0, link-type EN10MB (Ethernet), capture size 262144 bytes ls ^C733 packets captured 744 packets received by filter 0 packets dropped by kernel [root@localhost ~]# |
[root@localhost ~]# watch -n 1 "ls -al --time-style=full test.pcap* >> rotate_log" |
[root@localhost ~]# cat rotate_log -rw-r--r--. 1 tcpdump tcpdump 4096 2022-03-18 17:49:05.311631129 +0900 test.pcap -rw-r--r--. 1 tcpdump tcpdump 8192 2022-03-18 17:49:06.313603752 +0900 test.pcap -rw-r--r--. 1 tcpdump tcpdump 16384 2022-03-18 17:49:08.317549001 +0900 test.pcap -rw-r--r--. 1 tcpdump tcpdump 0 2022-03-18 17:49:09.320521594 +0900 test.pcap -rw-r--r--. 1 tcpdump tcpdump 372736 2022-03-18 17:49:10.895478564 +0900 test.pcap -rw-r--r--. 1 tcpdump tcpdump 385024 2022-03-18 17:49:11.898451163 +0900 test.pcap -rw-r--r--. 1 tcpdump tcpdump 0 2022-03-18 17:49:12.900423784 +0900 test.pcap |
저장하는 파일명이 test.pcap이므로 로테이션되어 새로 저장되는 경우에는 덮어쓰기가 된다.
3초마다 새로 쓰는지 확인하기 위해 watch 명령어로 파일 수정시간과 파일크기를 확인해보면 동작하고 있음을 볼 수 있다.
-C [사이즈]
로테이션 기준 파일크기(약 1M*사이즈)
[root@localhost ~]# tcpdump -ne -i br0 -w test.pcap -C 1 tcpdump: listening on br0, link-type EN10MB (Ethernet), capture size 262144 bytes ^C31414 packets captured 31434 packets received by filter 0 packets dropped by kernel [root@localhost ~]# ls -al test.pcap* -rw-r--r--. 1 tcpdump tcpdump 1000091 3월 18 18:12 test.pcap -rw-r--r--. 1 tcpdump tcpdump 1000088 3월 18 18:12 test.pcap1 -rw-r--r--. 1 tcpdump tcpdump 1000054 3월 18 18:12 test.pcap2 -rw-r--r--. 1 tcpdump tcpdump 1000158 3월 18 18:12 test.pcap3 -rw-r--r--. 1 tcpdump tcpdump 1000186 3월 18 18:12 test.pcap4 -rw-r--r--. 1 tcpdump tcpdump 1000010 3월 18 18:12 test.pcap5 -rw-r--r--. 1 tcpdump tcpdump 1000276 3월 18 18:12 test.pcap6 -rw-r--r--. 1 tcpdump tcpdump 1000118 3월 18 18:12 test.pcap7 -rw-r--r--. 1 tcpdump tcpdump 1000254 3월 18 18:12 test.pcap8 -rw-r--r--. 1 tcpdump tcpdump 816494 3월 18 18:12 test.pcap9 [root@localhost ~]# |
오우 C 옵션은 알아서 번호붙여 로테이션 파일을 생성한다.
파일 크기를 보면 1M이지만 정확하지는 않다. tcpdump manpage를 보면 1,000,000이라고는 하지만 순간 유입량이 많은 경우 또는 패킷의 크기에 따라 저장되는 파일크기의 오차가 생기는 듯 하다.
-W [개수]
로테이션 시 저장하는 최대 파일 갯수
[root@localhost ~]# tcpdump -ne -i br0 -w test.pcap -C 1 -W 3 tcpdump: listening on br0, link-type EN10MB (Ethernet), capture size 262144 bytes ^C62854 packets captured 62857 packets received by filter 0 packets dropped by kernel [root@localhost ~]# ls -al test.pcap* -rw-r--r--. 1 tcpdump tcpdump 1000235 3월 18 18:15 test.pcap0 -rw-r--r--. 1 tcpdump tcpdump 717728 3월 18 18:15 test.pcap1 -rw-r--r--. 1 tcpdump tcpdump 1000438 3월 18 18:15 test.pcap2 [root@localhost ~]# |
C 옵션에서 추가로 W옵션을 사용해본다. 최대 파일 갯수를 지정하는 것으로 테스트 내용을 보면
캡쳐한 패킷량이 3배는 많은데 파일은 3개만 생겼다.
또한 파일 크기를 보면 파일 3개 양을 모두 캡쳐하고 끝난게 아니고 첫번째 파일부터 다시 덮어쓰기 하는 것을 알 수 있다.
끝
- 참조
tcpdump 파일 로테이트 옵션 (-G) - 스마일서브 IDCHOWTO닷컴
시스템내 모니터링 스크립트를 작성하다 tcpdump에 재미있는 옵션이 있어서 설명해드립니다.아실만한분들도 계시겠지만 저는 잘안쓰는 옵션이었기에 모니터링시 적절히 이용하면 좋을거 같
idchowto.com