[Ubuntu] Ubuntu에서 netstat을 사용해보기

얼마전 호스팅한 서버에서 중국이 해킹해… 초당 2MB 정도로 패킷을 거의 2주간 전송하고 있다고 해서 netstat을 정말 열심히 사용해 어떤 프로세스가 그러한 요청을 보내는지 알아보려고 하다가 netstat을 좀 써보게 되었는데 그 내용을 포스팅한다.

환경

  • Ubuntu 16.04


netstat이란?

  • netstat: network statistics의 줄임말로 네트워크 인터페이스나 프로토콜 상에서의 통계를 보여주는 소프트웨어 혹은 도구입니다. 대체로 네트워크의 성능을 측정하고 네트워크 상의 문제점을 파악할 때 많이 쓰입니다.


기본적인 netstat의 명령어를 사용하시면

  • 외부와 통신하는 상태를 알려주는 Active Internet connections

  • 내부에서 프로세스들끼리 소통하는 상태들을 알려주는 Active UNIX domain sockets에 대한 내용을 확인 할 수 있습니다.


netstat 사용법 및 간단한 옵션

netstat의 예시

기본적인 명령어는 아래와 같으며 명령어를 실행하면 다음과 같은 결과가 나옵니다.(Active Connections의 경우)

$ netstat

Netstat First

  • Proto: 해당 통신이 사용하는 프로토콜을 나타냅니다.
  • Recv-Q and Send-Q: 해당 통신이 사용할 때 소켓 사이즈 버퍼를 의미하며 Recv-Q의 경우 recv()를 통해 처리 받지 못한 데이터를 의미하며 Send-Q의 경우 send()를 통해 보냈지만 아직 완전하게 외부로 보내지지 않은 데이터의 크기를 의미합니다.
  • Local Address and Foreign Address: 말 그대로 해당 통신에서 나가는 내 주소와 목적지에 해당하는 주소를 의미합니다.
  • State: ESTABLISHED, LISTEN과 같은 상태를 나타냅니다. 상세한 부분은 TCP/IP 통신을 따로 보시면 되고 나중에 시간되면 이 부분도 포스팅하겠습니다.


netstat에 옵션을 주기

이제 netstat 명령어에 옵션을 주어 더 상세한 정보를 보도록 하겠습니다. 모든 옵션들을 보여주기에는 힘드니 제가 특정 프로세스를 확인 할 때 사용하였던 옵션들을 나열하겠습니다.

  • “-a”: ESTABLISHED 뿐만 아닌 모든 State에 대한 소켓들의 정보를 보여줍니다.
  • “-n”: 도메인 명이 아닌 숫자 ip주소를 표시해줍니다.
  • “-p”: 어떤 프로세스에서 해당 통신을 사용하고 있는 지를 보여줍니다.
$ netstat -anp
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:[port]           0.0.0.0:*               LISTEN      2007/beam
tcp        0      0 0.0.0.0:[port]           0.0.0.0:*               LISTEN      1498/redis-server 0
tcp        0      0 0.0.0.0:[port]           0.0.0.0:*               LISTEN      1816/epmd
tcp        0      0 0.0.0.0:[port]           0.0.0.0:*               LISTEN      1538/sshd

Netstat with options


다음에는 더 공부해서 네트워크와 Linux에서 환경설정을 어떻게 하면 더 튼튼한지 이런부분에 대해서 더 포스팅해보겠습니다.