네트워크 공부 & 실습/네트워크 실습

[Network] TcpDump 명령어로 패킷 캡처 하기

강_토발즈 2025. 7. 24. 23:54

 

https://aboutnetworks.net/linux-networking-part-5/

 

 

인터넷 연결이나, 다른 장비들과 통신이 제대로 되지 않을 때, 네트워크 인터페이스를 일단 조회하게 된다. 하지만 네트워크 인터페이스를 조회해 보면 그냥 떡 하니 IP 정보와 인터페이스가 UP 되어 있다는 정보만 나오지, 뭔가 데이터가 오고 갔다는 흔적은 전혀 보이지 않는다. 이럴 때 사용하는게, 패킷 캡쳐이고 TcpDump 명령어를 통해 간단하게 특정 네트워크 인터페이스에 패킷이 들락날락 거리는 것을 확인 해볼 수 있다.

 

 

1. tcpdump란?

tcpdump는 리눅스/유닉스 계열 시스템에서 사용할 수 있는 패킷 캡처 도구다. 네트워크 인터페이스를 통해 오가는 트래픽을 실시간으로 볼 수 있고, .pcap 파일로 저장해서 Wireshark 같은 툴로 정밀 분석도 가능하다.

 

2. 패킷 캡처 명령어

가장 기본적인 캡처 명령어는 아래와 같다:

sudo tcpdump -i eth0 -w capture.pcap
 

 

sudo root 권한 필요 (패킷 캡처는 권한이 필요함)
tcpdump 패킷 캡처 도구 실행
-i eth0 eth0 인터페이스에서 캡처 수행. 
-w capture.pcap 실시간 출력 대신 capture.pcap 파일로 저장
 

이 명령을 실행하면, eth0 인터페이스에서 오가는 모든 패킷을 capture.pcap이라는 이름의 파일로 저장하게 된다. 이 상태에서는 터미널에 아무 출력도 보이지 않고 조용히 저장만 된다. 캡처를 멈추고 싶으면 Ctrl + C를 누르면 된다.

 

ip a 명령어를 통해 문제가 있는, 혹은 패킷의 흐름을 알고 싶은 인터페이스명을 조회한 후, 위의 명령어에 eth0 대신에 인터페이스 이름을 넣고 실행하면 된다. 그 다음 해당 인터페이스로 ping test 와 같은 인위적인 네트워크 흐름을 만들어주면 데이터가 쌓이게 된다.

 

TcpDump 가 실행중이며, wlan0 인터페이스로 오가는 패킷을 캡쳐중이다.

 

 

 3. 캡처된 파일 확인하기

패킷을 저장했으면, 그걸 확인하거나 분석해야 한다. 다음은 .pcap 파일을 읽는 명령어이다.

tcpdump -r capture.pcap
 
 

이 명령을 사용하면 저장된 패킷 파일을 터미널에서 텍스트 형태로 확인할 수 있다.

 

4. 실시간으로 화면에서 보고 싶을 때

.pcap 파일로 저장하는 대신, 실시간으로 터미널에서 패킷을 보고 싶다면 아래처럼 입력하면 된다.

sudo tcpdump -i eth0 -n
 

옵션 -n을 붙이면 IP 주소나 포트를 DNS 이름으로 변환하지 않고 있는 그대로 숫자로 보여준다. 네트워크 문제를 분석할 때는 이게 더 빠르고 직관적이다.

 

5. 특정 조건을 걸고 캡처하기

불필요한 모든 패킷을 다 캡처하면 분석이 어려워지므로, 아래와 같이 필터를 걸 수 있다.

 

5-1. 특정 IP만 캡처

sudo tcpdump -i eth0 host 192.168.0.10

 

5-2. 특정 포트만 캡처

sudo tcpdump -i eth0 port 161

 

 

5-3. SNMP 트래픽만 캡처

sudo tcpdump -i eth0 udp port 161
 
 

필터는 조합도 가능하다. 예를 들어 특정 호스트의 SNMP 트래픽만 보고 싶다면:

sudo tcpdump -i eth0 udp port 161 and host 192.168.0.10

 

6. 분석은 Wireshark로!

capture.pcap 파일을 Wireshark에 불러오면 GUI 환경에서 필터를 걸고 프로토콜별로 분석할 수 있어서 훨씬 직관적이다.
tcpdump로 캡처 → Wireshark로 분석하는 흐름은 실무에서도 자주 쓰인다. 오늘은 늦었으니 다음엔 WireShark 로 패킷 캡쳐 파일을 분석해보자