더북(TheBook)

netstat로 네트워크 정보 확인하기

netstat는 리눅스 네트워크 상태를 종합적으로 보여주는 명령입니다. 아무 옵션 없이 netstat 명령을 내리면 현재 리눅스 서버의 열려 있는 모든 소켓에 대한 정보를 확인할 수 있습니다.

shinjaehun@losttemple:~$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address          Foreign Address      State
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State       I-Node   Path
unix  22     [ ]         DGRAM                  8276     /dev/log
unix  3      [ ]         STREAM     CONNECTED   19569
...

-i 옵션을 사용하면 네트워크 인터페이스를 통해 주고 받은 패킷에 대한 정보를 확인할 수 있습니다.

shinjaehun@losttemple:~$ netstat -i

-nr 옵션을 사용하면 라우팅 테이블 정보를 확인할 수 있습니다.

shinjaehun@losttemple:~$ netstat -nr

프로토콜에 따른 패킷 통계를 확인하기 위해서는 -s 옵션을 사용합니다. 어떤 네트워크 프로토콜이 제대로 동작하지 않는지, 쓸모없는 프로토콜이 동작되고 있는 상태는 아닌지 점검할 수 있습니다.

shinjaehun@losttemple:~$ netstat -s

netstat에서 가장 유용한 옵션은 -atp입니다. 특히 네트워크 서비스를 제공할 때 유용한데, 열려 있는 포트 번호와 데몬, 그리고 그 포트를 사용하는 프로그램에 대한 정보를 상세히 점검할 수 있습니다. 이 옵션을 통해서 불필요하게 열려 있는 포트나 알려지지 않은 포트가 있다면 이를 확인하여 포트를 닫고 프로그램을 중지시켜야 합니다.

shinjaehun@losttemple:~$ sudo netstat -atp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address          Foreign Address     State     PID/Program name
tcp        0      0 losttemple:domain      *:*                 LISTEN    1067/dnsmasq
tcp        0      0 localhost:ipp          *:*                 LISTEN    6319/cupsd
tcp        0      0 *:telnet               *:*                 LISTEN    8739/inetd
tcp6       0      0 ip6-localhost:ipp      [::]:*              LISTEN    6319/cupsd
Tip

포트는 네트워크 서비스의 논리적인 출입구를 의미합니다. 서버는 네트워크 서비스의 포트(목적지 포트)를 열어 놓고 클라이언트의 요청을 대기합니다. 클라이언트 역시 마찬가지로 포트(출발지 포트)를 통해 서버에 네트워크 서비스를 요청합니다. 네트워크 서비스가 끝나 사용할 필요가 없게 되면 서버와 클라이언트 양쪽 모두 포트를 닫습니다. 모든 컴퓨터에는 65,356개의 포트를 사용할 수 있으며 중요한 몇몇의 포트는 예약되어 있습니다. 이러한 포트를 ‘잘 알려진(well-known)’ 포트 번호라고 하며 1번부터 1,023번까지 지정되어 있습니다. TCP/IP 네트워크에서 http 프로토콜은 80, telnet은 23, ftp는 21을 표준 포트로 사용합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.