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