linux의 netstat 명령어를 통해 현재 연결된 네트워크 상태, 라우팅 테이블, 인터페이스 상태, IP Masquerade, 멀티캐스트 멤버쉽 등을 확인 할 수 있습니다.

기본 사용법

$> netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.0.50:38608      nrt20s21-in-f10.1:https ESTABLISHED
...
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    34946    /run/user/1000/systemd/notify
unix  3      [ ]         DGRAM                    19785    /run/systemd/notify
unix  3      [ ]         SEQPACKET  CONNECTED     238454   @0002d
...

출력된 정보는 다음과 같습니다.

  • Active Internet Connections : TCP, UDP, RAW로 연결된 목록
    • Proto : 프로토콜
    • Recv-Q : 소켓에 연결된 사용자 프로그램에서 복사하지 않는 받은 바이트 수
    • Send-Q : 원격 호스트에서 승인하지 않은 바이트 수
    • Local Address : 로컬 주소와 포트 번호
    • Foreign Address : 원격 주소와 포트 번호

-n(--numeric) 옵션을 사용하지 않으면 소켓 주소는 표준 호스트 이름(FQDN)으로 확장되고 포트 번호는 해당 서비스 이름으로 변환된다

  • State : 소켓 상태

    • ESTABLISHED : 소켓이 연결된 상태
    • SYN_SENT : 소켓이 연결을 시도하고 있는 상태
    • SYN_RECV : 네트워크 연결 요청을 받은 상태
    • FIN_WAIT1 : 소켓이 닫히고 연결이 종료되고 있는 상태
    • FIN_WAIT2 : 연결이 닫히고 소켓이 원격으로부터 종료를 기다리는 상태
    • TIME_WAIT : 연결 종료후 소켓이 네트워크에 있는 패킷을 처리하기 위해 대기중인 상태
    • CLOSE : 소켓이 사용되지 않는 상태
    • CLOSE_WAIT : 종료 대기중인 상태
    • LAST_ACK : 원격 연결 종료 요구 승인을 기다리는 상태
    • LISTEN : 연결요청에 대한 응답준비가 되어 있는 상태
    • CLOSING : 두 소켓이 모두 종료되었지만 모든 데이터가 전송되지 않는 상태(메시지 유실 상태)
    • UNKNOWN : 소켓 상태를 알 수 없음
  • Active UNIX domain sockets (w/o servers) : 도메인 소켓으로 연결된 목록

    • Proto : 프로토콜
    • RefCnt : 참조 숫자
    • Flags : 표시되는 플래그는 ACC(SO_ACCEPTON), W(SO_WAITDATA), N(SO_NOSPACE)
    • Type : 소켓 액세스 유형
      • SOCK_DGRAM : 소켓이 Datagram(연결없는) 모드에 사용
      • SOCK_STREAM : Stream(연결) 소켓
      • SOCK_RAW : RAW 소켓
      • SOCK_RDM : 안정적으로 전달 된 메시지
      • SOCK_SEQPACKET : 순차 패킷 소켓
      • SOCK_PACKET : RAW 인터페이스 액세스 소켓
      • UNKNOWN : 모름
    • State
      • FREE : 할당되지 않은 소켓
      • LISTENING : 연결 요청에 대한 응답 준비가 되어 있는 상태
      • CONNECTING : 연결중인 상태
      • CONNECTED : 연결된 상태
      • DISCONNECTING : 연결이 해제되고 있는 상태
      • (empty) : 소켓이 다른 소켓에 연결되어 있지 않은 상태
      • UNKNOWN : 절대로 나와서는 안되는 상태
    • I-Node : 아이노드
    • Path : 소켓에 연결된 해당 프로세스의 경로

TLDR

$> tldr netstat

  netstat

  Displays network-related information such as open connections, open socket ports, etc.

  - List all ports:
    netstat -a

  - List all listening ports:
    netstat -l

  - List listening TCP ports:
    netstat -t

  - Display PID and program names:
    netstat -p

  - List information continuously:
    netstat -c

  - List routes and do not resolve IP to hostname:
    netstat -rn

  - List listening TCP and UDP ports (+ user and process if you're root):
    netstat -lepunt

  - Print the routing table:
    netstat -nr

활용

$> netstat -anp
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
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:8009            0.0.0.0:*               LISTEN      25272/java
...
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Path
unix  2      [ ]         DGRAM                    34946    2800/systemd        /run/user/1000/systemd/notify
unix  2      [ ACC ]     STREAM     LISTENING     34947    2800/systemd        /run/user/1000/systemd/private
...

Help

$> netstat --help
usage: netstat [-vWeenNcCF] [<Af>] -r         netstat {-V|--version|-h|--help}
       netstat [-vWnNcaeol] [<Socket> ...]
       netstat { [-vWeenNac] -i | [-cWnNe] -M | -s }

        -r, --route              display routing table
        -i, --interfaces         display interface table
        -g, --groups             display multicast group memberships
        -s, --statistics         display networking statistics (like SNMP)
        -M, --masquerade         display masqueraded connections

        -v, --verbose            be verbose
        -W, --wide               don't truncate IP addresses
        -n, --numeric            don't resolve names
        --numeric-hosts          don't resolve host names
        --numeric-ports          don't resolve port names
        --numeric-users          don't resolve user names
        -N, --symbolic           resolve hardware names
        -e, --extend             display other/more information
        -p, --programs           display PID/Program name for sockets
        -c, --continuous         continuous listing

        -l, --listening          display listening server sockets
        -a, --all, --listening   display all sockets (default: connected)
        -o, --timers             display timers
        -F, --fib                display Forwarding Information Base (default)
        -C, --cache              display routing cache instead of FIB

  <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom
  <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; default: inet
  List of possible address families (which support routing):
    inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) 
    netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) 
    x25 (CCITT X.25) 

참고