Embedded Linux

네트워크 관련 명령어(2) : ping

작성자 임베디드코리아 작성일24-11-29 22:38 조회596회 댓글0건
1. ping 명령
    ●  ping(Packet INternet Groper) 명령어는 네트워크 상태를 확인하는 명령어 이다.
    ●  ping 명령어는 네트워크 문제를 진단할 때 주로 사용되는 기본적인 도구이다.
    ●  특정 IP 주소나 도메인으로 패킷을 전송하여 그 응답 시간 및 패킷 손실 여부를 확인할 수 있다.
          -> 이를 통해 네트워크 연결 상태를 확인하거나, 연결이 느린지 또는 불안정한지를 분석할 수 있다.
    ●  ping 명령어는 ICMP 프로토콜 응답 확인 도구이며 호스트가 IP 네트워크에 연결 되는지 무한반복 테스트하는 명령어 이기도 하다.

          < 기본 형식 >        ping  <목적지_IP_또는_도메인>

          예 )  -c:  전송할 패킷 수를 지정한다.
                  기본적으로 ping은 무한히 패킷을 전송하므로, 원하는 수의 패킷만 보내고 종료하려면 -c 옵션을 사용한다.
                  $ ping  -c  4  google.com

        예 )  -i : 각 패킷 사이의 대기 시간을 설정한다. 기본값은 1초입니다
                  $ ping  -i  0.5  google.com

          예 )  -s: 패킷의 크기를 설정한다. 기본값은 56바이트이다.
                  $ ping  -s  100  google.com

2.  route  명령
      커널의 라우팅 테이블을 출력하거나 수정할 수 있다.
      라우팅 테이블은 "route" 명령어로 확인을 할 수 있다

        < 사용법 >    route  [add|del]  [-destination]  [netmask]  [gateway]  [dev interface]

    **< 라우팅 (Routing) >**
    ● 라우팅이란 한 네트워크에서 다른 네트워크로 패킷을 이동시키는 과정과 네트워크 안의 호스트에게 패킷들을 전달하는 과정이다.
    ● 리눅스 시스템은 미리 설정되어 있는 라우팅 테이블이라는 지도를 보고 패킷을 어떤 네트워크 인터페이스를 거쳐 목적지로 보낼지 결정한다.

        [ 옵션 ]
        ▪  -n, --numeric  :  IP주소를 숫자 형식으로 표시
                                        default 또는 gateway같은 문자 => 숫자  0.0.0.0 또는 172.17.0.1
        ▪  -e, --extend  :  라우팅 테이블의 추가 정보를 표시
        ▪  -C, --cache   :  라우팅의 캐시 정보를 표시
        ▪  -M, --masquerade :  라우팅 테이블의 포스트로크 링크에서 네트워크 주소를 대표하여 표시
        ▪  -F, --fib  :  Forwarding information Base를 표시
        ▪ -h, --help : 도움말을 표시
 
        < route 테이블의 정보와 설명 >
        $ sudo  route

          ►  Destination : 목적지 네트워크
          ►  Gateway : 목적지로 가기위한 게이트웨이 주소
          ►  Genmask : 목적지 네트워크의 넷마스크 주소 (목적지IP와 Genmask를 AND 연산한 결과가 목적지 네트워크임)
          ►  Flags  :  해당 경로에 대한 정보를 알려주는 기호
                            • U(up)는 이 경로가 살아있는 상태
                            •H(host)는 목적지가 호스트 주소라는 뜻
                            •G(gateway)는 게이트웨이를 향하는 경로를 의미
          ►  Metric  :  목적지 네트워크까지의 거리
          ►  Ref  :  경로를 참조한 횟수
          ►  Use  :  경로를 탐색한 횟수
          ►  IFace  :  네트워크 인터페이스

        예 )  네트워크 경로 추가  -->  route add -net [네트워크 대역] netmask [넷마스크] gw [게이트웨이 IP 정보]
              $ sudo  route add -net 192.168.15.0 netmask 255.255.255.0 gw 192.168.211.1
                 
        예 )  네트워크 경로 제거  -->  route del -net [네트워크 대역] netmask [넷마스크] gw [게이트웨이 IP 정보]
              $ sudo  route del  -net 192.168.15.0  netmask 255.255.255.0  gw 192.168.211.1

        예 )  호스트 경로 추가  -->  route  add  -host  [호스트IP]  gw [게이트웨이 IP 정보]  dev [인터페이스 정보]
                $ sudo  route  add  -host  192.168.15.10 gw 192.168.211.1  dev enp0s8

        얘 )  호스트 경로 추가  -->  route del  -host [호스트 IP]  gw [게이트웨이 IP 정보]  dev [인터페이스 정보]
                $ sudo  route  del  -host 192.168.15.10  gw 192.168.211.1  dev enp0s8

