tcpdump — 패킷 캡처 분석

Linux / 네트워크 및 방화벽 / tcpdump.html

네트워크 및 방화벽원문등록 2026-10-18

💬 "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와 첫 요청 패킷을 확인한 결과입니다.

tcpdump 명령어 실행 결과: DB 연결 패킷 캡처

실제 운영 중인 서버

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