1. ping
: 대상 호스트(hostname or IP주소)로 ICMP(Internet Control Message Protocol)을 보내는 명령어
- 서비스가 안된다는 말을 들었을 때, 가장 먼저 해봐야 하는 command
- 해당 소프트웨어가 문제인지, 소프트웨어가 올라가 있는 호스트(서버) 자체의 문제인지 판단하기 위함
- 대상 호스트 자체가 살아 있다면 ping은 나가므로, ping이 나간다고 해서 해당 소프트웨어가 정상이라고 판단하지 말 것
$ ping [hostname]
또는
$ ping [IP address]
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까지 표시)
결과 설명)
- 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]
4. route
: Host의 Routing Table을 확인 및 설정하는 유틸리티.
* Routing Table : Router 가 특정 서브넷에서 다른 서브넷으로 패킷을 보낼 때 네트워크 노선(?)을 변환시키는데, 이때 활용하는 정보를 말한다.
- 네트워크 단의 문제를 확인할 때에는 'route -n' 을 사용하여 IP별로 패킷이 어떤 라우터로 거쳐가는지 확인할 수 있다.
$ 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
결과 설명)
- Netid : 프로토콜명.
- State : 소켓 상태
- Recv-Q : 수신 실패 데이터 바이트 수
- Send-Q : 송신 실패 데이터 바이트 수
- Local Address:Port : 소켓에 연결된 경로명 또는 로컬 호스트명(IP 주소)와 포트 번호
- Peer Address:Port : 원격 호스트 호스트명(IP 주소)와 포트 번호
참고
https://websecurity.tistory.com/103
https://deadheromaybewantsomething.tistory.com/30
https://www.lesstif.com/lpt/linux-socket-ss-socket-statistics-91947283.html
'Network' 카테고리의 다른 글
[네트워크] 방화벽(Firewall) (2) - 구성형태 (0) | 2022.01.12 |
---|---|
[네트워크] 방화벽(Firewall) (1) - 개념, 기능, 동작방식 (2) | 2022.01.11 |
[네트워크] IPv4 주소체계 - Classful / Classless, 서브넷팅 (2) | 2022.01.06 |
[네트워크] 로드밸런싱의 개념 및 기법 설명 (0) | 2022.01.04 |
[네트워크] 스위치의 종류 - Layer별 특징 (3) | 2022.01.03 |
최근댓글