본문 바로가기

개발/서버

netstat 에 관하여

netstat 사용법

 

netstat은 network 연결정보, 라우팅 테이블, 인터페이스 통계 정보등을 볼 수 있는 프로그램으로 몇 가지 옵션에 대해서만 사용하는 방법을 알면 된다. netstat는 ifconfig, route 등과 함께 nettools이라는 패키지에 포함되어 있는데 현재 시스템의 네트워크 연결 상태등을 확인할 수 있다. 유용하게 사용할 수 있는 옵션은 대략 다음과 같다.

 

-a : 리슨 외의 모든 소켓들을 보여준다.
-l : 시스템에서 리슨하고 있는 프로세스를 보여준다.
-p : 해당 프로세스를 사용하고 있는 프로그램의 이름을 보여준다.
-r : 커널의 라우팅 테이블을 보여준다. route의 결과와 동일하다.
-n : 서비스 이름이나 IP주소에 대해 역질의(reverse lookup)를 하지 않는다.
-c : netstat의 결과를 매초마다 자동으로 업데이트 하여 보여준다.
-t : tcp로 연결된 포트를 보여준다.
-u : udp로 연결된 포트를 보여준다.

 

만약 netstat으로 확인하였을 때 State 부분에 SYN_RECEIVED가 많이 보인다면 syn flooding 공격을 당하고 있을 확률이 높다. 실제로 netstat으로 확인시 SYN_RECEIVED가 보이는 경우는 거의 없으며 보이더라고 1~2개가 보이는 것이 정상이다.

 

netstat시 State부분에 가능한 연결 상태

 

netstat으로 확인하였을 때 State 부분에서는 각각의 tcp 프로세스가 현재 어떤 상태인지에 대해 보여주고 있다. 각각의 의미를 이해하려면 tcp의 작동방식에 대한 기본적인 이해가 필요하다.

 

LISTEN : 서버의 데몬이 떠서 클라이언트의 접속 요청을 기다리는 상태
SYN_SENT : 로컬의 클라이언트 어플리케이션이 원격 호스트에 연결을 요청한 상태
SYN_RECEIVED : 서버가 원격 클라이언트로부터 접속 요구를 받아 클라이언트에게 응답을 하였지만 아직 클라이언트에게 확인 메시기는 받지 않은 상태
ESTABLISHED : 3 Way-Handshaking이 완료된 후 서로 연결된 상태
FIN-WAIT!, CLOSE-WAIT, FIN-WAIT2 : 서버에서 연결을 종료하기 위해 클라이언트에게 종결을 요청하고 회신을 받아 종료하는 과정의 상태
CLOSING : 흔하지 않지만 주로 확인 메시지가 전송도중 분실된 상태
TIME_WAIT : 연결은 종료되었지만 분실되었을지 모를 느린 세그먼트를 위해 당분간 소켓을 열어 놓은 상태
CLOSED : 완전히 종료

'개발 > 서버' 카테고리의 다른 글

각종 데몬프로세서  (0) 2012.02.05
inode 란  (0) 2012.02.05
crontab 사용하기  (0) 2012.02.05
locate를 이용한 임의의 파일 찾기  (0) 2012.02.05
Redirection  (0) 2012.02.05