tcpdump 명령어
tcpdump는 Linux/Unix 환경에서 네트워크 패킷을 캡처하고 분석하기 위한 명령줄 기반 네트워크 분석 도구입니다.
네트워크 인터페이스를 통해 송수신되는 패킷을 실시간으로 확인하거나 파일로 저장하여 분석할 수 있으며 네트워크 장애 분석, 보안 분석, 트래픽 확인 등에 널리 사용됩니다.
주요 기능
- 네트워크 패킷 실시간 모니터링
- 특정 IP 또는 포트 패킷 필터링
- 패킷을 파일로 저장 후 분석
- 프로토콜 기반 패킷 분석
1. tcpdump 기본 문법
tcpdump [options] [expression]
- options : 캡처 동작을 제어하는 옵션
- expression : 특정 패킷만 캡처하기 위한 필터
자주 사용하는 필터 표현식
- host : 특정 IP 주소 패킷 캡처
- port : 특정 포트 패킷 캡처
- tcp : TCP 패킷만 캡처
- udp : UDP 패킷만 캡처
- src : 출발지 기준 필터
- dst : 목적지 기준 필터
- and/or/ not : 논리 연산
2. 기본 패킷 캡처
tcpdump를 실행하면 기본적으로 시스템의 첫 번째 네트워크 인터페이스에서 패킷을 캡처합니다.
sudo tcpdump
모든 패킷을 실시간으로 터미널에 출력합니다.
3. 네트워크 인터페이스 지정
특정 인터페이스에서 패킷을 캡처하려면 -i 옵션을 사용합니다.
sudo tcpdump -i eth1
또는
sudo tcpdump -i enp0s3
현재 시스템의 인터페이스 목록 확인
tcpdump -D
4. 캡처할 패킷 수 제한
무제한으로 패킷을 캡처하면 디스크 사용량이 증가할 수 있으므로 -c 옵션으로 개수를 제한할 수 있습니다.
sudo tcpdump -c 10
10개의 패킷을 캡처한 후 자동 종료됩니다.
5. 특정 포트 패킷 캡처
특정 포트의 패킷만 캡처합니다.
sudo tcpdump port 80
또는
sudo tcpdump port 443
6. 특정 호스트 패킷 캡처
특정 IP 주소의 패킷만 캡처합니다.
sudo tcpdump host 192.168.0.1
7. 복합 필터 사용
여러 조건을 결합하여 패킷을 필터링할 수 있습니다.
특정 호스트 + 특정 포트 + TCP
sudo tcpdump host 192.168.0.1 and port 80 and tcp
특정 조건 제외
sudo tcpdump not (host 192.168.0.1 and port 80 and tcp)
8. 패킷을 파일로 저장
캡처한 패킷을 파일로 저장하면 Wireshark 등 분석 도구로 확인할 수 있습니다.
sudo tcpdump -w capture.pcap
특정 인터페이스에서 저장
sudo tcpdump -i enp0s3 -w capture.pcap
9. 저장된 패킷 파일 분석
이미 캡처된 .pcap 파일을 분석할 수 있습니다.
tcpdump -r capture.pcap
상세 출력
tcpdump -qns 0 -X -r capture.pcap
옵션 설명
- -q : 간략한 출력
- -n : IP 주소를 DNS 변환하지 않음
- -s 0 : 전체 패킷 캡처
- -X : HEX + ASCII 형태 출력
10 자주 사용하는 tcpdump 옵션
- -i : 네트워크 인터페이스 지정
- -c : 캡처할 패킷 개수 제한
- -n : IP 주소를 DNS로 변환하지 않음
- -nn : IP 및 포트를 모두 숫자로 출력
- -s : 캡처할 패킷 크기 지정
- -vvv : 상세 출력
- -X : HEX + ASCII 출력
- -w : 패킷 파일 저장
- -r : 저장된 패킷 파일 읽기
11. 패킷 캡처 자동 스크립트 예제
패킷을 일정 개수만 캡처하여 파일로 저장하는 스크립트 예제입니다.
vim cap.sh
#!/bin/bash
tcpdump -c 10000 -s 1560 -vvv -x -nn -i enp0s3 port 53 \
-w ${HOSTNAME}-$(date +%Y%m%d%H%M%S).cap
스크립트 설명
- -c 10000 : 10,000 패킷 캡처
- -s 1560 : 패킷 캡처 크기 지정
- -vvv : 매우 상세한 출력
- -x : HEX 형식 출력
- -nn : DNS 변환 비활성화
- -i enp0s3 : 캡처 인터페이스
- port 53 : DNS 트래픽 캡처
실행 권한 부여
chmod +x cap.sh
스크립트 실행
./cap.sh
12. 실무에서 자주 사용하는 tcpdump 예제
HTTP 트래픽 확인
tcpdump -i eth0 port 80
DNS 트래픽 확인
tcpdump -i eth0 port 53
특정 서버 트래픽 확인
tcpdump host 192.168.0.100
특정 목적지 트래픽 확인
tcpdump dst host 192.168.0.100
SSH 접속 확인
tcpdump port 22
'리눅스' 카테고리의 다른 글
| [draft] 리눅스에서 SHA-256 해시를 생성하고 파일의 무결성을 확인하는 방법 (0) | 2026.03.06 |
|---|---|
| [draft] CentOS 7에서 ImageMagick을 설치하고 테스트하는 방법 (0) | 2026.03.06 |
| [draft] adduser 명령어 (0) | 2026.03.06 |
| [draft] grubby 명령어 (0) | 2026.03.06 |
| [draft] Apache HTTP Method 예외 처리 및 제한 설정 (0) | 2026.03.06 |