--- title: tcpdump — 패킷 캡처 분석 date: 2026-10-18 time: 12:00 model: admin category: programs author_type: human summary: 네트워크 패킷을 캡처해 통신 문제를 분석하는 도구. 신중하게 짧게 씁니다. tags: 프로그램, 네트워크 및 방화벽, tcpdump --- **💬 "tcpdump 명령어"** tcpdump는 **패킷을 직접 캡처**해 실제 통신을 봅니다. ping/curl로 안 보이는 문제를 찾습니다. 캡처는 짧게(-c) 하고 파일로 남겨 분석하는 방식이 안전합니다. - **개념**: 인터페이스의 패킷을 캡처·출력합니다. - **필터**: host/port/tcp 같은 표현식으로 좁힙니다. - **-c**: 개수를 제한해 안전하게 캡처합니다. - **파일**: -w로 저장해 이후 분석합니다. ## 자주 쓰는 옵션 | 옵션 | 설명 | | --- | --- | | -i <인터페이스> | 캡처할 인터페이스를 지정합니다 | | -n | 이름 해석 없이 숫자로 표시합니다 | | -c <개수> | 지정 개수만 캡처하고 종료합니다 | | -w <파일> | 캡처를 파일로 저장합니다 | | -A / -X | 내용을 ASCII/HEX로 표시합니다 | ## 필수 명령어 조합 3가지 - `tcpdump -i ens3 -n -c 50 'port 443'` — 443 통신 50개만 캡처 - `tcpdump -i any -n -c 20 'host 10.0.0.9 and port 5432'` — 특정 호스트·포트 통신 확인 - `tcpdump -i ens3 -n -w /tmp/cap.pcap -c 200` — 파일로 저장해 이후 분석 **💬 "이 명령의 결과 차이를 비교하는 예시 알려줘"** 실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다. ### 1단계 · 인터페이스 확인 캡처할 인터페이스를 먼저 확인합니다. ``` ip -br link ``` ### 2단계 · 캡처 필터와 개수를 제한해 캡처합니다. ``` tcpdump -i ens3 -n -c 50 'host 10.0.0.9 and port 5432' ``` ### 3단계 · 해석 SYN/ACK 재전송 여부로 문제를 판단합니다. ``` tcpdump -i ens3 -n -r /tmp/cap.pcap | head -20 ``` ## 실무에서는 이렇게 씁니다 ### 1. DB 연결 실패 분석 **상황** — 앱이 DB에 붙지 못합니다. ``` tcpdump -i any -n -c 30 'host 10.0.0.7 and port 5432' ``` **결과** — SYN만 반복되고 SYN/ACK이 없으면 방화벽/서비스 미기동을 의심합니다. **포인트** — 패킷 수준에서 연결 여부를 확정하면 계층 판단이 빨라집니다. ### 2. 간헐적 재전송 **상황** — 특정 구간에서 응답이 느립니다. ``` tcpdump -i ens3 -n -w /tmp/slow.pcap -c 500 'host 10.0.0.9' ``` **결과** — 캡처 파일에서 재전송/중복 ACK를 확인합니다. **포인트** — 저장해 두면 네트워크 팀과 공유하기 좋습니다. ## 주의할 점 - 캡처에는 민감 정보가 포함될 수 있어 파일 보관에 주의합니다. - 무제한 캡처는 디스크를 채우고 성능에 영향을 줍니다. -c/-w로 제한합니다. - 권한이 필요해 보통 root로 실행합니다. ## 실제 실행 화면 DB 포트의 TCP 3-way handshake와 첫 요청 패킷을 확인한 결과입니다. ![tcpdump 명령어 실행 결과: DB 연결 패킷 캡처](https://games.cursorai.co.kr/assets/tcpdump-demo.png) 실제 운영 중인 서버 --- 원문(HTML): https://games.cursorai.co.kr/programs/linux/network/tcpdump.html