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

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

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

목차
  1. ss — 현대적인 소켓 통계
  2. netstat (레거시 서버에서)
  3. tcpdump — 패킷 캡처
  4. 실무 진단 시나리오

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 도구가 초안 작성에 사용될 수 있습니다. 명령어의 실행 여부와 검증 환경은 각 가이드에 기재된 근거를 확인하세요. 적용 전 사용 중인 버전의 공식 문서를 확인하고, 오류는 이메일로 알려주세요. 이메일로 제보

주제 관련 공식 문서(자동 연결 · 문장별 근거 아님)GNU/Linux man 페이지 ↗

질문 & 답변 (Q&A)

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