/엔지니어/트러블슈팅/네트워크 패킷 손실 진단 — ping · mtr ·
트러블슈팅중급UbuntuDebianCentOSpingmtrtcpdump

네트워크 패킷 손실 진단 — ping · mtr · tcpdump

ping으로 패킷 손실을 확인하고, mtr로 경로별 손실 지점을 찾으며, tcpdump로 실제 패킷을 캡처해 재전송·오류를 분석하는 방법을 설명합니다.

1단계 — ping으로 기본 손실 확인

Bash
# 기본 ping (Ctrl+C로 종료 후 통계 확인)
ping 8.8.8.8

# 100개 패킷 전송 후 통계
ping -c 100 8.8.8.8

# 빠른 ping (0.2초 간격)
ping -i 0.2 -c 200 8.8.8.8

# 결과 해석
# packet loss = 0%: 정상
# packet loss = 1~5%: 경미한 손실
# packet loss > 10%: 심각한 문제

# 큰 패킷으로 MTU 문제 확인
ping -s 1400 -M do 8.8.8.8   # Fragmentation 금지
ping -s 1472 -M do gateway_ip  # 최대 MTU 탐색

2단계 — mtr로 경로별 손실 지점 찾기

Bash
sudo apt install -y mtr-tiny

# 인터랙티브 모드
mtr 8.8.8.8

# 100패킷 후 보고서 출력
mtr --report --report-cycles 100 8.8.8.8

# TCP 모드 (ICMP 차단 환경)
mtr --tcp --port 443 example.com

mtr 결과 해석

CODE
                             Loss%   Snt   Avg  Best  Wrst StDev
1. 192.168.1.1 (게이트웨이)   0.0%   100   1.2   0.8   5.1   0.6
2. 100.64.0.1  (ISP)         0.0%   100  10.5   9.8  25.3   2.1
3. 203.0.113.1 (중간 홉)      5.0%   100  18.3  17.1  89.5  12.4  ← 손실 시작
4. 203.0.113.2               5.0%   100  20.1  19.0  92.3  13.2
5. 8.8.8.8    (목적지)        5.0%   100  22.4  21.0  95.0  13.8
  • 3번 홉부터 손실 발생 → 3번 홉 구간 문제
  • 중간 홉만 높고 목적지가 0% → 해당 라우터가 ICMP를 rate limiting하는 것 (정상)

3단계 — tcpdump로 패킷 분석

Bash
# 인터페이스 목록 확인
sudo tcpdump -D

# 특정 인터페이스, 호스트 필터
sudo tcpdump -i eth0 host 8.8.8.8

# 포트 필터
sudo tcpdump -i eth0 tcp port 443

# 패킷 내용 출력 (-A: ASCII, -X: Hex+ASCII)
sudo tcpdump -i eth0 -A tcp port 80 | head -50

# 파일에 저장 (Wireshark 분석용)
sudo tcpdump -i eth0 -w capture.pcap tcp port 443

# 저장된 파일 읽기
sudo tcpdump -r capture.pcap

# TCP 재전송 패킷 필터
sudo tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'

4단계 — TCP 재전송 통계 확인

Bash
# ss로 소켓 통계
ss -s

# TCP 재전송 카운터
cat /proc/net/snmp | grep Tcp
# RetransSegs 값이 지속적으로 증가하면 재전송 중

# netstat으로 확인
netstat -s | grep -i retransmit

# nstat으로 카운터 추적
nstat | grep Retran

5단계 — 원인별 해결 방법

ISP 구간 손실

Bash
# ISP 측 문제 — 고객센터 연락 전 증거 수집
mtr --report --report-cycles 200 8.8.8.8 > mtr_report.txt
traceroute -n 8.8.8.8

서버 인터페이스 오류

Bash
# 오류 카운터 확인
ip -s link show eth0
# errors, dropped 필드 확인

# 드라이버 오류
dmesg | grep -i "eth0|network|link"

# 인터페이스 재시작
sudo ip link set eth0 down && sleep 1 && sudo ip link set eth0 up

MTU 불일치

Bash
# MTU 확인
ip link show eth0 | grep mtu

# MTU 변경 (VPN 환경에서 자주 필요)
sudo ip link set eth0 mtu 1450

버퍼 튜닝

Bash
# 네트워크 버퍼 크기 증가
sudo sysctl -w net.core.rmem_max=134217728
sudo sysctl -w net.core.wmem_max=134217728
sudo sysctl -w net.ipv4.tcp_rmem='4096 87380 134217728'
sudo sysctl -w net.ipv4.tcp_wmem='4096 65536 134217728'
#ping#mtr#tcpdump#패킷손실#네트워크#트러블슈팅
편집 안내 · Editorial Note

이 가이드는 AI 도구를 활용해 초안을 구성하고 사람이 명령어·문맥을 검토해 발행했습니다. 운영체제와 도구 버전에 따라 결과가 달라질 수 있으므로 적용 전 공식 문서를 함께 확인하세요. 오류를 발견하시면 이메일로 제보해 주세요.

질문 & 답변 (Q&A)

이 가이드에 대해 궁금한 점을 질문해보세요. 확인 후 답변드립니다.