← 아티클 목록

tcpdump 사용법 — 패킷 잡아 네트워크 문제 분석하기

2027-01-25#networking#트러블슈팅#tcpdump

"분명 요청을 보냈는데 응답이 없다." 로그와 추측으로 안 풀릴 때는 실제로 선로 위에 패킷이 오갔는지를 봐야 합니다. tcpdump는 그 패킷을 눈으로 보게 해 줍니다. 패킷이 나갔는지, 상대가 응답했는지만 확인해도 "내 문제냐 상대 문제냐"가 갈립니다.

1단계 — 어디서 잡을지 (인터페이스)

먼저 잡을 인터페이스를 정합니다. 모르면 전체를 봅니다.

로컬 터미널
tcpdump -D            # 캡처 가능한 인터페이스 목록
tcpdump -i any        # 모든 인터페이스

2단계 — 노이즈를 줄이는 필터

필터 없이 잡으면 화면이 순식간에 밀립니다. 호스트와 포트로 좁힙니다.

로컬 터미널
tcpdump -i eth0 -nn host 10.0.0.5 and port 443
  • -nn: 이름·포트 해석을 끔(빠르고, DNS 때문에 멈추지 않음)
  • host: 특정 상대만
  • port: 특정 포트만
  • -c 50: 50개만 잡고 종료, -w out.pcap: 파일로 저장해 와이어샤크로 분석

3단계 — 핸드셰이크 읽기

TCP 3-way 핸드셰이크가 끝까지 가는지가 핵심입니다.

OUTPUT
10.0.0.9.51514 > 10.0.0.5.443: Flags [S], seq 12345    # 내 SYN 나감
10.0.0.5.443 > 10.0.0.9.51514: Flags [S.], seq 67890   # 상대 SYN-ACK
10.0.0.9.51514 > 10.0.0.5.443: Flags [.], ack 67891    # 내 ACK

[S]만 반복되고 [S.](SYN-ACK)가 안 보이면, 패킷이 상대에 닿지 못했거나 방화벽이 드롭한 것입니다. [R](RST)가 오면 상대가 그 포트를 거절한 것(서비스 다운 또는 포트 닫힘).

원인별 해석

  1. SYN만 나가고 응답 없음: 경로 중간 드롭 → 방화벽·보안그룹·라우팅 점검
  2. SYN에 RST로 응답: 상대 포트가 안 열림 → 상대 서버에서 서비스·리슨 확인
  3. 패킷 자체가 안 나감: tcpdump에 내 SYN조차 안 보임 → 로컬 라우팅·NAT·앱이 실제로 전송 안 함
  4. 핸드셰이크는 되는데 응답 느림: 재전송(retransmission)·중복 ACK 다수 → 패킷 손실 의심

체크리스트

로컬 터미널
tcpdump -D                                  # 인터페이스 목록
tcpdump -i any -nn host <대상> and port <포트>   # 좁혀서 캡처
tcpdump -i eth0 -nn 'tcp[tcpflags] & tcp-syn != 0'  # SYN만 보기
tcpdump -i eth0 -nn host <대상> -w out.pcap   # 파일로 저장해 분석

tcpdump로 SYN/SYN-ACK를 직접 잡아 보고 "내 문제냐 네트워크 문제냐"를 가려내는 실습은 네트워크 트랙에서 회원가입 없이 무료로 할 수 있습니다.