최신 리눅스 배포판은 netstat 대신 ss 명령어 사용을 권장하고 있습니다.


netstat 는 네트워크 관련한 정보를 보는 유틸리티로 오래전부터 Unix 계열의 운영체제에서 사용되어 왔으며 현재 리슨중인 포트, 모든 내외부/연결 정보등을 확인할 수 있습니다.


사용법

사용중인 모든 소켓 보기

-a, --all 옵션을 사용하면 사용중인 모든 포트를 나열합니다.

$ sudo netstat -a

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:hostmon         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:hostmon            [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
udp        0      0 0.0.0.0:hostmon         0.0.0.0:*                          
udp        0      0 localhost:323           0.0.0.0:*                          
udp        0      0 ip-127-0-0-53.ap:domain 0.0.0.0:*                          
udp        0      0 ip-172-31-23-247:bootpc 0.0.0.0:*                          
udp6       0      0 [::]:hostmon            [::]:*                             
udp6       0      0 localhost:323           [::]:*                             
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     19709    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     21522    /var/lib/sss/pipes/nss
BASH

listening 소켓 

-l, --listening 옵션을 사용하면 listening 중인 모든 TCP/UDP/Unix Domain socket을 표시합니다.

$ sudo netstat -l

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 0.0.0.0:hostmon         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN     
tcp6       0      0 [::]:hostmon            [::]:*                  LISTEN     
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN     
udp        0      0 0.0.0.0:hostmon         0.0.0.0:*                          
udp        0      0 localhost:323           0.0.0.0:*                          
udp        0      0 ip-127-0-0-53.ap:domain 0.0.0.0:*                          
udp        0      0 ip-172-31-23-247:bootpc 0.0.0.0:*                          
udp6       0      0 [::]:hostmon            [::]:*                             
udp6       0      0 localhost:323           [::]:*                             
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     19709    /run/dbus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     21522    /var/lib/sss/pipes/nss
unix  2      [ ACC ]     SEQPACKET  LISTENING     18498    /run/systemd/coredump
BASH


listening TCP 소켓 

-t, –tcp 옵션은 listening 중인 TCP 소켓만 표시합니다.

$ sudo netstat -t

Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0     96 ip-172-31-23-247.ap:ssh 1.2.3.4:50186     ESTABLISHED
BASH

listening 소켓 정보 상세 보기

여러 옵션을 조합해서 listening 중인 모든 소켓에 대한 상세 정보를 볼수 있으며 옵션에 대한 설명은 하단을 참고하세요.

$ sudo netstat -antup

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:5355            0.0.0.0:*               LISTEN      848/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      980/sshd            
tcp        0     96 172.31.23.247:22        1.1.1.1:50186     ESTABLISHED 30037/sshd: ec2-use 
tcp6       0      0 :::5355                 :::*                    LISTEN      848/systemd-resolve 
tcp6       0      0 :::22                   :::*                    LISTEN      980/sshd            
udp        0      0 0.0.0.0:5355            0.0.0.0:*                           848/systemd-resolve 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           677/chronyd         
udp        0      0 127.0.0.53:53           0.0.0.0:*                           848/systemd-resolve 
udp        0      0 172.31.23.247:68        0.0.0.0:*                           774/NetworkManager  
udp6       0      0 :::5355                 :::*                                848/systemd-resolve 
udp6       0      0 ::1:323                 :::*                                677/chronyd         
BASH

정보 갱신해서 보기

-c, --continuous 옵션을 사용하면 종료되지 않고 계속 정보를 갱신하면서 표시합니다.

$ netstat -c
BASH


routing 정보 보기

-r, --route 옵션으로 현재 시스템의 커널 라우팅 정보를 볼 수 있습니다.

$ sudo netstat -nr  


Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         172.31.16.1     0.0.0.0         UG        0 0          0 eth0
172.31.16.0     0.0.0.0         255.255.240.0   U         0 0          0 eth0
BASH


주요 옵션

옵션의미

-a

모든 소켓 표시
-t TCP socket 만 표시
-uUDP socket 만 표시
-n호스트, 포트 번호 등의 이름 확인을 하지 않고 숫자로 표시
-p소켓을 사용하고 있는 프로세스의 ID 표시
-r라우팅 테이블 표시
-l연결 대기 상태인 소켓만 표시


같이 보기

Ref