tcpdump는 리눅스나 유닉스 계열 OS에서 네트워크 인터페이스를 통해 송수신되는 패킷의 정보를 출력해주는 프로그램이다. 

특정 서버 장비에서 비정상적인 네트워크 입출력이 감지된 경우 문제의 원인을 파악하기 위해서 tcpdump를 이용한다.

 

tcpdump는 libcap 라이브러리를 이용해서 패킷을 캡쳐하고 확인된 정보를 파일로 저장한다.

따라서 확인된 정보는 wireshark와 같은 분석 도구를 이용해 확인 가능하다.


tcpdump 옵션

옵션 설명
-c <count> 지정한 수 만큼 패킷을 수신
-i <interface>  지정한 인터페이스를 통하는 패킷들의 내역을 출력
-w <file>  캡쳐한 패킷의 정보를 지정한 파일에 바이너리 포맷으로 출력
-r <file> -w 옵션으로 만들어진 파일에 기록되어 있는 정보를 확인
-v, -vv, -vvv 패킷 내용을 상세 보기, v가 많아질수록 더 자세하게 출력
-nn 패킷 내용 출력시 호스트/서비스 명으로 해석하지 않고 IP 주소와 포트 번호로 출력
-N 호스트 이름 출력시, 도메인을 출력하지 않음
-ttt 덤프의 각 라인에 타임 스태프를 함께 출력

tcpdump 범위 값

범위 설명
src <IP> 특정 IP를 Source로 갖는 패킷만 캡처
dst <IP> 특정 IP를 Destination으로 갖는 패킷만 캡처
port <PORT> 특정 포트를 사용하는 패킷만 캡처
host <HOST> 특정 호스트로 접속 요청한 패킷
network <IP> / mask <IP> 네트워크와 마스크 정보 설정
tcp/udp tcp or udp 패킷을 지정해서 캡처

 

이 범위 값들은 and, or, not을 통해서 조합해 사용 가능하다. 


tcpdump 사용 예제 

tcpdump -i eth0                # eth0 인터페이스로 전달되는 패킷 확인
tcpdump -w tcpdump.log         # 패킷 정보를 tcpdump.log 파일로 저장
tcpdump -r tcpdump.log         # tcpdump.log 파일에 저장되어 있는 정보 확인
tcpdump -i eth0 -c 10          # eth0 인터페이스의 패킷 10개 확인
tcpdump -i eth0 tcp port 80    # eth0 인터페이스의 80번 포트를 사용하는 tcp 패킷 확인
tcpdump -i eth0 src 172.0.0.1  # 172.0.0.1을 source ip로 갖는 패킷
tcpdump -i eth0 dst 172.0.0.1  # 172.0.0.1을 destination ip로 갖는 패킷

# 여러 조건을 조합해서 사용가능
tcpdump -i eth0 src 192.168.0.1 and tcp port 80 # eth0의 192.168.0.1 소스, 80번 포트의 tcp 패킷

'DevOps > LINUX' 카테고리의 다른 글

alias  (0) 2023.09.11
리눅스 네트워크 bonding 처리 방법  (1) 2023.09.06
nslookup  (0) 2023.08.31
네트워크 상태 확인 명령어(ping, traceroute,netstat)  (1) 2023.08.25
사용자와 그룹 관련 명령어  (0) 2023.07.18

+ Recent posts