tcpdump — 패킷 캡처 분석
Linux / 네트워크 및 방화벽 / tcpdump.html
💬 "tcpdump 명령어"
tcpdump는 패킷을 직접 캡처해 실제 통신을 봅니다. ping/curl로 안 보이는 문제를 찾습니다.
캡처는 짧게(-c) 하고 파일로 남겨 분석하는 방식이 안전합니다.
- 개념: 인터페이스의 패킷을 캡처·출력합니다.
- 필터: host/port/tcp 같은 표현식으로 좁힙니다.
- -c: 개수를 제한해 안전하게 캡처합니다.
- 파일: -w로 저장해 이후 분석합니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-i <인터페이스> | 캡처할 인터페이스를 지정합니다 |
-n | 이름 해석 없이 숫자로 표시합니다 |
-c <개수> | 지정 개수만 캡처하고 종료합니다 |
-w <파일> | 캡처를 파일로 저장합니다 |
-A / -X | 내용을 ASCII/HEX로 표시합니다 |
필수 명령어 조합 3가지
tcpdump -i ens3 -n -c 50 'port 443'— 443 통신 50개만 캡처tcpdump -i any -n -c 20 'host 10.0.0.9 and port 5432'— 특정 호스트·포트 통신 확인tcpdump -i ens3 -n -w /tmp/cap.pcap -c 200— 파일로 저장해 이후 분석
💬 "이 명령의 결과 차이를 비교하는 예시 알려줘"
실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.
1단계 · 인터페이스 확인
캡처할 인터페이스를 먼저 확인합니다.
ip -br link
2단계 · 캡처
필터와 개수를 제한해 캡처합니다.
tcpdump -i ens3 -n -c 50 'host 10.0.0.9 and port 5432'
3단계 · 해석
SYN/ACK 재전송 여부로 문제를 판단합니다.
tcpdump -i ens3 -n -r /tmp/cap.pcap | head -20
실무에서는 이렇게 씁니다
1. DB 연결 실패 분석
상황 — 앱이 DB에 붙지 못합니다.
tcpdump -i any -n -c 30 'host 10.0.0.7 and port 5432'
결과 — SYN만 반복되고 SYN/ACK이 없으면 방화벽/서비스 미기동을 의심합니다.
포인트 — 패킷 수준에서 연결 여부를 확정하면 계층 판단이 빨라집니다.
2. 간헐적 재전송
상황 — 특정 구간에서 응답이 느립니다.
tcpdump -i ens3 -n -w /tmp/slow.pcap -c 500 'host 10.0.0.9'
결과 — 캡처 파일에서 재전송/중복 ACK를 확인합니다.
포인트 — 저장해 두면 네트워크 팀과 공유하기 좋습니다.
주의할 점
- 캡처에는 민감 정보가 포함될 수 있어 파일 보관에 주의합니다.
- 무제한 캡처는 디스크를 채우고 성능에 영향을 줍니다. -c/-w로 제한합니다.
- 권한이 필요해 보통 root로 실행합니다.
실제 실행 화면
DB 포트의 TCP 3-way handshake와 첫 요청 패킷을 확인한 결과입니다.

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.