IT/유틸리티

TCPDUMP란 무엇인가?

돌선생 2021. 6. 11. 17:58

 tcpdump 란? 유닉스 계열에서 네트워크 상에 패킷을 캡처하여서 표시해주는 소프트웨어 입니다. 

윈도우 계열에서는 Windump 또는 WireShark라는 소프트웨어가 있습니다. 

 

tcpdump
tcpdump

 현업에서 많이 사용하고 보통 통신이 이루어지고 있는지 확인 하는 용도로 사용하고 있습니다. 

 

위 사진과 같이 제 PC IP (192.168.20.57) 에서 80 (HTTP) 포트 사용하는 부분을 캡처하여서 확인할 수 있습니다.

 

tcpdump 매개변수는 아래와 같습니다.

 

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 ]

 

-A

패킷의 내용을 화면에 ASCII로 보여준다

 

-B

운영 체제가 캡처하는 버퍼 크기를 buffer_size로 바꾼다.

 

-c

주어진 수의 패킷을 받은 후 종료한다.

 

-C

방금 받은 패킷을 저장파일로 만들기 전에 파일이 file_size보다 큰지 체크한다. 만약 그렇다면, 현재 저장 파일을 닫고 새로 하나를 연다. 저장된 파일의 이름은

 

-w

기호를 이용해 1부터 시작해 하나씩 늘어난다.(1,048,576 바이트가 아니라 1,000,000바이트이다)

 

-d

컴파일된 packet-matching code를 사람이 읽을 수 있는 표준형으로 바꾼후 멈춘다.

 

-dd

packet-matching 코드를 C 프로그램의 일부로 표현한다.

 

-ddd

packet-matching 코드를 십진수로 표현한다.

 

-D

tcpdump가 패킷을 잡을 수 있는 시스템 상에 가능한 네트워크 인터페이스 목록을 출력한다.

 

-e

링크 레벨 헤더를 각각 덤프라인에 출력한다.-f외부 IPv4 주소를 되도록 심볼(상징적)이 아닌 숫자로서 표현한다.

 

-F

파일을 필터식(filter expression)으로 입력한다. 추가적으로 명령창에 입력된 식은 무시된다.

 

-G

이 옵션을 지정하면 덤프 파일을 -w 옵션으로 매 초마다 회전해 회전된 덤프파일을 저장한다. 저장된 파일은 -w 옵션으로 strftime으로 시간 정보가 정의되어 이름에 포함되어야 한다. 만약 시간 형식이 저장되지 않으면 매번 새로운 파일은 원래 있던 파일에 덮어 씌워진다. 만약 -C 옵션과 함께 쓰인다면 이름은 'file<count>'형식으로 저장된다.

 

-i

인터페이스를 정한다. 정해지지 않았으면 tcpdump는 시스템 인터페이스 목록에서 가장 낮은 숫자를 고른다.

 

-I

인터페이스를 "monitor mode"로 놓는다. 이는 IEEE 802.11 와이파이 인터페이스에서만 작동되고 몇몇 운영 체제에서만 지원된다.

 

여러가지 매개변수가 있고 필요에 따라서 필요에 따라서 사용하면 됩니다. 

 

사용 예제로 

특정 인터페이스 eth1 를 통해 host 192.168.1.1과 10.10.10.1의 패킷을 캡처

 

tcpdump -nni eth1 host 192.168.1.1 and host 10.10.10.1

 

출발지가 192.168.1.1 목적지가 10.10.10.1 인 패킷을 캡처

 

tcpdump -nni eth1 src 192.168.1.1 and dst 10.10.10.1

 

출발지가 192.168.1.1 목적지가 10.10.10.1이고 포트 80을 캡처

 

tcpdump -nni eth1 src 192.168.1.1 and dst 10.10.10.1  and port 80

 

출발지가 192.168.1.1 목적지가 10.10.10.1이고 포트 80을 제외한 패킷을 캡처

 

tcpdump -nni eth1 src 192.168.1.1 and dst 10.10.10.1  and not port 80

 

icmp 패킷 캡처

 

tcpdump -nni eth1 icmp

 

UDP 패킷 캡처

 

tcpdump -nni eth1 udp 

 

 

 이런 식으로 사용 가능하다. 

 

tcpdump
tcpdump

 

 추가로 예를 들어 출발지 192.168.10.10에서 목적지 8.8.8.8로 Ping check 실패 시 방화벽에 의해 차단이 되는 것을 확인하기 위해 tcpdump를 통해 eth1 인터페이스와 eth2 인터페이스를 동시에 확인해주면

 

tcpdump -nni eth2 host 192.168.10.10 and host 8.8.8.8 and icmp 

tcpdump -nni eth1 host 192.168.10.10 and host 8.8.8.8 and icmp 

 

eth2 패킷 dump 에는 icmp 통신이 보일 것이고  eth1 패킷 dump에서는 icmp 통신이 보이지 않을 것이다. 

 

이런 식으로 장비에 의해 차단되는 부분도 확인 가능하다.

 

이상.