본문 바로가기
IT 학습 공간 ::)

리눅스 네트워크 모니터링 툴 명령어 - 1 ( netstat, ping )

by 에스타롯사 2019. 5. 31.

안녕하세요 롯사입니다.

 

이번 시간엔 리눅스 네트워크 모니터링 툴 명령어에 대해서 알아보겠습니다.

 

IT의 분야는 정말 많고도 많지만 모든 분야를 막론하고 가장 많이 사용하는 명령어 도구가 아닐까 생각됩니다.

 

실제 사이트의 인프라를 구축하다 보면 여러 용도의 서버와 설루션, 방화벽을 접하게 됩니다.

 

종류와 용도가 다양하기 때문에 하나의 시스템 인프라로 연동하려면 통신이 유기적으로 선행되어야 합니다.

 

유기적으로 통신을 하려면 네트워크 시스템과 그에 따른 설정이 필수적이지만 사람이 하는 작업인 만큼

 

Troubleshooting 이 필요합니다. 그럴 때 사용하는 도구라고 생각하시면 되겠습니다.

 

 

 

자 그럼 하나하나 알아보겠습니다.

 

 

 

Network tool

1. netstat

: 네트워크 관련 정보를 보는데 일반적으로 사용하는 범용 유틸리티입니다.

  tcp / udp / 소켓의 네트워크 연결 목록을 확인할 때 주로 사용합니다.


* netstat -a ( -a 옵션을 주어서 모든 연결 목록을 출력합니다 )

 

뭐라고 뭐라고 막 많이 출력되었습니다.

해당하는 필드가 의미하는 것이 무엇인지 파악이 필요하겠죠? 뭐든지 알기 전까진 어렵지만 알고 나면 쉽습니다.

알아봅시다.

 

필 드 명 의 미
Proto 사용중인 프로토콜을 표시해주는 필드입니다. ( ex. tcp/udp )
Recv-Q 수신 소켓 버퍼에 존재하는 바이트 수를 표시해주는 필드입니다.
Send-Q 송신 소켓 버퍼에 존재하는 바이트 수를 표시해주는 필드이며 
반대편 peer socket에 전송되지 못한 것을 의미합니다.
Local Address 로컬 주소 표시 필드
Foreign Address 상대편 주소 표시 필드
state 현재 연결의 상태를 표시해 주는 필드입니다.

 

 

 

* netstat -nr ( -nr 옵션을 주어서 라우팅 테이블 상태를 출력합니다.)

 

route 명령어를 사용했을 때와 동일한 결과를 출력해줍니다.

기본적으로 -r 옵션만 주어서 출력을 할 수 있지만 -n 옵션을 주어서 호스트 찾기 안 함으로 빠른 결과를 출력할 때

사용합니다.

 

여기서 의미하는 필드의 값도 알아봅시다.

 

필 드 명 의 미
Gateway 라우팅 항목에서의 gateway를 표시합니다.
Genmask 라우팅 항목의 netmask 를 표시합니다.
Flags 라우팅 경로에 관한 여러 플래그를 표시합니다.
U : 인터페이스가 UP 인 상태
H : 라우팅 경로를 통해 호스트로의 연결
G : 게이트웨이의 라우트
D : 라우트가 재지정되어 동적으로 생성
M : 라우팅 경로가 ICMP 리다이렉트 메시지를 통해 수정되었을 경우


최대 세크먼트 크기
 
MSS  
Window 원격에서 한 번에 보내는 데이터의 수신량
irtt initial round trip time 으로, 0은 초기 설정값을 사용한다는 의미
Ifce 네트워크 인터페이스

 

 

 

* netstat -at ( -at 옵션을 부여하여 tcp 연결만 모두 출력할 때 사용합니다. )

 

다음과 같이 tcp 연결의 모든 상태를 출력합니다.

 

* netstat -au ( -au 옵션을 부여하여 udp 연결만 모두 출력할 때 사용합니다. )

 

tcp와 반대로 udp 연결의 모든 상태를 출력합니다.

해당 필드 값은 위에 참고해주세요.

 

* netstat -nl ( -nl 옵션을 부여하여 호스트 찾기 안 함으로 빠르게 Linsten 인 상태 모두를 출력할 때 사용 )

 

여기서 응용하면 -t 옵션을 추가하여 -ntl 옵션으로 tcp의 Linsten 인 상태 모두를 출력할 수도 있습니다.

