/엔지니어/네트워킹 / 서버/ss · netstat · tcpdump으로 네트워
네트워킹 / 서버중급UbuntuDebianCentOSRHEL네트워크ssnetstat

ss · netstat · tcpdump으로 네트워크 상태 진단

포트 리스닝 확인, 연결 상태 조회, 패킷 캡처까지 리눅스 네트워크 진단의 핵심 도구를 실무 중심으로 정리합니다.

ss — 현대적인 소켓 통계

netstat의 후계자. 더 빠르고 정보가 풍부합니다.

Bash
# 리스닝 중인 포트 (TCP + UDP)
ss -tlunp

# 옵션: -t TCP, -u UDP, -l Listening, -n 숫자로, -p 프로세스 표시

# 특정 포트 확인
ss -tlnp | grep :80

# 모든 연결 상태
ss -ta

# ESTABLISHED 연결만
ss -t state established

# 특정 IP와의 연결
ss dst 192.168.1.100

# 연결 수 집계
ss -t | awk 'NR>1 {print $1}' | sort | uniq -c

netstat (레거시 서버에서)

Bash
# 설치
apt install net-tools   # Ubuntu/Debian
yum install net-tools   # CentOS/RHEL

# 리스닝 포트 확인
netstat -tlnp

# 연결 상태 요약
netstat -s | head -30

# 특정 포트를 점유한 프로세스
netstat -tlnp | grep :3000

tcpdump — 패킷 캡처

Bash
# 특정 인터페이스에서 캡처
tcpdump -i eth0

# 특정 포트 (HTTP)
tcpdump -i eth0 port 80

# 특정 호스트와의 통신
tcpdump -i eth0 host 8.8.8.8

# 파일로 저장 (Wireshark로 열 수 있음)
tcpdump -i eth0 -w /tmp/capture.pcap

# HTTP 요청 내용 보기
tcpdump -i eth0 -A port 80 | grep "Host:"

# SYN 패킷만 (연결 시도 모니터링)
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0'

실무 진단 시나리오

Bash
# 포트 3000이 열려있는지 확인
ss -tlnp | grep 3000

# 외부에서 포트 접근 가능한지
nc -zv your-server.com 80

# TIME_WAIT 연결 수 확인
ss -t state time-wait | wc -l

# 특정 프로세스의 모든 연결
ss -tp | grep nginx

# 연결이 많은 상위 IP
ss -t state established | awk 'NR>1 {print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
#네트워크#ss#netstat#tcpdump#진단
편집 안내 · Editorial Note

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

질문 & 답변 (Q&A)

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