2 분 소요

네트워크 장애가 발생했을 때 실제 패킷을 확인하는 것은 문제 해결의 핵심입니다. tcpdump는 리눅스에서 가장 널리 사용되는 커맨드라인 패킷 분석 도구로, 설치 없이 바로 사용할 수 있는 경우가 많습니다.

네트워크 보안 이미지

tcpdump로 네트워크 트래픽을 분석하는 장면

tcpdump 기본 사용법

# 모든 인터페이스에서 캡처
tcpdump -i any

# 특정 인터페이스 지정
tcpdump -i ens3

# 인터페이스 목록 확인
tcpdump -D

# 패킷 수 제한
tcpdump -i ens3 -c 100

# 자세한 출력
tcpdump -v    # verbose
tcpdump -vv   # 더 자세히
tcpdump -vvv  # 최대 상세

필터 표현식

호스트 필터

# 특정 IP와의 트래픽만 캡처
tcpdump host 192.168.1.10

# 출발지 IP 필터
tcpdump src host 192.168.1.10

# 목적지 IP 필터
tcpdump dst host 192.168.1.10

# 특정 네트워크 대역
tcpdump net 192.168.1.0/24

포트 필터

# 특정 포트 트래픽
tcpdump port 80
tcpdump port 443

# 포트 범위
tcpdump portrange 8080-8090

# 출발지/목적지 포트 구분
tcpdump src port 80
tcpdump dst port 443

프로토콜 필터

# TCP만 캡처
tcpdump tcp

# UDP만 캡처
tcpdump udp

# ICMP만 캡처 (핑 트래픽)
tcpdump icmp

# HTTP 트래픽 (포트 기반)
tcpdump tcp port 80 or tcp port 443

복합 필터

# AND, OR, NOT 연산자 사용
tcpdump host 192.168.1.10 and port 80

# 특정 서버와의 HTTP/HTTPS 트래픽
tcpdump "host 192.168.1.10 and (port 80 or port 443)"

# 특정 IP 제외
tcpdump not host 192.168.1.1

# SSH 제외 (자신의 접속 트래픽 제거)
tcpdump not port 22 and host 203.0.113.0

파일로 저장 및 분석

# pcap 파일로 저장 (Wireshark에서 열기 가능)
tcpdump -i ens3 -w /tmp/capture.pcap

# 저장된 파일 읽기
tcpdump -r /tmp/capture.pcap

# 시간 제한으로 캡처 (60초)
timeout 60 tcpdump -i ens3 -w /tmp/capture.pcap

# 파일 크기 순환 (100MB 단위로 새 파일)
tcpdump -i ens3 -w /tmp/capture-%d.pcap -C 100

코드 및 데이터 이미지

패킷 데이터 분석 화면

실무 분석 시나리오

HTTP 요청/응답 내용 확인

# HTTP 헤더 및 내용 출력
tcpdump -i ens3 -A -s 0 port 80

# GET 요청만 필터링
tcpdump -i ens3 -A -s 0 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

SYN Flood 감지

# TCP SYN 패킷만 캡처 (연결 시작 패킷)
tcpdump -i ens3 'tcp[tcpflags] & (tcp-syn) != 0'

# SYN 패킷 초당 카운트
tcpdump -i ens3 'tcp[tcpflags] & (tcp-syn) != 0' 2>/dev/null | \
  pv -l -i 1 > /dev/null

DNS 쿼리 분석

# DNS 쿼리 및 응답 캡처
tcpdump -i ens3 port 53

# DNS 쿼리 내용 보기
tcpdump -i ens3 -vv port 53

특정 서버 접근 로그

# 서버로 들어오는 새 TCP 연결 확인
tcpdump -i ens3 'tcp[tcpflags] & tcp-syn != 0 and dst port 80' -n

# 접속 IP 상위 목록
tcpdump -i ens3 dst port 80 -n 2>/dev/null | \
  awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -rn | head

유용한 옵션 정리

옵션 설명
-i any 모든 인터페이스
-n 이름 해석 없이 IP로 표시
-nn IP와 포트 번호 그대로 표시
-A ASCII로 패킷 내용 출력
-X HEX + ASCII 출력
-s 0 패킷 전체 캡처 (기본: 65535)
-w file pcap 파일로 저장
-r file pcap 파일 읽기
-c N N개 패킷 후 종료
-q 간략한 출력
-e 이더넷 헤더 포함 출력

tcpdump는 네트워크 문제를 진단하는 데 필수적인 도구입니다. Wireshark와 함께 사용하면 GUI 환경에서 더욱 강력한 분석이 가능하며, 원격 서버에서 -w로 저장한 pcap 파일을 로컬 Wireshark로 분석하는 워크플로우를 활용해 보세요.

댓글남기기