데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약
Wireshark는 네트워크 인터페이스를 통과하는 패킷을 실시간으로 캡처하고, 저장된 pcap 파일을 분석할 수 있는 오픈소스 패킷 분석 도구입니다. 전 세계 보안 전문가와 네트워크 엔지니어에게 사실상의 표준(de facto standard)으로 자리잡고 있습니다.
이더넷, Wi-Fi, loopback 등 다양한 인터페이스에서 실시간 트래픽을 캡처. BPF 필터로 필요한 패킷만 수집 가능.
TCP/IP, HTTP, DNS, TLS, QUIC 등 3,000개 이상의 프로토콜을 디코딩하여 계층별 상세 정보 제공.
지연, 재전송, 패킷 손실, 비정상 플로우 탐지. 통계 도구(IO 그래프, 대화 목록)로 병목 식별.
Wireshark는 GUI 기반의 강력한 분석 환경을 제공합니다. 아래 표는 주요 대안과의 비교입니다.
| 도구 | 인터페이스 | 필터링 | 프로토콜 디코딩 | 스크립트 가능 | 추천 용도 |
|---|---|---|---|---|---|
| Wireshark | GUI + CLI (tshark) | Display/BPF 필터 | 3,000+ 프로토콜 | Lua, Python (pyshark) | 심층 분석, 포렌식 |
| tcpdump | CLI | BPF 필터 | 기본 (프로토콜 헤더) | Shell 파이프 | 경량 캡처, 서버 환경 |
| tshark | CLI | Display/BPF 필터 | Wireshark와 동일 | Shell, Python | 자동화, 원격 분석 |
| Scapy (Python) | 라이브러리 | Python 코드 | 수동 구현 필요 | Python | 프로토타이핑, 커스텀 도구 |
💡 핵심 포인트 — Wireshark는 GUI의 직관성과 tshark의 CLI 자동화를 모두 제공합니다. AI 엔지니어는 pyshark를 활용하여 대규모 pcap 데이터를 파이프라인에 통합할 수 있습니다.
Wireshark의 내부 동작 흐름을 이해하면 필터와 분석 옵션을 효과적으로 사용할 수 있습니다.
tcp port 80http.request.method == "GET"⚠️ 주의 — Display Filter는 캡처된 전체 패킷에 적용되므로, 대용량 pcap에서는 tshark -Y 또는 -2 -R 옵션을 사용하여 필터링 속도를 높일 수 있습니다.
각 환경에 맞게 설치합니다.
# Ubuntu / Debian
sudo apt update && sudo apt install wireshark -y
# macOS (Homebrew)
brew install --cask wireshark
# Windows (Chocolatey)
choco install wireshark
# 또는 공식 사이트에서 설치 프로그램 다운로드
터미널에서 tshark로 간단한 HTTP 트래픽을 캡처합니다.
# 인터페이스 목록 확인
tshark -D
# 10개의 패킷만 캡처 (인터페이스 eth0)
tshark -i eth0 -c 10
# HTTP GET 요청만 캡처하여 저장
tshark -i eth0 -f "tcp port 80" -w http_sample.pcap -c 50
# 저장된 파일에서 HTTP 요청만 출력
tshark -r http_sample.pcap -Y "http.request"
pyshark 라이브러리를 사용하여 캡처 파일을 분석합니다.
# 설치: pip install pyshark
import pyshark
# pcap 파일 열기
cap = pyshark.FileCapture('http_sample.pcap', display_filter='http')
# 각 패킷에서 HTTP 호스트와 URI 추출
for pkt in cap:
try:
http_layer = pkt.http
print(f"[{pkt.sniff_time}] {pkt.ip.src} -> {pkt.ip.dst} | "
f"{http_layer.request_method} {http_layer.request_uri}")
except AttributeError:
pass
cap.close()
🔧 팁 — pyshark는 tshark 바이너리를 백엔드로 사용합니다. 시스템에 Wireshark/tshark가 설치되어 있어야 동작합니다.
Wireshark 환경설정(Preferences)에서 자주 변경하는 항목들입니다.
| 설정 | 경로 | 설명 | 추천 값 |
|---|---|---|---|
| Column: Custom | Preferences → Columns | 표시 열 추가/제거 | Source, Destination, Protocol, Info, Delta time |
| Coloring Rules | View → Coloring Rules | 패킷 종류별 색상 지정 | TCP RST 빨강, DNS 파랑 등 |
| Capture: Promiscuous | Capture → Options | 무차별 모드 (다른 호스트 패킷) | 체크 (분석 환경) |
| Name Resolution | Preferences → Name Resolution | IP → 호스트명, MAC → 제조사 | MAC resolution 켜기, DNS 켜기 |
| Protocol: TLS | Preferences → Protocols → TLS | (Pre-)Master Secret 로드 | SSLKEYLOGFILE 환경변수 활용 |
| Layout: Panes | Preferences → Layout | 패킷 리스트/상세/바이트 배치 | 3단 레이아웃 (기본) |
⚠️ 보안 주의 — Name Resolution에서 DNS 쿼리를 활성화하면 캡처 중에 DNS 트래픽이 발생할 수 있습니다. 격리된 분석 환경에서는 끄는 것이 좋습니다.
| 문제 | 원인 | 해결책 |
|---|---|---|
| 패킷이 캡처되지 않음 | 권한 부족 (Linux) | sudo usermod -aG wireshark $USER 후 재로그인 |
| 인터페이스 목록이 비어 있음 | Npcap/WinPcap 미설치 (Windows) | Npcap 설치 시 "WinPcap API 호환 모드" 체크 |
| Display Filter가 너무 느림 | 대용량 pcap (수 GB) | tshark -Y 대신 tshark -2 -R "filter" 사용, 또는 pyshark로 청크 처리 |
| TLS 패킷이 암호화되어 보임 | 세션 키 없음 | SSLKEYLOGFILE 환경변수 설정 후 브라우저 재시작 |
| 패킷 손실률 높음 | 버퍼 부족 / 디스크 I/O | 캡처 옵션에서 Buffer size 증가, SSD 사용 |
| 프로토콜이 Unknown으로 표시 | Dissector 누락 / 비표준 포트 | Preferences → Protocols → 해당 프로토콜 포트 지정 |
🚨 주의 — 실제 운영 네트워크에서 캡처할 때는 반드시 사전 승인을 받고, 개인정보 보호 법규를 준수하세요.