개요
리눅스 환경에서 네트워크 트러블슈팅과 패킷 분석을 위해 필수적으로 사용되는 tcpdump 명령어의 핵심 사용법을 실습을 통해 익힙니다. 복잡한 man 페이지를 읽는 대신 기본 인터페이스 조회부터 실시간 트래픽 필터링 및 PCAP 파일 저장·분석까지 단계별 실무 예제로 학습합니다.
tcpdump 설치 및 사용 가능한 네트워크 인터페이스 확인
네트워크 패킷 캡처 및 트래픽 분석 실습을 위해 필요한 tcpdump와 curl 패키지를 설치합니다.

tcpdump --version 명령어를 실행하여 설치된 tcpdump 및 패킷 캡처 라이브러리인 libpcap의 버전을 확인합니다.tcpdump는 네트워크 인터페이스를 통과하는 패킷을 실시간으로 캡처하고 프로토콜별 상세 트래픽을 분석하는 강력한 커맨드라인 도구입니다.
⚙️ [주요 옵션]
-i : 패킷을 캡처할 네트워크 인터페이스를 지정합니다.-n : 호스트 주소를 도메인 이름 대신 IP 주소로 변환하지 않고 그대로 표시합니다.-nn : 호스트 IP 주소뿐만 아니라 포트 번호도 서비스 이름 대신 숫자로 표시합니다.-c : 지정한 개수만큼 패킷을 캡처한 후 자동으로 프로그램을 종료합니다.-v : TTL, ID, 프로토콜 헤더 등 패킷 상세 정보를 자세히 출력하며, -vv나 -vvv로 상세 수준을 높일 수 있습니다.-w : 캡처한 원시 패킷 데이터를 Wireshark 등에서 열 수 있는 pcap 파일로 저장합니다.-r : 파일로 저장된 pcap 패킷 캡처 데이터를 읽어 화면에 출력합니다.-A : 패킷의 페이로드 내용을 읽기 쉬운 ASCII 텍스트 형태로 출력합니다.-X : 패킷 헤더와 페이로드를 16진수(Hex)와 ASCII 형태로 동시에 출력합니다.-D : 캡처 가능한 시스템 내 모든 네트워크 인터페이스 목록을 확인합니다.

tcpdump -D 명령어는 시스템에서 패킷을 캡처할 수 있는 모든 네트워크 인터페이스 목록을 번호와 상태 정보와 함께 출력합니다.
결과 목록에서 실제 외부 통신을 담당하는 eth0, 모든 인터페이스를 동시에 감시할 수 있는 가상 장치인 any, 로컬 루프백 인터페이스 lo 등을 확인하여 향후 패킷 캡처 시 -i 옵션의 인자값으로 활용할 수 있습니다.

로컬 루프백 인터페이스 패킷 캡처 기본 실습
로컬 루프백 패킷 캡처 테스트에 필요한 ICMP 트래픽을 생성하기 위해 ping -c 4 127.0.0.1 > /dev/null 2>&1 & 명령어를 백그라운드로 실행합니다.

tcpdump -i lo -c 4 -n 명령어는 로컬 루프백 인터페이스(lo)를 지정하여 도메인 이름 변환 없이 IP 주소 형태(-n)로 4개의 패킷(-c 4)을 캡처합니다.
실행 결과에서 127.0.0.1 상호 간에 송수신된 ICMP echo request 및 reply 패킷 4건이 타임스탬프, 시퀀스 번호, 패킷 길이 정보와 함께 정상적으로 수집된 것을 확인할 수 있습니다.

프로토콜 및 포트 기반 실시간 트래픽 필터링
HTTPS 패킷 캡처 실습을 위한 443번 포트 트래픽을 발생시키기 위해 curl -s https://example.com > /dev/null 2>&1 & 명령어를 백그라운드로 실행합니다.

tcpdump -i any -c 4 -nn 'tcp port 443' 명령어는 모든 네트워크 인터페이스(-i any)에서 도메인과 포트 번호를 숫자로 유지한 채(-nn) 443번 포트의 TCP 트래픽('tcp port 443')만 4개(-c 4) 캡처합니다.
실행 결과에서 외부 웹 서버(172.66.147.243.443)와 로컬 호스트(172.18.0.2) 간에 오고 간 HTTPS 통신 패킷의 TCP 플래그, 시퀀스 및 확인 응답(ACK) 번호, 데이터 길이가 선별적으로 수집된 것을 확인할 수 있습니다.

ICMP 트래픽 필터링 실습에 필요한 네트워크 패킷을 생성하기 위해 ping -c 2 8.8.8.8 > /dev/null 2>&1 & 명령어를 백그라운드로 실행합니다.

tcpdump -i any -c 2 -n 'icmp' 명령어는 모든 네트워크 인터페이스(-i any)를 대상으로 도메인 변환 없이(-n) ICMP 프로토콜 패킷('icmp')만 2개(-c 2) 선별하여 캡처합니다.
실행 결과에서 로컬 시스템(172.18.0.2)이 외부 DNS 서버(8.8.8.8)와 주고받은 ICMP echo request 및 reply 패킷이 식별 번호(id), 시퀀스 번호(seq), 패킷 길이 정보와 함께 정상적으로 수집된 것을 확인할 수 있습니다.

패킷 덤프 파일(PCAP) 저장 및 상세 패킷 내용 분석
패킷 덤프 저장 실습에 필요한 네트워크 트래픽을 생성하기 위해 ping -c 3 127.0.0.1 > /dev/null 2>&1 & 명령어를 백그라운드로 실행합니다.

tcpdump -i lo -c 3 -w /tmp/traffic_sample.pcap 명령어는 로컬 루프백 인터페이스(lo)에서 3개의 패킷(-c 3)을 캡처하여 지정한 파일(/tmp/traffic_sample.pcap)에 원시 pcap 형식으로 저장합니다.
터미널 화면에 패킷 내용을 직접 출력하지 않고 바이너리 파일로 기록하므로 장기 트래픽 보관이나 Wireshark 등 외부 분석 도구와의 연계에 유용합니다.

tcpdump -r /tmp/traffic_sample.pcap -n -X 명령어는 저장된 덤프 파일(/tmp/traffic_sample.pcap)을 읽어와(-r) 도메인 변환 없이(-n) 패킷 헤더와 페이로드를 16진수 및 ASCII 텍스트 형태(-X)로 함께 출력합니다.
실행 결과에서 각 ICMP 패킷의 헤더 정보뿐만 아니라 페이로드 데이터가 16진수 바이트와 문자 형태로 나란히 표시되어 전송된 실제 데이터 내용을 정밀하게 분석할 수 있습니다.

패킷 분석 실습을 마친 후 생성된 임시 캡처 파일을 시스템에서 삭제하기 위해 rm -f /tmp/traffic_sample.pcap 명령어를 실행합니다.

지금까지 우분투 환경에서 tcpdump를 활용한 실전 패킷 캡처 및 네트워크 트래픽 분석 방법을 간단하게 살펴보았습니다.
알려드린 주요 옵션과 필터링 규칙을 잘 활용하셔서 네트워크 문제 해결과 트러블슈팅에 유용하게 적용해 보시기 바랍니다.