본문 바로가기
정리/시스템

netstat 사용법

by 정재희 2017. 1. 6.

리눅스 netstat 명령어 사용 예제


netstat은 시스템의 네트워크 연결 목록(tcp, udp, 소켓 연결)을 보여주는 유틸리티입니다.


1. 모든 연결을 출력하기

가장 기본적이고 간단한 명령으로 현재 연결을 모두 보여줍니다. 옵션으로 'a'를 사용합니다.

root@ubuntu:~# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 ubuntu:domain           *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:8000          *:*                     LISTEN
tcp        0      0 localhost:mysql         *:*                     LISTEN
tcp        0      0 172.16.8.123:ssh        172.16.8.1:34656        ESTABLISHED
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     50163    /tmp/.X11-unix/X0
unix  2      [ ACC ]     STREAM     LISTENING     195357   /run/user/1000/keyring-33Lh47/control
unix  2      [ ACC ]     STREAM     LISTENING     40309    /var/run/mysqld/mysqld.sock
unix  2      [ ACC ]     STREAM     LISTENING     195972   /run/user/1000/keyring-33Lh47/pkcs11
unix  2      [ ACC ]     STREAM     LISTENING     195978   /run/user/1000/keyring-33Lh47/ssh
unix  2      [ ACC ]     STREAM     LISTENING     195980   /run/user/1000/keyring-33Lh47/gpg
unix  2      [ ]         DGRAM                    379338
unix  3      [ ]         STREAM     CONNECTED     197047   /var/run/dbus/system_bus_socket


2. tcp 또는 udp 연결만 표시하기

tcp 연결만 출력하려면 't'를 사용합니다.

root@ubuntu:~# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 ubuntu:domain           *:*                     LISTEN
tcp        0      0 *:ssh                   *:*                     LISTEN
tcp        0      0 localhost:8000          *:*                     LISTEN
tcp        0      0 localhost:mysql         *:*                     LISTEN
tcp        0      0 172.16.8.123:ssh        172.16.8.1:34656        ESTABLISHED

간단하게 udp 연결 목록만 표시하려면 'u'옵션을 사용합니다.

root@ubuntu:~# netstat -au
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
udp        0      0 172.16.8.123:50038      172.16.0.1:5351         ESTABLISHED
udp        0      0 ubuntu:domain           *:*
udp        0      0 *:51301                 *:*
udp        0      0 239.192.152.143:6771    *:*
udp        0      0 *:ipp                   *:*
udp        0      0 *:51413                 *:*
udp        0      0 *:51413                 *:*


3. 목록을 빨리 출력하기위해 역 dns 질의를 끄기

기본적으로 netstat 명령어는 역 dns 질의를 통해 각 ip의 호스트 이름을 얻으려 하기 때문에 출력에 지연이 생깁니다. 만약 호스트 이름까지는 필요가 없고 그냥 ip 주소만으로 충분할 경우 'n' 옵션을 추가해 역 dns 질의 기능을 끕니다.

root@ubuntu:~# netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN
tcp        0      0 172.16.8.123:22         172.16.8.1:34656        ESTABLISHED
tcp6       0      0 :::51413                :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

이 명령은 모든 tcp 연결을 출력하는데 dns 확인 없이 빠르게 결과를 보입니다.


4. listen 상태인 연결만 표시하기

네트워크 데몬이나 서비스의 상태가 listen인 연결만 표시하려면 'l' 옵션을 추가합니다.

root@ubuntu:~# netstat -tnl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN
tcp6       0      0 :::51413                :::*                    LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

위 명령은 listen 상태인 tcp 연결만 출력함니다. tcp 이외의 모든 포트도 출력하고 싶다면 't'옵션을 지우고, udp 목록만 보고싶다면 'u'옵션을 사용하면 됩니다.


5. 프로세스 이름과 pid도 표시하기

apache나 nginx가 포트를 점유하고 있는지, 동작중인지 아닌지 확인하고 싶을 때 프로세스 이름과 pid 까지 보여준다면 더 유용할 것입니다. 프로세스 상세 정보 표시 옵션은 'p'입니다. 이 옵션은 root 권한을 가진 상태에서 실행해야 합니다. root 권한이 없을 경우 pid를 알아낼 수 없습니다.

root@ubuntu:~# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.1.1:53            0.0.0.0:*               LISTEN      1163/dnsmasq
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      19089/sshd
tcp        0      0 127.0.0.1:8000          0.0.0.0:*               LISTEN      47073/python
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      16514/mysqld
tcp6       0      0 :::22                   :::*                    LISTEN      19089/sshd


6. 커널 라우팅 정보 출력하기

커널 라우팅 정보는 'r'로 볼 수 있고 route 명령과 동일한 결과를 출력합니다. 빠른 출력을 위해 'n' 옵션을 추가하여 호스트명 찾기를 안하게 할 수도 있습니다.

root@ubuntu:~# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         172.16.0.1      0.0.0.0         UG        0 0          0 eth0
172.16.0.0      0.0.0.0         255.240.0.0     U         0 0          0 eth0



출처: http://sisiblog.tistory.com/12 [콩]

'정리 > 시스템' 카테고리의 다른 글

/var/log 정리  (0) 2017.01.06
ps 사용법  (0) 2017.01.06
nmap 사용법  (0) 2017.01.06
wget 사용법  (0) 2017.01.06
리턴메일 - 발송 실패 에러 메시지  (0) 2017.01.02

댓글