반대로 -u 옵션을 추가하여 -nul 옵션으로 udp의 Listen 인 상태 모두를 출력도 가능합니다.

 

여기서 상태를 나타내는 state의 필드 값에 대해서 알아봅시다.

필 드 값 의 미
LISTEN 연결이 가능하도록 관련 데몬이 떠있으며 연결이 가능함을 의미합니다.
SYN-SENT 연결을 요청한 상태를 의미합니다.
SYN_RECEIVED 연결요구에 의한 응답을 준 후에 확인메시지를 기다리고 있는 상태를 의미.
ESTABLISHED 위의 3단계 연결과정이 모두 종료된 후에 연결이 완료된 상태를 의미.
FIN-WAIT, CLOSE-WAIT,
FIN-WAIT2
연결 종료를 위해 종료 요청을 받은 후의 종료 과정을 의미.
CLOSING 전송된 메시지가 유실된 상태를 의미합니다.
TIME-WAIT 연결종료 후에 한동안 유지하고 있는 상태를 의미합니다.
CLOSED 연결이 완전히 종료된 상태를 의미합니다.

state의 해당 필드 값이 의미하는 뜻이 무엇이지 파악하고 있는 것이 troubleshooting 할 때 굉장히 중요한 

부분이니 꼭 체크하고 넘어가시기 바랍니다.

 

 

 

 

Network tool

2. ping

: ping 은 상대 호스트가 응답할 수 있는지 확인하는 icmp 패킷을 보내는 프로토콜로

 상대 호스트가 살아 있는지 확인하거나 네트워크 구간에서 패킷 손실을 확인하는 

 용도로 사용합니다.


* ping -c 5 127.0.0.1 ( -c 옵션으로 횟수를 지정해서 icmp 패킷을 전송합니다. )

 

-c 옵션과 5번의 횟수를 지정해서 패킷을 보낸 상태입니다.

하단의 test의 결괏값이 출력되는데 의미는 다음과 같습니다.

 

5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.022/0.039/0.056/0.015 ms

 

5개의 파일을 보내서 5개를 다시 받고 패킷 loss는 없습니다.

총 걸린 시간은 3999ms이고 마지막 부분에

걸린 간에 대한 평균과 가장 짧은 시간, 가장 오래 걸린 시간,

표준편차 정보가 출력됩니다.

 

 

* ping -i 0.2 127.0.0.1 ( -i 옵션으로 interval(지연시간)을 지정하여 패킷을 전송합니다.)

 

-i 옵션을 부여하여 interval을 설정할 수 있습니다.

해당 설정은 관리자의 권한이 필요합니다.

 

* ping -s 1000 127.0.0.1 ( -s 옵션으로 패킷 사이즈를 지정해서 전송합니다.)

 

-s 옵션으로 1000byte의 패킷 사이즈를 지정하여 전송할 수 있습니다.

기본값은 64byte입니다.

 

* ping -w 5 127.0.0.1 ( -w 옵션으로 몇 초 후에 중지시킬 것인지 지정해서 전송합니다.)

 

 

* ping -b 127.0.0.1 ( -b 옵션으로 broadcast 설정해서 패킷을 전송합니다.)

 

 

* ping -t 50 127.0.0.1 ( -t 옵션으로 TTL 값을 지정해서 패킷을 전송합니다.)

 

ping을 통한 icmp 패킷은 그대로 놔두면 여기저기에 패킷이 계속 쌓이게 됩니다.

그래서 자동으로 소멸할 수 있도록 장치를 마련한 규정값이 TTL이라고 할 수 있는데 이 TTL 은 네트워크를

지날 때마다 1씩 줄어듭니다. 쉽게 말해 게이트웨이 라우터를 거칠 때마다 1씩 줄어들어 0이 되면 자동으로

소멸합니다.

 

TTL 값은 0~255까지 변경할 수 있고 라우터를 많이 거치는 목적지를 너무 작은 값으로 지정해서 패킷을

전송하면 목적지에 도달하기도 전에 패킷이 소멸된다는 점 주의하시기 바랍니다.

 

더 많은 옵션이 있지만 대표적으로 사용하는 것 위주로 정리한 점 참고해주시기 바랍니다.


 

다음 포스팅은 이번 포스팅에 이어서 traceroute, arp, nslookup에 대해서 알아보는 시간을 갖도록 

하겠습니다.