2010년 4월 9일 금요일

Netstat를 대체해보자 - ss


리눅스 시스템 관리자와 네트워크 프로그래머에게 네트워크 상태를 확인하기 위한 netstat 명령어는 매우 유용한 툴 중의 하나이다. netstat는 네트워크 연결, 라우팅 테이블, 인터페이스 통계, 마스커레이딩 연결, 멀티캐스트 멤버쉽 등 네트워크와 관련된 정보를 표시한다. netstat 1.42의 맨페이지를 확인해보면 이 netstat는 다른 프로그램으로 대체되고 있다는 문구를 볼 수 있다.


NOTE
       This program is obsolete.  Replacement for netstat is ss.  Replacement for
       netstat  -r  is  ip  route.   Replacement  for  netstat  -i is ip -s link.
       Replacement for netstat -g is ip maddr.

본 포스트에서는 netstat를 대체하는 툴 중의 하나인 ss를 알아보도록 한다.


1. 모든 포트 보기


1.1 전체 포트 보기

$ ss -a
State       Recv-Q Send-Q           Local Address:Port               Peer Address:Port
LISTEN      0      128                         :::50330                        :::*
LISTEN      0      50                          :::microsoft-ds                      :::*   
LISTEN      0      50                           *:mysql                         *:*
LISTEN      0      50                          :::netbios-ssn                      :::*    
      .
      .


 
1.2 전체 TCP 포트 보기
$ ss -at
State       Recv-Q Send-Q           Local Address:Port               Peer Address:Port
LISTEN      0      128                         :::50330                        :::*
LISTEN      0      50                          :::microsoft-ds                      :::*  
LISTEN      0      50                           *:mysql                         *:*
LISTEN      0      50                          :::netbios-ssn                      :::*   
LISTEN      0      128                          *:37996                         *:*
     .
     .
 
1.3 전체 UDP 포트 보기
$ ss -au
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:bootpc *:*
UNCONN 0 0 *:sunrpc *:*
UNCONN 0 0 *:ipp *:*
UNCONN 0 0 192.168.200.6:ntp *:*
UNCONN 0 0 127.0.0.1:ntp *:*
      .
      .
1.4 전체 유닉스 포트 보기
$ ss -ax
Netid  State      Recv-Q Send-Q   Local Address:Port       Peer Address:Port
u_str  LISTEN     0      0      @/com/ubuntu/upstart 7075                  * 0
u_str  ESTAB      0      0                    * 8883                  * 0
u_str  ESTAB      0      0                    * 8884                  * 0
u_str  ESTAB      0      0                    * 8895                  * 0
u_str  ESTAB      0      0                    * 8896                  * 0
      .
      .
 
2. Listening 상태의 포트 보기

2.1 Listening 상태의 포트 보기
$ ss -l
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 128 :::50330 :::*
0 50 :::microsoft-ds :::*
0 50 *:mysql *:*
0 50 :::netbios-ssn :::*
0 128 *:37996 *:*
      .
      .

2.2 Listening 상태의 tcp 포트 보기
$ ss -tl
Recv-Q Send-Q Local Address:Port Peer Address:Port
0 128 :::50330 :::*
0 50 :::microsoft-ds :::*
0 50 *:mysql *:*
0 50 :::netbios-ssn :::*
      .
      .
 
2.3 Listening 상태의 udp 포트 보기
$ ss -ul
 2.4 Listening 상태의 유닉스 포트 보기
$ ss -xl
Netid  Recv-Q Send-Q        Local Address:Port            Peer Address:Port
u_str  0      0      @/com/ubuntu/upstart 7075                       * 0
u_str  0      0      /var/run/rpcbind.sock 9061                       * 0
u_str  0      0      /var/run/dbus/system_bus_socket 9153                       * 0
u_str  0      0      /var/run/avahi-daemon/socket 9206                       * 0
u_str  0      0      /var/run/vmware/usbarbitrator-socket 9493                       * 0  
     .
     .
 
3. Established 상태의 포트 보기

$ ss -o state established
Recv-Q Send-Q              Local Address:Port                  Peer Address:Port
0      0            ::ffff:192.168.200.6:ftp           ::ffff:221.155.87.78:47533    timer:(keepalive,48min,0)
0      0                   192.168.200.6:5902                 221.155.87.78:46865
0      184                 192.168.200.6:ssh                  221.155.87.78:47264    timer:(on,390ms,0)

 
4. 프로세스명 표시하기

-p 옵션은 프로세스명을 표시할 것이다. 특정 포트에서 실행되는 프로그램을 찾을 때 매우 유용하다.

$ ss -p
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 ::ffff:192.168.200.6:ftp ::ffff:221.155.87.78:47674
ESTAB 0 0 192.168.200.6:5902 221.155.87.78:46865
users:(("Xvnc",2642,19))
ESTAB 0 52 192.168.200.6:ssh 221.155.87.78:47264
5. 출력 화면의 호스트명, 포트, 사용자명 보기

-n 옵션을 사용하면 출력화면에서 호스트명, 포트 또는 사용자명을 표시하지 않을 것이다. 호스트명, 포트명, 사용자이름을 표시하는 대신 이들을 숫자로 표시할 것이다. 이 옵션을 사용하면 호스트명 등을 찾기 위한 시간이 단축되어 빠르게 표시할 것이다.

$ ss -n
State      Recv-Q Send-Q             Local Address:Port               Peer Address:Port
ESTAB      0      0           ::ffff:192.168.200.6:21         ::ffff:221.155.87.78:47674
ESTAB      0      0                  192.168.200.6:5902              221.155.87.78:46865
ESTAB      0      52                 192.168.200.6:22                221.155.87.78:47264

 

댓글 2개: