리눅스 Netstat 명령어 완전 정복: 기초부터 고급 네트워크 모니터링까지
소개
netstat
(network statistics) 명령어는 리눅스 시스템 관리자 도구 상자에서 가장 필수적인 네트워킹 도구 중 하나입니다. 이 다재다능한 명령줄 유틸리티는 네트워크 연결, 라우팅 테이블, 인터페이스 통계 및 기타 중요한 네트워크 관련 정보를 포괄적으로 보여줍니다.
netstat란 무엇인가?
netstat
는 다음과 같은 다양한 네트워크 관련 정보를 표시하는 명령줄 네트워크 유틸리티입니다:
- 네트워크 연결 (들어오는 연결과 나가는 연결 모두)
- 라우팅 테이블
- 네트워크 인터페이스 통계
- 마스커레이드 연결
- 멀티캐스트 멤버십
- 프로토콜 통계
왜 중요한가?
시스템 관리자와 네트워크 엔지니어는 다음과 같은 중요한 작업을 위해 netstat
에 의존합니다:
- 네트워크 문제 해결 - 연결 문제와 네트워크 병목 현상을 빠르게 식별
- 보안 모니터링 - 무단 네트워크 연결 및 의심스러운 활동 탐지
- 성능 분석 - 네트워크 트래픽 패턴과 인터페이스 통계 모니터링
- 시스템 감사 - 활성 서비스 및 열린 포트 검토
간략한 역사
netstat
명령어는 유닉스 시스템 초기부터 TCP/IP 네트워킹 도구 모음의 일부였습니다. BSD 유닉스에서 시작되었지만, 리눅스를 포함한 다양한 유닉스 계열 운영체제에서 표준 도구로 발전했습니다. ss
와 같은 최신 도구에 비해 "사용 중단(deprecated)"으로 간주되기도 하지만, 다음과 같은 이유로 여전히 널리 사용됩니다:
- 시스템 관리자들 사이에서 익숙함
- 다양한 유닉스 계열 시스템에서 폭넓게 사용 가능
- 풍부한 기능과 상세한 출력 옵션
- 광범위한 문서와 커뮤니티 지원
기본 문법 및 사용법
명령어 형식
netstat 명령어의 기본 문법은 다음과 같습니다:
netstat [옵션]
필요에 따라 다양한 옵션과 함께 사용하여 출력을 맞춤 설정할 수 있습니다. 옵션 없이 실행하면 열린 소켓 목록을 표시합니다.
자주 사용하는 옵션 및 플래그
옵션 | 설명 |
---|---|
-a | 모든 수신 대기 포트와 활성 연결 표시 |
-t | TCP 연결 표시 |
-u | UDP 연결 표시 |
-n | 호스트명과 포트 대신 숫자 주소 표시 |
-l | 수신 대기 중인 소켓만 표시 |
-p | PID와 프로그램 이름 표시 |
-r | 라우팅 테이블 표시 |
-i | 네트워크 인터페이스 통계 표시 |
-s | 프로토콜 통계 표시 |
기본 예제
- 모든 활성 연결 보기
netstat -a
- 모든 TCP 연결 표시
netstat -at
- 프로그램 정보와 함께 수신 대기 포트 보기
sudo netstat -tulnp
이 조합은 다음을 보여줍니다:
-t
: TCP 연결-u
: UDP 연결-l
: 수신 대기 포트만-n
: 숫자 주소-p
: 프로그램 정보
- 라우팅 테이블 확인
netstat -r
- 인터페이스 통계 보기
netstat -i
출력 이해하기
일반적인 netstat 출력에는 다음과 같은 열이 포함됩니다:
- Proto: 프로토콜 (TCP, UDP)
- Recv-Q: 수신 대기 중인 데이터
- Send-Q: 전송 대기 중인 데이터
- Local Address: 로컬 연결 지점
- Foreign Address: 원격 연결 지점
- State: 연결 상태 (LISTEN, ESTABLISHED 등)
netstat -tan
실행 시 예시 출력:
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 192.168.1.5:22 192.168.1.100:52614 ESTABLISHED
주요 기능 및 옵션
출력 옵션
모든 연결 나열하기
필요에 따라 다양한 방식으로 네트워크 연결을 나열할 수 있습니다:
- 모든 프로토콜을 숫자 주소로 표시
netstat -an
- 확장 정보 표시
netstat -ae
사용자 및 inode 같은 추가 정보 포함
- 타이머 정보 표시
netstat -o
문제 해결에 유용한 타이밍 정보 추가
프로토콜별 표시
- TCP만
# 수신 대기 포트를 포함한 모든 TCP 연결 표시
netstat -at
# 수신 대기 중인 TCP 포트만 표시
netstat -lt
- UDP만
# 모든 UDP 연결 표시
netstat -au
# 수신 대기 중인 UDP 포트만 표시
netstat -lu
- 유닉스 도메인 소켓
# 유닉스 도메인 소켓 표시
netstat -x
출력 형식 옵션
숫자 표시
# 이름 해석 없이 숫자 주소만 표시
netstat -n
# 다른 옵션과 결합
netstat -ant # 숫자 주소로 TCP 연결 표시
숫자 표시의 장점:
- 실행 속도 향상
- DNS 조회 없음
- DNS 문제 발생 시 더 신뢰성 있음
확장 정보 보기
# 프로세스 정보 표시 (root 권한 필요)
sudo netstat -p
# 사용자 및 프로세스 정보 표시
sudo netstat -ep
# 확장된 네트워크 인터페이스 통계 표시
netstat -ie
연속 출력
# 2초마다 갱신
netstat -c
# 다른 옵션과 결합하여 연속 모니터링
netstat -ct # TCP 연속 모니터링
통계 표시
- 프로토콜 통계
# 모든 프로토콜 요약 통계 표시
netstat -s
# TCP 통계만 표시
netstat -st
# UDP 통계만 표시
netstat -su
- 인터페이스 통계
# 인터페이스 통계 표시
netstat -i
# 확장된 인터페이스 정보 표시
netstat -ie
인터페이스 통계 예시 출력:
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 158426 0 0 0 88573 0 0 0 BMRU
lo 65536 24846 0 0 0 24846 0 0 0 LRU
여기서:
- RX: 수신 통계
- TX: 송신 통계
- OK: 성공한 패킷 수
- ERR: 오류 수
- DRP: 드롭된 패킷 수
- OVR: 오버런 이벤트 수
일반적인 사용 사례
네트워크 문제 해결
열린 포트 확인
- 시스템의 모든 열린 포트 찾기
sudo netstat -tulpn | grep LISTEN
이 명령어는 다음을 식별하는 데 도움을 줍니다:
- 어떤 서비스가 실행 중인지
- 어떤 포트를 사용하는지
- 해당 포트를 소유한 프로세스
- 특정 포트 사용 여부 확인
sudo netstat -tulpn | grep ":80" # 웹 서버 확인
sudo netstat -tulpn | grep ":3306" # MySQL 확인
활성 연결 식별
- 현재 연결 모니터링
# 모든 확립된 연결 표시
netstat -nat | grep ESTABLISHED
# IP별 연결 수 집계
netstat -nat | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
- 연결 상태 추적
# 연결 상태 분포 보기
netstat -ant | awk '{print $6}' | sort | uniq -c
네트워크 트래픽 모니터링
- 인터페이스 트래픽 분석
# 실시간 인터페이스 통계 감시
netstat -i
watch -n 1 "netstat -i"
- 프로토콜별 모니터링
# TCP 트래픽 통계 모니터링
netstat -st
# UDP 트래픽 통계 모니터링
netstat -su
보안 분석
의심스러운 연결 찾기
- 비정상 포트 탐지
# 표준이 아닌 모든 수신 대기 포트 나열
sudo netstat -tulpn | grep -v ":22\|:80\|:443"
- 의심스러운 연결 패턴 확인
# 예상치 못한 IP에서의 연결 탐색
netstat -ant | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn
포트 스캐닝 탐지
# 다수의 연결 시도 탐색
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
시스템 감사
- 서비스 확인
# 어떤 프로세스가 어떤 포트를 수신 대기 중인지 확인
sudo netstat -tulpn | grep LISTEN | sort -k 4
- 연결 로그 기록
# 간단한 연결 로그 생성
while true; do
date >> connection_log.txt
netstat -ant >> connection_log.txt
sleep 60
done
- 자원 사용 모니터링
# 서비스별 연결 수 모니터링
netstat -ant | grep ESTABLISHED | awk '{print $4}' | cut -d: -f2 | sort | uniq -c
일반적인 문제 해결 시나리오
- 웹 서버 문제
# 웹 서버 연결 확인
sudo netstat -ant | grep ":80\|:443" | awk '{print $6}' | sort | uniq -c
- 데이터베이스 연결 문제
# 데이터베이스 연결 모니터링 (MySQL 예시)
sudo netstat -ant | grep :3306 | awk '{print $6}' | sort | uniq -c
- 메일 서버 분석
# 메일 서버 연결 확인
sudo netstat -ant | grep ":25\|:465\|:587" | awk '{print $6}' | sort | uniq -c
고급 사용법
다른 명령어와 결합하기
grep 및 awk와 함께 사용
- 복잡한 필터링 및 분석
# 상태 및 포트별 연결 수 집계
netstat -ant | awk '{print $6, $4}' | sort | uniq -c | sort -rn
# 특정 서비스 연결 시간별 모니터링
watch -n 1 'netstat -ant | grep ":80" | wc -l'
- 고급 연결 분석
# 연결 요약 생성
netstat -ant | \
awk '{ip[$5]++} END {for (i in ip) print ip[i],i}' | \
sort -nr | head -n 10
다른 도구로 파이핑
# tee로 로그 저장
netstat -ant | tee network_status.log
# xargs로 프로세스 관리
netstat -tulpn | grep LISTEN | awk '{print $7}' | cut -d/ -f1 | xargs ps -f
스크립트 및 자동화
기본 모니터링 스크립트
#!/bin/bash
LOG_FILE="/var/log/network_monitor.log"
monitor_connections() {
echo "=== Network Status Report ===" >> $LOG_FILE
date >> $LOG_FILE
echo "Active Connections:" >> $LOG_FILE
netstat -ant | grep ESTABLISHED | wc -l >> $LOG_FILE
echo "Listening Ports:" >> $LOG_FILE
netstat -tulpn | grep LISTEN >> $LOG_FILE
echo "=========================" >> $LOG_FILE
}
# 5분마다 실행
while true; do
monitor_connections
sleep 300
done
고급 분석 스크립트
#!/bin/bash
analyze_network() {
echo "=== Network Analysis ==="
echo -e "\nTop 10 IP Connections:"
netstat -ant | grep ESTABLISHED | \
awk '{print $5}' | cut -d: -f1 | \
sort | uniq -c | sort -rn | head -n 10
echo -e "\nConnection States:"
netstat -ant | awk '{print $6}' | \
sort | uniq -c | sort -rn
echo -e "\nPort Usage:"
netstat -ant | awk '{print $4}' | \
cut -d: -f2 | sort | uniq -c | sort -rn | head -n 10
}
# 타임스탬프가 포함된 파일로 저장
analyze_network | tee -a "network_analysis_$(date +%Y%m%d_%H%M%S).log"
성능 모니터링
자원 사용 추적
- CPU 및 메모리 영향
# netstat 자체 자원 사용 모니터링
while true; do
ps aux | grep netstat | grep -v grep
sleep 1
done
- 네트워크 인터페이스 성능
#!/bin/bash
# 인터페이스 처리량 모니터링
INTERVAL=1
INTERFACE="eth0"
while true; do
R1=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
T1=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
sleep $INTERVAL
R2=$(cat /sys/class/net/$INTERFACE/statistics/rx_bytes)
T2=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
RBPS=$(( ($R2 - $R1) / $INTERVAL ))
TBPS=$(( ($T2 - $T1) / $INTERVAL ))
echo "Interface $INTERFACE:"
echo "RX: $(($RBPS/1024)) KB/s"
echo "TX: $(($TBPS/1024)) KB/s"
echo "------------------------"
done
장기 모니터링 솔루션
#!/bin/bash
# 시간별 네트워크 통계 보고서 생성
LOGDIR="/var/log/netstat_reports"
mkdir -p $LOGDIR
generate_report() {
TIMESTAMP=$(date +%Y%m%d_%H)
REPORT="$LOGDIR/netstat_report_$TIMESTAMP.log"
echo "Network Report - $(date)" > $REPORT
echo "=========================" >> $REPORT
echo "Connection Summary:" >> $REPORT
netstat -s >> $REPORT
echo "Interface Statistics:" >> $REPORT
netstat -i >> $REPORT
echo "Current Connections:" >> $REPORT
netstat -ant >> $REPORT
}
# 보고서 생성 실행
generate_report
통합 팁
- 시스템 모니터링과 결합
# 시스템 모니터링 스크립트에 추가
if [ $(netstat -ant | grep ESTABLISHED | wc -l) -gt 100 ]; then
echo "High connection count detected" | mail -s "Network Alert" [email protected]
fi
- 맞춤 보고 함수
network_summary() {
local port="$1"
echo "Connections on port $port:"
netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
}
# 사용법: network_summary 80
netstat 대안
ss 명령어
ss
(Socket Statistics)는 리눅스 시스템에서 netstat의 현대적 대체 도구입니다. 일반적으로 netstat보다 빠르고 기능이 풍부합니다.
ss의 주요 장점
- 많은 연결이 있는 시스템에서 더 빠른 실행 속도
- 더 상세한 소켓 정보 제공
- 최신 프로토콜 지원 강화
- 시스템 자원 사용량 감소
netstat과 비교
# netstat 명령어와 ss 동등 명령어 비교
# 모든 연결 나열
netstat -a
ss
# 수신 대기 중인 TCP 포트 표시
netstat -tln
ss -tln
# 프로세스 정보 표시
netstat -p
ss -p
# 통계 표시
netstat -s
ss -s
ss 사용 예시
# 상세 소켓 정보 표시
ss -i
# 타이머 정보 표시
ss -o
# 메모리 사용량 표시
ss -m
# 상태별 필터링
ss state established
# 포트별 필터링
ss sport = :80
현대적 대안
lsof (열린 파일 목록)
# 네트워크 연결 표시
lsof -i
# 수신 대기 포트 표시
lsof -i -P -n | grep LISTEN
# 확립된 연결 표시
lsof -i | grep ESTABLISHED
nmap
# 열린 포트 스캔
nmap localhost
# 상세 포트 스캔
nmap -sV localhost
iptraf-ng
- 실시간 IP 트래픽 모니터
- 상세 프로토콜 통계
- 인터페이스 통계
- LAN 스테이션 모니터
언제 무엇을 사용할까
netstat 사용 시기:
- 구형 시스템 작업 시
- 크로스 플랫폼 호환성 필요 시
- 기존 문서 따를 때
- 간단한 네트워크 진단 시
ss 사용 시기:
- 최신 리눅스 시스템 작업 시
- 빠른 실행 필요 시
- 많은 연결 처리 시
- 상세 소켓 정보 필요 시
lsof 사용 시기:
- 파일 디스크립터 정보 확인 필요 시
- 네트워크 연결과 프로세스 연관 분석 시
- 애플리케이션 문제 해결 시
nmap 사용 시기:
- 보안 감사 수행 시
- 상세 포트 스캔 필요 시
- 네트워크 서비스 분석 시
마이그레이션 가이드
netstat에서 ss로 전환
netstat 명령어 | ss 동등 명령어 | 설명 |
---|---|---|
netstat -t | ss -t | TCP 연결 표시 |
netstat -u | ss -u | UDP 연결 표시 |
netstat -l | ss -l | 수신 대기 소켓 표시 |
netstat -p | ss -p | 프로세스 정보 표시 |
netstat -n | ss -n | 이름 해석 안 함 |
netstat -a | ss | 모든 소켓 표시 |
netstat -r | ip route | 라우팅 테이블 표시 |
스크립트 마이그레이션 예시
# 기존 netstat 스크립트
#!/bin/bash
netstat -tulpn | grep LISTEN > listening_ports.log
# 새로운 ss 동등 스크립트
#!/bin/bash
ss -tulpn | grep LISTEN > listening_ports.log
도구 선택 팁
- 성능 고려사항
- 대규모 시스템:
ss
사용 - 기본 점검: 어느 도구나 무방
- 상세 분석: 여러 도구 조합 사용
- 호환성 문제
# ss 사용 가능 여부 확인
if command -v ss >/dev/null 2>&1; then
ss -tulpn
else
netstat -tulpn
fi
- 기능 요구사항
- 기본 모니터링: netstat/ss
- 보안 분석: nmap
- 프로세스 연관 분석: lsof
- 실시간 모니터링: iptraf-ng
모범 사례 및 팁
성능 고려사항
명령어 사용 최적화
- 가능하면 숫자 출력 사용
# 느림 (DNS 해석 포함)
netstat -ta
# 빠름 (DNS 해석 없음)
netstat -tan
- 출력 크기 제한
# 모든 연결 표시 대신
netstat -a
# 특정 정보 필터링
netstat -an | grep ':80'
- 연속 폴링 피하기
# 바쁜 시스템에서는 권장하지 않음
netstat -c
# 제어된 간격으로 실행하는 것이 더 좋음
while true; do
netstat -an | grep ESTABLISHED
sleep 5
done
흔한 문제점
자원 사용 문제
- 문제: 이름 해석 중 과도한 CPU 사용
# 문제 있는 명령어
watch -n 1 'netstat -ta'
# 더 나은 대안
watch -n 1 'netstat -tan'
권한 문제
- 문제: 프로세스 정보 누락
# 불완전한 정보 표시
netstat -p
# 올바른 사용법
sudo netstat -p
출력 해석
- 문제: 연결 상태 오해
# TIME_WAIT 상태만 필터링
netstat -ant | grep TIME_WAIT
# 문맥과 함께 더 나은 분석
netstat -ant | awk '{print $6}' | sort | uniq -c
일상 사용 팁
유용한 별칭 만들기
# ~/.bashrc에 추가
alias ns='netstat -tulpn'
alias nsc='netstat -ant | grep ESTABLISHED'
alias nsl='sudo netstat -tulpn | grep LISTEN'
빠른 보안 점검
# 비정상 수신 대기 포트 확인 함수
check_ports() {
echo "알려진 포트:"
sudo netstat -tulpn | grep -E ':22|:80|:443'
echo -e "\n알려지지 않은 포트:"
sudo netstat -tulpn | grep -vE ':22|:80|:443'
}
모니터링 템플릿
# 연결 모니터링 템플릿
monitor_connections() {
local port=$1
local threshold=$2
count=$(netstat -an | grep ":$port" | grep ESTABLISHED | wc -l)
if [ $count -gt $threshold ]; then
echo "경고: 포트 $port 에 $count 개의 연결이 임계값 $threshold 를 초과했습니다."
fi
}
# 사용법: monitor_connections 80 100
문서화 및 로깅
유용한 로그 생성
#!/bin/bash
# 네트워크 상태 로거
log_network_status() {
local logfile="/var/log/network_status.log"
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
{
echo "=== $timestamp 네트워크 상태 ==="
echo "수신 대기 포트:"
netstat -tulpn | grep LISTEN
echo "현재 연결 상태:"
netstat -ant | awk '{print $6}' | sort | uniq -c
echo "=============================="
} >> "$logfile"
}
표준 운영 절차
# 정기 점검 템플릿
daily_network_check() {
echo "1. 수신 대기 포트 확인..."
sudo netstat -tulpn | grep LISTEN
echo "2. 확립된 연결 수 확인..."
netstat -ant | grep ESTABLISHED | wc -l
echo "3. 연결 상태 확인..."
netstat -ant | awk '{print $6}' | sort | uniq -c
echo "4. 인터페이스 통계 확인..."
netstat -i
}
문제 해결 가이드라인
- 연결 문제
connection_troubleshoot() {
local port=$1
echo "=== 포트 $port 연결 문제 해결 ==="
echo "1. 포트 수신 대기 여부 확인:"
sudo netstat -tulpn | grep ":$port"
echo "2. 활성 연결 확인:"
netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
echo "3. 연결 상태 확인:"
netstat -ant | grep ":$port" | awk '{print $6}' | sort | uniq -c
}
- 시스템 자원 모니터링
resource_check() {
echo "=== 시스템 자원 점검 ==="
echo "1. 총 연결 수:"
netstat -ant | wc -l
echo "2. IP별 연결 수:"
netstat -ant | grep ESTABLISHED | \
awk '{print $5}' | cut -d: -f1 | \
sort | uniq -c | sort -nr | head -5
echo "3. 네트워크 프로세스 메모리 사용량:"
ps aux | grep -E 'netstat|ss' | grep -v grep
}
자주 묻는 질문 (FAQ)
Q: 프로세스 정보(PID)가 보이지 않는 이유는?
A: 보통 권한 문제 때문입니다. sudo로 실행하세요:
sudo netstat -tulpn
-p 옵션은 프로세스 정보를 표시하기 위해 루트 권한이 필요합니다.
Q: LISTEN 상태와 ESTABLISHED 상태의 차이는?
A:
- LISTEN: 해당 포트에서 서비스가 연결을 기다리고 있음
- ESTABLISHED: 현재 활성화된 연결 세션
Q: 특정 포트의 연결을 어떻게 확인하나요?
A: grep을 사용해 포트별로 필터링할 수 있습니다:
# 포트 80의 모든 연결 확인
netstat -an | grep ":80"
# 수신 대기 포트만 확인
netstat -tunl | grep ":80"
Q: netstat 명령어가 느리게 실행되는 이유는?
A: 주된 이유 두 가지:
1. DNS 해석 - -n 옵션으로 이름 해석을 피하세요
2. 너무 많은 연결 - 필터링하거나 ss로 전환 고려
# 더 빠른 명령어 예시
netstat -tan | grep ESTABLISHED
Q: netstat가 시스템 성능에 영향을 미치나요?
A: 자주 폴링하면 성능에 영향을 줄 수 있습니다. 권장 사항:
1. 폴링 간격 늘리기
2. 출력 필터링 사용
3. 대규모 시스템에서는 ss 사용 고려
4. 바쁜 시스템에서는 연속 모드(-c) 피하기
Q: 특정 포트를 사용하는 애플리케이션을 어떻게 찾나요?
A: 다음 명령어를 사용하세요:
# 포트 80을 사용하는 프로세스 표시
sudo netstat -tulpn | grep ":80"
# lsof 대안
sudo lsof -i :80
Q: 연결 상태를 어떻게 모니터링하나요?
A: 여러 방법이 있습니다:
# 상태별 연결 수 집계
netstat -ant | awk '{print $6}' | sort | uniq -c
# 확립된 연결 실시간 모니터링
watch -n 1 'netstat -ant | grep ESTABLISHED | wc -l'
Q: 의심스러운 연결을 어떻게 확인하나요?
A: 다음을 확인하세요:
1. 비정상 포트:
netstat -tulpn | grep -vE ':22|:80|:443'
2. 단일 IP에서 많은 연결:
netstat -ant | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
Q: 포트 스캐닝 시도를 어떻게 탐지하나요?
A: SYN_RECV 상태를 모니터링하세요:
netstat -ant | grep SYN_RECV | awk '{print $5}' | cut -d: -f1 | sort | uniq -c
Q: -t 옵션과 -u 옵션의 차이는?
A:
-t : TCP 연결만 표시
-u : UDP 연결만 표시
두 옵션을 결합할 수 있습니다:
netstat -tu : TCP와 UDP 모두 표시
Q: netstat 출력을 파일로 저장하려면?
A: 여러 방법이 있습니다:
# 기본 출력 파일 저장
netstat -ant > network_status.log
# 타임스탬프 포함 저장
(date; netstat -ant) > network_status.log
# 연속 로그 기록
while true; do
netstat -ant >> network_log.txt
sleep 300
done
Q: netstat 출력에서 "Address already in use"는 무슨 뜻인가요?
A: 해당 포트가 이미 다른 프로세스에 의해 사용 중임을 의미합니다. 찾으려면:
sudo netstat -tulpn | grep "<포트번호>"
Q: TIME_WAIT 연결이 많은 이유는?
A: TIME_WAIT는 연결 종료 후 정상적인 상태입니다. 하지만 너무 많으면 다음을 의미할 수 있습니다:
1. 높은 연결 전환율
2. 네트워크 문제 가능성
3. 애플리케이션이 연결을 재사용하지 않음
모니터링 명령어:
netstat -ant | grep TIME_WAIT | wc -l