패킷 캡쳐 명령어는 자주 쓰지만, 막상 필요한 순간에는 옵션 하나가 잘 떠오르지 않습니다.
DNS만 보고 싶으면 port 53이었나?
pcap 저장할 때 -w만 쓰면 되나, -s 0도 붙여야 하나?
tcpdump 필터와 Wireshark display filter는 뭐가 다르지?
tshark로 pcap에서 특정 필드만 뽑으려면 어떤 옵션이었지?
이런 상황에서 매번 man page를 처음부터 읽기는 번거롭습니다.
그래서 만든 도구가 Packet Capture Command Cookbook입니다.
목표는 단순합니다.
패킷 캡쳐 명령어를 외우기보다, 상황별로 빠르게 찾아 쓰자.
왜 만들었나
네트워크 디버깅에서는 캡쳐 명령어를 자주 씁니다.
하지만 실제 현장에서는 “어떤 명령어를 쓸지”보다 “지금 상황에 맞는 옵션 조합이 무엇인지”가 더 어렵습니다.
예를 들어 단순히 tcpdump를 실행하는 것과 운영 서버에서 안전하게 pcap을 남기는 것은 다릅니다.
sudo tcpdump -i any
이 명령은 빠르게 보기에는 좋지만, 운영 서버에서는 너무 많은 패킷이 화면에 쏟아질 수 있습니다.
반대로 장애 재현 중에는 host, port, protocol, 파일 저장 옵션을 적당히 조합해야 합니다.
sudo tcpdump -i eth0 -nn -s 0 -w capture.pcap 'host 192.0.2.10'
Packet Capture Command Cookbook은 이런 명령어를 “도구별” 또는 “상황별”로 바로 찾는 용도입니다.
페이지에서는 검색어로 DNS, TLS, pcap, retransmission, interface 같은 키워드를 넣어 찾을 수 있고, tcpdump, tshark, dumpcap, udpdump 도구별 필터도 제공합니다.
자주 찾는 캡쳐 시나리오
처음에는 아래 시나리오를 가장 많이 찾게 됩니다.
1. 인터페이스 확인
캡쳐 전에 먼저 어떤 인터페이스가 있는지 봐야 합니다.
sudo tcpdump -D
서버마다 인터페이스 이름이 다릅니다.
eth0
ens5
enp0s3
lo
any
처음에는 any로 넓게 볼 수 있지만, 실제 포트 기준으로 분석해야 하면 특정 인터페이스를 지정하는 편이 좋습니다.
2. DNS 트래픽 확인
도메인 해석 문제가 의심되면 DNS만 따로 보는 것이 편합니다.
sudo tcpdump -i any -nn -vv 'port 53'
-nn을 붙이는 이유는 IP와 port를 이름으로 바꾸지 않기 위해서입니다.
이 옵션이 없으면 tcpdump가 이름 해석을 하려고 하면서 오히려 DNS 트래픽을 더 만들거나, 출력이 느려질 수 있습니다.
3. pcap 파일로 저장
터미널 출력만으로는 분석이 어려울 때가 많습니다.
이럴 때는 pcap으로 저장한 뒤 Wireshark나 tshark로 다시 보는 흐름이 좋습니다.
sudo tcpdump -i eth0 -nn -s 0 -w capture.pcap 'host 192.0.2.10'
여기서 -w는 파일 저장, -s 0은 패킷을 가능한 전체 길이로 캡쳐하겠다는 의미로 보면 됩니다.
장애가 재현되는 짧은 구간만 캡쳐하고, 이후 로컬 PC에서 Wireshark로 여는 방식이 가장 무난합니다.
4. DHCP 흐름 확인
IP 할당 문제가 있으면 DHCP discover, offer, request, ack 흐름을 봐야 합니다.
sudo tcpdump -i any -nn -vv 'udp port 67 or udp port 68'
DHCP는 클라이언트/서버 포트가 67, 68로 나뉘기 때문에 둘 다 포함해서 보는 편이 안전합니다.
임베디드 장비나 테스트 보드 bring-up 중에는 이 명령어가 꽤 자주 필요합니다.
5. pcap에서 재전송만 빠르게 보기
이미 저장한 pcap을 command line에서 훑고 싶다면 tshark가 편합니다.
tshark -r capture.pcapng -Y 'dns or tcp.analysis.retransmission'
여기서 -Y는 Wireshark display filter입니다.
tcpdump의 capture filter와 문법이 다르기 때문에, 이 차이를 알고 쓰는 것이 중요합니다.
tcpdump만으로 부족할 때
패킷 캡쳐를 처음 배울 때는 대부분 tcpdump부터 시작합니다.
그 자체로 아주 좋은 선택입니다.
- 서버 터미널에서 바로 실행 가능
- BPF capture filter 사용 가능
- pcap 저장 가능
- 빠르게 host/port/protocol을 좁히기 좋음
하지만 모든 상황을 tcpdump 하나로 처리하려고 하면 불편할 때가 있습니다.
tshark
tshark는 Wireshark의 command line 버전처럼 쓸 수 있습니다.
pcap 파일을 읽고, Wireshark dissector 기준으로 protocol field를 뽑아볼 때 좋습니다.
tshark -r capture.pcapng -T fields -e frame.time -e ip.src -e ip.dst -e tcp.stream
스크립트나 리포트용으로 특정 필드만 뽑을 때 특히 편합니다.
dumpcap
dumpcap은 Wireshark의 캡쳐 엔진 쪽에 가깝습니다.
GUI를 띄우지 않고 장시간 캡쳐하거나 pcapng로 저장할 때 유용합니다.
sudo dumpcap -i eth0 -s 0 -f 'host 192.0.2.10' -w capture.pcapng
장시간 캡쳐는 GUI보다 이런 전용 캡쳐 도구로 분리하는 편이 더 안정적인 경우가 많습니다.
udpdump
udpdump는 Wireshark extcap 흐름에서 UDP payload를 캡쳐 입력으로 다룰 때 쓰는 도구입니다.
일반적인 서버 패킷 캡쳐에서는 자주 쓰지 않지만, Wireshark와 연동된 특수한 UDP 캡쳐 흐름에서는 알아두면 도움이 됩니다.
udpdump --port 5555 --fifo /tmp/udpdump.pcap
Packet Capture Command Cookbook은 이런 도구들을 한 페이지에 묶어서, “지금은 어떤 도구가 맞는가”를 빠르게 비교할 수 있게 했습니다.
capture filter와 display filter
패킷 캡쳐에서 가장 많이 헷갈리는 개념 중 하나가 filter입니다.
이름은 비슷하지만 시점이 다릅니다.
capture filter
캡쳐 전에 적용
저장될 패킷 자체를 줄임
tcpdump, dumpcap의 BPF filter
display filter
캡쳐 후 분석할 때 적용
이미 저장된 pcap에서 화면에 보이는 패킷만 줄임
Wireshark, tshark -Y filter
예를 들어 tcpdump에서 쓰는 필터는 이런 식입니다.
sudo tcpdump -i any -nn 'host 192.0.2.10 and tcp port 443'
반면 Wireshark/tshark display filter는 이런 식입니다.
ip.addr == 192.0.2.10 && tcp.port == 443
둘 다 “특정 IP와 TCP 443”을 보려는 의도는 비슷하지만 문법은 다릅니다.
운영 서버에서 캡쳐할 때는 capture filter를 너무 넓게 잡으면 파일이 커지고, 너무 좁게 잡으면 필요한 패킷을 놓칠 수 있습니다.
분석 단계에서는 display filter를 걸어도 원본 pcap이 바뀌지 않으므로 부담 없이 좁혔다가 다시 풀 수 있습니다.
pcap 파일을 다룰 때 주의할 점
pcap 파일은 단순한 로그 파일보다 민감할 수 있습니다.
패킷 안에는 다음 정보가 들어갈 수 있습니다.
- 내부 IP 주소
- hostname
- URL path
- DNS query
- HTTP payload
- 인증 토큰
- session cookie
- 장비 식별 정보
HTTPS처럼 payload가 암호화되어도 IP, port, handshake, SNI, 인증서, timing 같은 메타데이터는 남을 수 있습니다.
그래서 운영 환경에서 pcap을 다룰 때는 아래를 조심하는 편이 좋습니다.
- 필요한 host/port/protocol로 좁혀서 캡쳐
- 재현 시간만 짧게 캡쳐
- 파일 크기 제한 또는 rotation 사용
- 공유 전 IP, hostname, token, payload 확인
- 외부 전달 시 보안 정책에 맞게 마스킹
payload 노출을 줄이고 싶다면 snap length를 줄여 header 위주로 캡쳐할 수도 있습니다.
sudo tcpdump -i eth0 -nn -s 96 -w headers-only.pcap
다만 snap length를 줄여도 metadata는 남습니다.
pcap은 항상 민감한 파일로 취급하는 것이 안전합니다.
바로 사용해보기
Packet Capture Command Cookbook은 명령어를 암기하는 도구라기보다, 상황별로 찾기 위한 레퍼런스입니다.
현재 페이지에서는 다음 흐름으로 사용할 수 있습니다.
- 검색창에
DNS,TLS,pcap,DHCP,retransmission같은 키워드를 입력합니다. - 필요한 경우
tcpdump,tshark,dumpcap,udpdump중 도구를 고릅니다. - DNS, TCP, TLS, ICMP, DHCP, Files, Analysis 같은 시나리오 필터를 적용합니다.
- 맞는 명령어를 찾으면
Copy버튼으로 복사합니다. - 실제 환경에 맞게 interface, host, port, file name을 바꿔 실행합니다.
필요한 명령어를 상황별로 빠르게 찾고 싶다면 아래 툴에서 확인할 수 있습니다.
Packet Capture Command Cookbook
한 줄 요약
Packet Capture Command Cookbook은 tcpdump, tshark, dumpcap, udpdump 명령어를 DNS, TLS, ICMP, DHCP, pcap 저장, 분석, 보안 주의사항 같은 시나리오별로 빠르게 찾아 쓰기 위한 브라우저 기반 레퍼런스입니다.