ioerror

netstat - 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등 확인 본문

OS

netstat - 네트워크 연결, 라우팅 테이블, 인터페이스 통계 등 확인

반응형

netstat - Network Statistics

프로토콜 통계와 현재 TCP/IP 네트워크 연결 상태를 보여주는 명령줄 도구이다. 네트워크 연결 상태를 모니터링하고 시스템의 포트 열림 여부, 라우팅 테이블 상태, 인터페이스 통계 등을 확인하는 데 사용된다. 현재는 많은 리눅스 배포판에서 ip route, ss 등의 명령어로 대체되는 추세이나, 여전히 유닉스 및 구형 시스템에서 네트워크 디버깅을 위해 널리 사용된다.

1. 명령어 용도

  • 특정 포트를 어떤 프로세스가 점유하고 있는지 확인해야 하는 상황
  • 서버의 네트워크 연결 상태(ESTABLISHED, LISTEN 등)를 모니터링해야 하는 상황
  • 시스템의 라우팅 테이블 및 네트워크 인터페이스 활성화 상태를 점유율과 함께 점검해야 하는 상황

2. 명령어 서식

netstat [옵션]

3. 명령어 옵션

옵션 설명 사용가능 OS 및 쉘
-a 모든 소켓(연결 대기 중인 LISTEN 소켓 포함)을 표시한다.  
-t TCP 프로토콜을 사용하는 연결만 표시한다.  
-u UDP 프로토콜을 사용하는 연결만 표시한다.  
-n 주소나 포트 형식을 이름(도메인, 서비스명) 대신 숫자(IP, 포트번호)로 표시한다.  
-p 해당 소켓을 사용하고 있는 프로세스의 ID(PID)와 프로그램 이름을 표시한다. [Linux]
-r 라우팅 테이블을 표시한다. (route 명령어와 동일한 결과)  
-l 연결 대기 상태(LISTEN)인 소켓만 표시한다.  
-i 모든 네트워크 인터페이스의 통계 테이블을 표시한다.  
-s 프로토콜별(IP, ICMP, TCP, UDP 등) 통계 정보를 세부적으로 표시한다.  

 

명령어 옵션 사용시 결과 예시

# 1. 현재 열려 있는 모든 TCP 포트와 해당 포트를 사용하는 프로세스(PID)를 숫자로 확인
netstat -ntlp
# Active Internet connections (only servers)
# Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
# tcp        0      0 0.0.0.0:22              0.0.0.0:* LISTEN      1025/sshd
# tcp        0      0 127.0.0.1:3306          0.0.0.0:* LISTEN      1142/mysqld

# 2. 시스템의 라우팅 테이블 확인 (숫자 형태로 출력)
netstat -rn
# Kernel IP routing table
# Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
# 0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
# 192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

 

 

netstat -ntlp 명령어 결과로 출력되는 활성 인터넷 연결(서버 리슨 상태)의 각 항목별 의미는 다음과 같다.

항목 (Column) 의미 설명
Proto 프로토콜 소켓이 사용하는 전송 프로토콜 (tcp, tcp6).
Recv-Q 수신 큐 애플리케이션이 아직 읽어가지 않은 수신 데이터 크기.
Send-Q 송신 큐 상대방의 수신 확인(ACK)을 기다리는 송신 데이터 크기.
Local Address 로컬 주소 현재 서버의 IP 주소와 대기 중인 포트 번호.
Foreign Address 원격 주소 연결된 클라이언트의 IP와 포트 (LISTEN 상태에서는 주로 *로 표시).
State 연결 상태 네트워크 소켓의 상태 (주로 접속 대기 상태인 LISTEN).
PID/Program name 프로세스 정보 해당 포트를 사용 중인 프로세스 ID(PID)와 실행 프로그램 명.

netstat -rn 명령어 결과로 출력되는 커널 IP 라우팅 테이블의 항목별 의미다.

항목 (Column) 의미 설명
Destination 목적지 패킷이 도달해야 하는 목적지 네트워크 또는 호스트의 IP 주소 (0.0.0.0은 기본 게이트웨이).
Gateway 게이트웨이 외부 네트워크로 나가기 위한 라우터 IP 주소 (0.0.0.0 또는 *은 로컬 네트워크 의미).
Genmask 넷마스크 목적지 IP의 네트워크 범위를 정의하는 서브넷 마스크 (255.255.255.255는 단일 호스트).
Flags 플래그 경로의 상태를 표시 (U: 활성화, G: 게이트웨이 사용, H: 단일 호스트).
MSS 최대 세그먼트 크기 Maximum Segment Size의 약자로, 해당 경로로 전송할 수 있는 TCP 데이터의 최대 크기(바이트).
Window 윈도우 크기 해당 경로를 통해 한 번에 전송할 수 있는 TCP 데이터의 양(윈도우 사이즈).
irtt 초기 왕복 시간 Initial Round Trip Time의 약자로, 패킷이 목적지에 도달하고 응답이 돌아오는 초기 시간(ms).
Iface 인터페이스 패킷이 목적지로 나가기 위해 거치는 물리적/논리적 네트워크 카드 이름 (예: eth0, lo).

4. 명령어 특이사항(유의사항)

  • ss 명령어의 대체: 최신 리눅스 배포판(CentOS 7+, Ubuntu 16.04+ 등)에서는 net-tools 패키지가 기본에서 제외되면서 netstat 대신 ss 명령어를 사용할 것을 권장하고 있다. netstat은 /proc/net/을 읽어오기 때문에 연결이 매우 많은 대형 서버에서는 속도가 느려지는 단점이 있다.
  • -p 옵션의 권한: 프로세스 ID(PID)를 확인하는 -p 옵션은 루트(root) 권한이나 sudo를 사용하지 않으면 타인 소유의 프로세스 정보가 제한되어 출력되지 않는다.
  • 포트 충돌 해결: StackOverflow에서 가장 자주 묻는 질문 중 하나는 "Address already in use" 에러 발생 시 netstat -nap | grep 포트번호를 통해 원인 프로세스를 찾아 kill하는 해결책이다.

 

https://ioerror.tistory.com/entry/UNIX-Linux-Command-Reference

 

UNIX & Linux Command Reference

유닉스 / 리눅스 명령어 표유닉스와 리눅스 환경에서 자주 사용되는 필수 명령어들을 완벽하게 정리한다. 서버 관리, 프로그래밍, 일상적인 시스템 운영 등 어떤 목적이든 터미널 환경을 능숙하

ioerror.tistory.com

 

 

반응형
Comments