본문 바로가기

컴퓨터/네트워크,인터넷

netstat 유틸을 이용한 네트워크 정보분석


[root@hoon hoon]# netstat -na


Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State    
tcp        0      0 0.0.0.0:3300            0.0.0.0:*               LISTEN    
tcp        0      0 0.0.0.0:110             0.0.0.0:*               LISTEN    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN    
tcp        0      0 211.236.xx.xx:80       200.40.xx.xx:1291       SYN_RECV  
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN    
tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN    
tcp        0      0 211.236.xx.xx:80       219.251.xx.xx:2156    TIME_WAIT  
tcp        0      0 211.236.xx.xx:22       211.236.xxx.xx:37859    ESTABLISHED
tcp        0      0 211.236.xx.xx:80       222.122.xxx.xx:46241   ESTABLISHED
tcp        0      0 211.236.xx.xx:80       222.122.1xx2xx:2709    ESTABLISHED
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     193443844 /tmp/mysql.sock
unix  7      [ ]         DGRAM                    998    /dev/log
unix  2      [ ]         STREAM     CONNECTED     193494930
unix  2      [ ]         STREAM     CONNECTED     193494879
unix  3      [ ]         STREAM     CONNECTED     193482882
unix  3      [ ]         STREAM     CONNECTED     193482881
unix  2      [ ]         DGRAM                    192172871
unix  2      [ ]         DGRAM                    1280  
unix  2      [ ]         DGRAM                    1223  
unix  2      [ ]         DGRAM                    1205  
unix  2      [ ]         DGRAM                    1013  


뭐 정상적으로 한가하게(?)작동하는 서버에서  netstat 상태를 보면 대충 저런 시츄에이션이 연출된다.


이런 정보에서 State 상태를 유심히 관찰할 필요성이 있는데....이건 TCP의 3 Way handshake 라는 방식으로 TCP연결이 맺어지는 것과 관련이 있다.



일단 해당 State 필드를 해석해 보자면 ...


----------------------------------------------------------------------------------------


LISTEN : 서버에 데몬이 떠서 접속 요청을 대기 또는 기다리는 상태.


SYN_SENT :로컬의 클라이언트 응용프로그램이 원격 또는 로컬 호스트에 SYN패킷을 보내어 연결을 요청한 상태.


SYN_RECEIVED : 서버가 클라이언트로부터 접속요구(SYN)를 받은 클라이언트에게 SYN/ACK으로 응답하였지만 확인 메세지를 받지 않은 상태.


ESTABLISHED : 3 way handshake 가 완료된 후 서로 연결이 되어 실제 데이터 교환이 이루어지고 있는 상태.


FIN_WATE1, CLOSE_WATE, FIN_WAIT2: 서버에서 연결을 종료하기 위해 클라이언트에게 또는 클라이언트가 서버에 종결을 요청하고 회신을 받아 종료하는 과정의 상태.


CLOSING : 흔하지는 않지만 주로 확인 메세지가 전송도중 분실된 상태.


TIME_WAIT : 연결을 종료되었지만 주로 확인 메세지가 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어놓은 상태.


CLOSED : 완전히 종료.




시스템 netstat 명령어

문법 : #netstat [옵션]

 

옵션 :

-r : routing table을 출력한다.
-i : 모든 네트워크 인터페이스 정보를 출력한다.
-n : 주소를 숫자로 출력한다.
-p : PID와 프로그램 이름을 출력한다.
-l : listening 상태인 소캣 정보만 출력한다.
-a : listening & non listening 소켓 모두 출력한다.
-u : udp 프로토콜을 사용하는 소켓만 출력한다.
-t : tcp 프로토콜을 사용하는 소켓만 출력한다.

ex)

#netstat -nap (열려 있는 모든 포트)
#netstat -l 또는 netstat -nap | grep LISTEN (LISTEN 되는 모든 포트)
#netstat -nap | grep ESTABLISHED | wc -l ( 모든 서비스 동시 접속자 수)
#netstat -nap | grep :80 | grep ESTABLISHED | wc -l ( 웹 동시 접속자 수)

#netstat -a (연결된, 혹은 연결을 기다리고 있는 모든 포트를 출력)

#netstat -an (연결된, 혹은 연결을 기다리고 있는 목록을 IP주소로 바꿔서 보여줌)

 

포트스캔 명령어로 확인하는 방법


# TCP 포트 확인 방법
nmap -sT -p 1-65535 localhost
# UDP 포트 확인 방법
nmap -sU -p 1-65535 localhost
# 네트워크에 열린 포트 확인
nmap -sX -p 22,53,110 211.239.111.*


 

lsof 명령어로 확인하는 방법


# 모든 네트워크 소켓 확인
lsof -I

제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...