3.  netstat 명령
    ifconfig가 네트워크 인터페이스 환경에 대한 정보였다면 netstat은 네트워크 통계 정보라고 볼 수 있다.
    주로 사용되고 있는 포트가 어떤 것이 있는지 확인하기 위해서 이 명령어를 사용한다.

            < 기본 형식 >    netstat  [옵션]  [포트변호 or 서비스명]

          [ 옵션 ]
        ▪  -a  :  현재 다른 서버 또는 PC와 연결, 리스닝 되어있는 모든 포트 번호를 확인
        ▪  -n  :  현재 다른 서버 또는 PC와 연결되어 있는 포트 번호를 확인
        ▪  -l  :  LISTEN 상태인 서비스 포트를 보여줌
        ▪  -s  :  IP, ICMP, UDP 등 프로토콜별로 통계를 보여줌
        ▪  -u  :  UDP 프로토콜을 보여줌
        ▪    -t  :  TCP 프로토콜을 보여줌
        ▪  -c  :  1초 단위로 결과값을 연속적으로 보여줌
        ▪  -p [프로토콜]  :  해당 포트를 사용하는 프로그램과 프로세스ID(PID)를 보여줌
        ▪  -e  :  랜카드에서 송수신한 패킷의 정보를 확인
        ▪  -r  :  라우팅 테이블 확인과 연결되어 있는 포트 번호 확인

          ---< 상태값이 나타내는 의미 >---
          ▪ LISTEN  : 연결 요구를 기다리는 상태. 포트가 열려있음
          ▪ ESTABLISHED :  서로 연결되어 있는 상태
          ▪ SVN_SENT  : 클라이언트가 서버에 요구(SYN) 패킷을 보내고 연결을 요청한 상태
          ▪ SVN_RECV  : 서버가 클라이언트로부터 접속 요구(SYN)을 받아 클라이언트에게 응답(SYN/ACK)하였지만,
                                    아직 클라이언트에게 확인 메시지(ACK)는 받지 못한 상태
          ▪ FIN_WAIT1  : 클라이언트가 서버에게 연결을 끊고자 요청하는 상태
          ▪ FIN_WAIT2  : 서버가 클라이언트로부터 연결 종료 응답을 기다리는 상태 (서버가 클라이언트로부터 최초로 FIN을 받은 후,
                                    클라이언트에게 ACK를 주었을 때)
          ▪ TIME_WAIT  : 이미 해당 사이트와 연결이 종료되었거나 다음 연결을 위해 기다리는 상태
          ▪ CLOSE_WAIT  : 원격의 연결을 요청을 받고 연결이 종료되길 기다리는 상태
          ▪ LAST_ACK  : 연결이 종료되었고 승인을 기다리는 상태
          ▪ CLOSED  : 완전히 연결이 종료된 상태
          ▪ UNKNOWN  : 소켓의 상테를 알 수 없음

        예 )  모든 네트워크 연결 확인
                $ sudo  netstat  -a

        예 )  프로토콜 별로 출력 - TCP 만 확인하기
              $ sudo  netstat  -at

        예 )  프로토콜 별로 출력 - ㅕCP 만 확인하기
              $ sudo  netstat  -au

        예 )  대기 중인 네트워크 중 TCP 프로토콜만 출력
                $ sudo  netstat  -lntp

          예 )  LISTEN 상태인 포트만 출력하기
                $ sudo  netstat  -nap | grep  LISTEN

4.  nslookup 명령

5.  host 명령
    host 명령은 원격 시스템의 IP 주소를 조회한다는 면에서는 nslookup과 비슷하지만 시스템의 메일 핸들러도 보여준다.

6. dig 명령
dig 명령은 통신 중인 네임 서버, 쿼리 응답까지 소요되는 시간 등 원격 시스템 연결에 대한 여러 정보를 제공하며 문제 해결에 자주 사용된다.

7. nmap 명령
nmap 명령의 가장 일반적인 용도는 원격 시스템 탐지지만 로컬 시스템이 제공하는 서비스에 대해 보고하는 데도 사용할 수 있다. 다음 예제에서 로그인에 ssh를 사용할 수 있고 smtp가 이메일을 서비스하고 있고 웹사이트가 활성이며 ipp 인쇄 서비스가 실행 중임을 알 수 있다.