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로 분석하는 워크플로우를 활용해 보세요.
댓글남기기