기본 개념 및 소개
tcpdump는 유닉스 계열 운영체제, 특히 Linux 플랫폼에서 실행되는 강력한 네트워크 패킷 캡처 유틸리티입니다. 이 도구를 능숙하게 사용하면 네트워크 통신 상태를 실시간으로 모니터링하거나, 장애 발생 시 트러블슈팅을 수행할 수 있습니다. 단, 정확한 분석을 위해서는 TCP/IP 프로토콜 스택에 대한 기본 지식이 필요하며, 대부분의 고급 기능은 루트 관리자 권한(root privilege)으로 실행되어야 합니다.
실무에서는 방대한 양의 옵션 중 실제 문제 해결에 필요한 핵심 기능만 선별하여 사용하는 것이 효율적입니다. 따라서 여기서는 일상적인 네트워크 관리 및 디버깅 작업에서 빈번하게 활용되는 사용법에 중점을 두어 설명합니다.
주요 명령어 옵션
복잡한 tcpdump 명령어 중에서 자주 사용되는 플래그와 그 용도는 다음과 같습니다.
- -s length: 캡처할 패킷의 최대 길이를 지정합니다. 기본값은 96 바이트이며,
0을 입력하면 패킷 전체를 저장합니다. - -i interface: 모니터링할 네트워크 인터페이스를 선택합니다.
any를 사용하여 모든 장치를 들을 수도 있습니다. - -n 또는 -nn: DNS 역 조회 없이 IP 주소를 텍스트로 출력합니다. 네트워크 성능 저하를 방지하는 데 유용합니다.
- -X: 패킷 내용을 ASCII 와 헥사데시말(16 진수) 형식으로 동시에 표시합니다.
- -A: 패킷 데이터를 ASCII 문자열 형태로만 출력합니다 (HTTP 요청 등 텍스트 기반 프로토콜 확인 시 유용).
- -c count: 지정된 수만큼 패킷을 캡처한 후 프로세스를 자동으로 종료합니다.
- -w filename: 캡처된 데이터를 콘솔에 출력하지 않고 파일로 저장합니다 (PCAP 포맷).
- -S: TCP 시퀀스 번호를 절대값으로 보여줍니다.
- -vvv: 매우 상세한 정보까지 포함하여 출력 verbosity 를 높입니다.
필터링 전략
네트워크 상을 오가는 데이터 양은 매우 방대하므로, 목적에 맞는 패킷만을 선별하는 필터 기능을 익히는 것이 중요합니다. tcpdump 는 보텍스 필터 표현식을 지원합니다.
필터 조건은 크게 주소 타입, 방향, 프로토콜 세 가지 축으로 분류됩니다.
# 호스트, 네트워크, 포트 지정
tcpdump host 192.168.1.50
tcpdump net 10.0.0.0/24
tcpdump port 443
# 프로토콜 특정 (tcp, udp, icmp, arp 등)
tcpdump -i eth0 tcp
tcpdump -i eth0 icmp
# 통신 방향 지정 (src: 출발지, dst: 도착지)
tcpdump src host 192.168.1.5
tcpdump dst net 10.10.10.0/24
조건 결합 연산자
정밀한 분석을 위해 여러 조건을 조합하여 사용할 수 있습니다. 논리 연산자를 활용하여 원하는 패킷 패턴을 정의할 수 있습니다.
- and (&&): 두 조건 모두 만족해야 함
- or (||): 두 조건 중 하나라도 만족함
- not (!): 해당 조건을 제외함
예를 들어, 특정 호스트와의 TCP 통신만이 아닌 UDP 통신도 포함하고자 할 경우, or 연산을 적용하여 유연하게 규칙을 잡을 수 있습니다.
실무 적용 예시
아래는 일반적인 네트워크 상황별 설정 예시입니다. 실제 환경의 인터페이스 이름 (eth0, ens33 등) 과 IP 주소를 상황에 맞게 변경하여 적용하세요.
# 특정 인터페이스 (ens33) 의 모든 트래픽 모니터링
tcpdump -i ens33
# 특정 IP(192.168.10.20) 에게서 입출력되는 모든 패킷 확인
tcpdump host 192.168.10.20
# 서브넷 범위 (172.16.0.0/16) 내에서의 통신 포착
tcpdump net 172.16.0.0/16
# 출처가 192.168.1.5 인 패킷만 필터링
tcpdump src host 192.168.1.5
# 목표지점이 10.0.0.5 인 트래픽 관찰
tcpdump dst host 10.0.0.5
# 포트 22(SSH) 에서 발생하는 TCP 통신 제한
tcpdump tcp port 22 and host 192.168.1.5
# NTP 서비스 (포트 123) 의 UDP 트래픽 확인
tcpdump udp port 123
# 복잡한 조합: 원본 호스트가 A 이고 목표망이 B 인 경우
tcpdump src host 10.1.1.5 and dst net 10.1.2.0/24
파일 저장 및 시각화
실시간 화면 출력보다는 데이터를 저장하여 후기분석을 하는 경우가 많습니다. 이를 위해 -w 옵션과 함께 -C(파일 크기 제한), -G(시간 간격 분할) 을 사용합니다.
# 매 60 초마다 새로운 파일로 저장
tcpdump -i eth0 -s0 -G 60 -w /var/log/packet/%H%M%S.pcap
# 파일 크기가 5MB 가 넘으면 새 파일 생성
tcpdump -i eth0 -s0 -C 5 -w capture_traffic.pcap
생성된 PCAP 파일은 전문 패킷 분석 툴인 Wireshark 로 로드하면 그래픽 인터페이스를 통해 더 직관적인 분석이 가능합니다. 대용량 로그 처리나 심층 프로토콜 분석이 필요할 때 이러한 워크플로우를 권장합니다.