1. ping

: 대상 호스트(hostname or IP주소)로 ICMP(Internet Control Message Protocol)을 보내는 명령어

 

- 서비스가 안된다는 말을 들었을 때, 가장 먼저 해봐야 하는 command

- 해당 소프트웨어가 문제인지, 소프트웨어가 올라가 있는 호스트(서버) 자체의 문제인지 판단하기 위함

- 대상 호스트 자체가 살아 있다면 ping은 나가므로, ping이 나간다고 해서 해당 소프트웨어가 정상이라고 판단하지 말 것

 

$ ping [hostname]
또는
$ ping [IP address]

ping 정상 결과 출력 화면
ping 비정상 결과 출력 화면


2. netstat

: Network Statistics로, TCP/IP Connection 네트워크의 통계 정보를 제공해주는 명령어

 

- 열려있는 포트 및 동작하고 있는 소프트웨어 정보를 함께 확인할 때 사용

 

옵션)

- a : 모든 네트워크 상태 출력 [-all]

- i : 인터페이스별 통계값 출력 [--interface]

- n : IP address 및 Port 표시 ( netstat는 역dns 질의를 통해 각 IP에 매칭되는 Hostname을 얻으려 하는데, 이때 출력에 지연이 생기게 된다. 굳이 Hostname이 필요 없다면 해당 옵션을 사용하길 권장한다.)

- p : PID(프로세스 ID)와 사용중인 프로그램명 출력 [--program]

- r : 라우팅 테이블 출력 [--route]

- t : TCP 프로토콜만 출력 [--tcp]

- u : UDP 프로토콜만 출력 [--udp]

- l(엘) : 대기중인 네트워크 [--listening]

$ netstat -tnlp
(-> TCP 프로토콜만 출력, IP주소 및 포트 형식으로 표시, LISTEN 중인 녀석들만 출력, PID까지 표시)

netstat -tnlp 결과 예시

결과 설명)

  • Proto : 프로토콜 종류. TCP, UDP RAW 등
  • Recv-Q : 해당 프로세스가 현재 받는 Byte 수 표기
  • Send-Q : 해당 프로세스가 현재 보내는 Byte 수 표기
  • Local Address : 출발지 주소 및 포트
  • Foreign Address : 목적지 주소 및 포트
  • State : 포트의 상태

3. traceroute

: 지정된 Host까지 패킷이 전달되는 경로를 표시. IP 패킷의 TTL(Time-To-Live) 필드를 활용하여 Destination 까지의 Traffic Path 를 알아내는데, 해당 방법을 정리하면 다음과 같다.

① TTL 1 부터 한 패킷씩 전송을 시작한다.

② 패킷이 전송 중에 만료될 것이므로, Upstream Router는 ICMP Time-To-Live Exceeded 패킷을 보내면서 hop 을 식별한다.

③ 위 과정을 반복하며, 다음 hop을 식별한다.

④ 위와 같이 패킷 전송을 반복하여, 최종 Destination 까지 도달하는 과정 중의 라우터 리스트를 알아낸다.

 

- 특정 호스트에 대한 ping이 날라가지 않는 경우, traceroute를 통해 해당 호스트 자체에 문제가 있는지, 호스트에 도달하기까지의 경로 상에 있는 네트워크 인터페이스에 문제가 있는지 알아보는 데에 사용

$ traceroute [Hostname]
or
$ traceroute [IP Address]

traceroute 출력 결과


4. route

: Host의 Routing Table을 확인 및 설정하는 유틸리티.

 

* Routing Table :  Router 가 특정 서브넷에서 다른 서브넷으로 패킷을 보낼 때 네트워크 노선(?)을 변환시키는데, 이때 활용하는 정보를 말한다.

 

- 네트워크 단의 문제를 확인할 때에는 'route -n' 을 사용하여 IP별로 패킷이 어떤 라우터로 거쳐가는지 확인할 수 있다.

$ route -n

route -n 결과 화면

결과 설명)

아래와 같은 규칙을 따라 라우팅 테이블을 해석한다.

① 컴퓨터는 위의 첫번째 행부터 다음 행으로 차례대로 한 행씩 읽어가며 처리할 패킷을 보낼 수 있는지 확인하게 된다.

② default(0.0.0.0) 라는 것은 이 Host의 기본 게이트웨이 설정을 의미하며, 이 행의 Gateway 값이 기본 게이트웨이의 IP 주소를 나타낸다.

③ 보낼 데이터의 목적지 IP 주소와 Genmask 값과의 AND 연산을 하여 그 결과가 해당 행의 Destination 항목과 동일할 경우, 해당 행의 Iface에 있는 인터페이스로 해당 패킷을 전송한다. 해당 행의 Destination 항목과 다르다면 다음 행으로 이동한다.

④ Iface 의 값이 'lo'로 되어 있는 것은, 이 Host의 루프백 데이터를 처리하기 위한 설정이다. 즉, 자기 자신에게 데이터를 보낼 때 처리를 담당하는 인터페이스를 의미한다.

 

필드 설명)

  • Destination : 목적지 네트워크 주소
  • Gateway : 목적지로 가기 위한 게이트웨이 주소
  • Genmask : 목적지 네트워크의 넷마스크 주소 (패킷의 목적지 IP 주소와 Genmask 값을 'AND 연산'한 결과가 해당 패킷이 이동할 다음 목적지 IP 주소가 된다.)
  • Flags : 해당 경로에 대한 정보를 알려주는 기호
     - U : 해당 경로 유효
     - H : 해당 경로가 호스트를 향하고 있음. (Destination의 IP가 Host임을 나타냄.) 즉, 라우터를 거치지 않아도 됨.
     - G : 해당 경로가 게이트웨이를 향하고 있음. 즉, 해당 Destination 으로 가려면, 라우터를 통과해야한다는 의미.
     - I : 해당 경로 무효
  • Metric : 다음 라우터까지의 거리
  • Ref : 경로를 참조한 횟수
  • Use : 경로를 탐색한 횟수
  • Iface : 패킷이 오가는 데 사용하게 될 네트워크 인터페이스

5. ss (Socket Statistics)

: 리눅스 시스템의 소켓 상태를 조회할 수 있는 유틸리티. netstat와 비슷한 역할을 수행하나, 최근 리눅스 배포판에서는 netstat보다는 ss 사용을 권장하고 있음

 

옵션)

- a : 모든 소켓을 표시 [--all]

- l : 접속 대기 상태 소켓만 표시 [--listening]

- n : 호스트 DNS명이 아닌 IP Address 형태로 표시 [--numeric]

- t : TCP 소켓만 표시 [--tcp]

- u : UDP 소켓만 표시 [--udp]

- x : UNIX 도메인 소켓을 표시 [--unix]

- p : 포로세스명을 표시 [--process]

- s : 각 프로토콜의 통계 정보를 표시 [--summary]

 

$ ss

ss 결과 화면

결과 설명)

  • Netid : 프로토콜명.
  • State : 소켓 상태
  • Recv-Q : 수신 실패 데이터 바이트 수
  • Send-Q : 송신 실패 데이터 바이트 수
  • Local Address:Port :  소켓에 연결된 경로명 또는 로컬 호스트명(IP 주소)와 포트 번호
  • Peer Address:Port : 원격 호스트 호스트명(IP 주소)와 포트 번호

참고

https://jaemunbro.medium.com/linux-network-%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%EA%B0%80%EC%9D%B4%EB%93%9C-for-beginners-b167d5175ef8

 

[Linux] 네트워크 트러블슈팅 가이드

늘 네트워크를 활용하고 있기는 하지만 네트워크의 개념과 설비가 방대하기 때문에 전체적으로 이해하기는 쉽지 않은 분야이다.  네트워크 이슈가 생겼을때 대응할 수 있는 기본적인 원인 파

jaemunbro.medium.com

https://websecurity.tistory.com/103

 

리눅스(Linux) netstat 명령어 사용법, 네트워크 상태 확인하기

netstat네트워크 연결상태, 라우팅테이블, 인터페이스 상태등을 보여주는 명령어[사용법]#> netstat [옵션] [옵션]옵션 설명-a모든 네트워크 상태 출력 [-all]-c현재 실행 명령을 매 초마다 실행 [--continu

websecurity.tistory.com

https://deadheromaybewantsomething.tistory.com/30

 

라우팅 테이블에 대해서

라우팅 테이블 route 혹은 netstat라는 명령어를 사용해 라우팅 테이블을 확인할 수 있다. [root@was01 ~]# route Kerenl IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 * 255.255.255.0 U 0 0 0 eth0

deadheromaybewantsomething.tistory.com

https://www.lesstif.com/lpt/linux-socket-ss-socket-statistics-91947283.html

 

linux socket 상태를 조회하는 ss(socket statistics) 명령어 사용법

 

www.lesstif.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기