강좌
클라우드/리눅스에 관한 강좌입니다.
네트워크 분류

동일 네트워크내에 존재하는 호스트 정보(IP, MAC주소) 파악하기(arp강좌)

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

동일 네트워크내에 존재하는 호스트 정보(IP, MAC주소) 파악하기(arp강좌)

 

 

 

 

 

 네트워크를 어느정도 접해본 분이라면 arp에 대한 내용은 너무나 잘 알고 있을 것이다.

 

 

 

 

 시스템관리자가 알아야할 최소한의 네트워크 실무지식이 반드시 필요하기 때문이다.

 

 

 

 

 

현재 우리가 운용하고 있는 어떤 시스템이라도 일단 통신상에 연결되어 있다면 반드시 특정 네트워크내에 속해있다.

 

 

 

 우리는 가끔씩 내가 운영하는 현재의 리눅스시스템이 속해있는 네트워크내에 어떤 다른 시스템(혹은 호스트, 서버등)이 존재할까?”라는 의문을 가질때가 있다.

 

 

 

 , 특정 네트워크내에 어떤 호스트들이 존재하는가를 확인할 수 있는 것이 바로 arp라는 명령어이다.

 

 

 

  , “arp”“Address Resolution Protocol”의 약어로서 동일한 네트워크내에 존재하는 호스트들의 IP주소와 ethernet주소(MAC주소)를 확인하는 명령어이다.

 

 

 

 

 

좀 더 구체적으로 표현하면  리눅스시스템의 /proc/net/arp에 보관된 ARP관련 정보를 참조하여 동일네트워크내의 호스트에 대한 IP주소와 ethernet주소(MAC주소) 정보를 출력하는 역할을 한다.

 

 

 

  이 명령어를 이용하면 DHCP서버에서 DHCP클라이언트에게 유동IP주소를 할당해주기 위하여 DHCP클라이언트의 MAC주소를 확인할 수도 있고, 현재 내가 존재하는 네트워크내에 존재하는 호스트들의 정보들도 확인할 수 있다.

 

 

 

 

 

이런 arp명령어를 이용하면서 우리는 ARP(Address Resolution Protocol) RARP(Reverse Address Resolution Protocol)에 대한 기본적인 이해가 필요할 것이다.

 

 

 

  잠깐 이에 대해 설명하도록 하겠다.

 

 

 

 

 

우리가 가장 흔하게 사용하는 SSH, FTP또는 WWW등의 모든 인터넷 서비스들을 이용하여 다른 서버와 통신할 때에 일반적인 사람들은 서버의 IP주소를 가지고 통신한다고 생각하고 있다.

 

 

 

  맞는 말이다.

 

 

 

  하지만 실제 하드웨어적인(물리적인)관점에서의 실제 통신은 IP주소를 이용하는 것이 아니라 ethernet주소(MAC주소, HW address)라고 하는 것을 이용하여 실제 통신이 이루어진다.

 

 

 

  ,  ARP라는 프로토콜을 이용하여 IP주소를 ethernet주소(MAC주소, HW address)로 매칭한 후에 실제 통신은 ethernet주소를 통하여 이루어 진다는 것이다.

 

 

 

 

 

잘 알다시피 IP주소도 유일하지만 ethernet주소(MAC주소)또한 유일하기 때문에 중복으로 인한 통신장애는 발생하지 않는다.

 

 

 

 하지만 ethernet에 할당하는 IP주소는 다른 IP주소로 바뀔 수가 있지만, Ethernet주소(MAC주소)는 생산할 때 한번 정해진 이후에는 절대 바뀌는 일이 없다.

 

 

 

 , ethernet카드를 생산하는 모든 업체들의 제품들은 전 세계적으로 유일하게 지정되기 때문에 MAC주소는 절대 중복될 수 없다.

 

 

 

 

 

따라서 정확한 통신이 이루어지기 위해서는 ethernet주소(MAC주소)와 매칭되는 IP주소를 알아야 하며 이를 위하여 우리가 알고 있는 IP주소를 ethernet주소(MAC주소)로 변경시켜주는 역할을 바로 ARP(Address Resolution Protocol)가 한다는 것이다.

 

 

 

 

 

그리고 이와는 반대로 ethernet주소(MAC주소)를 가지고 IP주소와 매칭시키는 과정을 RARP(Reverse Address Resolution Protocol)라고 한다.

 

 

 

 

 

IPv4에서 IP 데이터 전체구조에서 보면 IP주소는 32 bit로 구성되어있으며 이와 매칭되는 ethernet주소( MAC주소) 48 bit로 구성되어 있다.

 

 

 

 

 

, ARP로 상대방의 MAC주소와 매칭하는 간단한 과정은 다음과 같다.

 

 

 

 

 

통신을 원하는 서버에서 현재 네트워크내의 모든 서버들에게 "ARP Request"라고 하는 패킷을 송신한다.

 

 

 

 그리고 이 패킷에는 통신하고자 하는 IP주소가 포함되어 있으며 이 패킷을 받은 호스트들 가운데 해당 IP주소에 해당하는 호스트는 자신의 ethernet주소(MAC주소)를 송신한 서버에게로 보내게 되는데 이를 "ARP Reply"라고 한다.

 

 

 

 

 

이렇게 두 서버간의 ARP를 이용한 통신대상서버의 확인이 완료되면 이후부터는 IP주소가 아닌 ethernet주소를 이용하여 SSH,  FTP,  WWW등의 통신이 이루어지게 되는 것이다.

 

 

 

 

 

리눅스시스템에는 /sbin/arp라는 명령어형식으로 존재하는 arp명령어로 이런 작업을 할 수 있다.

 

 

 

 다음은 리눅스시스템에서 사용하는 arp명령어의 간략한 용도를 정리한 것이다.

 

 

 

 

 

arp  -a 

 

 

ARP캐쉬테이블에 저장되어 있는 모든 호스트정보 출력한다.

 

 

 

 

 

arp  -s 

 

 

ARP캐쉬테이블에 저장된 특정IP에 대한 MAC주소를 변경한다.

 

 

 

 

 

arp  -d 

 

 

ARP 캐쉬테이블에 저장된 특정 MAC주소를 삭제한다.

 

 

 

 

 

arp  -i 

 

 

지정한 ethenet ARP를 보여준다.

 

 

 

 

 

arp  -n 

 

 

Resolving을 하지 않은 IP주소로 출력한다.

 

 

 

 

 

arp  -t 

 

 

HW타입(ethernet타입)에 맞는 호스트 정보만을 확인한다.

 

 

 

 

 

이외에도 arp  -v는 자세한 모드(verbose)로 출력결과를 표시해준다.

 

 

 

 

 

리눅스시스템에는 arp캐쉬정보라는 데이터가 있다.

 

 

 

 arp캐쉬정보에는 현재 시스템에서 보관하고 있는 IP주소와 MAC주소들이 저장되어 있다.

 

 

 

 이런 캐쉬정보들은 시스템의 통신상황에 따라서 종종 변경된다.

 

 

 

 

 

첫번째로서 IP주소로 MAC주소를 찾는 방법에 대한 arp사용예이다.

 

 

 

 리눅스시스템의 /proc/net/arp파일에는 현재 동일 네트워크 내에 존재하는 호스트들의 IP주소와 MAC주소(ethernet주소), 그리고 기본 H/W정보타입 등이 저장되어 있다.

 

 

 

 아래의 예는 현재 필자의 리눅스시스템의 /proc/net/arp파일의 예이다.

 

 

 

 

 

[root@sulinux ~]# cat /proc/net/arp

IP address       HW type     Flags       HW address            Mask     Device

192.168.0.158    0x1         0x2         00:1A:92:93:B7:B6     *        eth0

192.168.0.100    0x1         0x2         00:C0:26:27:E5:CB     *        eth0

192.168.0.1      0x1         0x2         00:0F:EA:91:22:F0     *        eth0

192.168.0.155    0x1         0x2         00:21:00:22:2A:50     *        eth0

[root@sulinux ~]#

 

 

 

, 리눅스의 arp명령어는 /proc/net/arp파일을 참조하여 현재 서버와 동일 네트워크에 존재하는 호스트(서버)들의 IP정보와 MAC주소(ethernet주소, 위의 예에서는 HW address)에 관한 정보를 출력한다.

 

 

 

 

 

앞에서 예로든 /proc/net/arp파일에서 HW address부분이 ethernet주소로서 IP주소 192.168.0.158에 해당하는 ethernet주소가 “00:1A:92:93:B7:B6”이다.

 

 

 

  , IP주소와 마찬가지로 유일하게 식별되는 이 MAC주소를 가지고 실제 통신이 이루어진다는 의미이다.

 

 

 

 

 

, 이번에는 arp명령어를 이용하여 동일 네트워크내에 존재하는 호스트들에 대한 ethernet주소정보를 확인해 보도록 하자. arp명령어를 현재 시스템에서 실행한 것이다.

 

 

 

  arp명령어를 실행한 필자의 시스템에는 한개의 ethernet이 있다.

 

 

 

 , eth0가 그것이다.

 

 

 

 

 

[root@sulinux ~]# arp

Address                  HWtype  HWaddress           Flags Mask            Iface

192.168.0.100            ether   00:C0:26:27:E5:CB   C                     eth0

192.168.0.1              ether   00:0F:EA:91:22:F0   C                     eth0

192.168.0.155            ether   00:21:00:22:2A:50   C                     eth0

192.168.0.158            ether   00:1A:92:93:B7:B6   C                     eth0

[root@sulinux ~]#

 

위의 결과는 현재 시스템의 동일한 네트워크 내에 존재하는 호스트들 가운데 arp호출로 확인한 호스트들이 모두 4개가 있음을 알 수 있으며 그 각각의 호스트들에 대한  IP주소와 ethernet주소(HW address, MAC주소)를 알 수가 있다.

 

 

 

 

 

이번에는 arp를 이용하여 특정 호스트의 ethernet주소를 확인해보도록 하겠다.

 

 

 

  , 이번에는 특정 호스트에 대한 arp명령의 실행결과를 나타내고 있다.

 

 

 

  , 현재 필자가 사용하고 있는 시스템에서 192.168.0.155시스템에 대한 arp명령의 결과를 확인한 것이며 그 시스템의 호스트명과 ethernet주소(HW address, MAC주소)를 알 수 있다.

 

 

 

 

 

[root@sulinux ~]# arp 192.168.0.155

Address                  HWtype  HWaddress           Flags Mask            Iface

192.168.0.155            ether   00:21:00:22:2A:50   C                     eth0

[root@sulinux ~]#

 

 

 

 

위의 결과 192.168.0.155호스트에 대한 하드웨어정보(MAC주소), 사용인터페이스 정보(eht0)를 확인할 수 있다.

 

 

 

 

 

다음은 arp명령어에 -a옵션을 사용하여 IP주소대신 특정 서버의 도메인명을 지정한 것이다.

 

 

 

 , su20.sulinux.net이라는 시스템의 정보를 확인하기 위해 arp명령어에 -a옵션을 사용한 결과를 나타낸 것이다.

 

 

 

 

 

[root@sulinux ~]# arp -a su20.sulinux.net

su20.sulinux.net (192.168.0.100) at 00:C0:26:27:E5:CB [ether] on eth0

[root@sulinux ~]#

 

 

 

 

위의 결과로 알 수 있는 것은 su20.sulinux.net서버의 IP주소와 ethernet주소 그리고 eth0 ethernet과 통신이 된다는 것을 알 수 있다.

 

 

 

 

 

다음의 예는 “arp -a”의 결과를 나타낸 것이다.

 

 

 

  즉 특정 호스트나 IP주소를 지정하지 않았을 경우에는 아래의 예와 같이 현재 서버와 동일한 네트워크 내에 존재하는 모든 호스트들에 대한 정보를 확인할 수 있다.

 

 

 

 아래의 결과와 같이 현재 필자의 시스템에는 ethernet(랜카드)이 한개 존재하므로 한개의 네트워크 내에 존재하는 호스트들에 대한 정보를 eth0으로 구분하여 확인할 수 있다.

 

 

 

 

 

[root@sulinux ~]# arp -a

su20.sulinux.net (192.168.0.100) at 00:C0:26:27:E5:CB [ether] on eth0

? (192.168.0.1) at 00:0F:EA:91:22:F0 [ether] on eth0

? (192.168.0.155) at 00:21:00:22:2A:50 [ether] on eth0

? (192.168.0.158) at 00:1A:92:93:B7:B6 [ether] on eth0

[root@sulinux ~]#

 

 

 

그리고 다음은 특정 IP주소를 지정하여 -a옵션을 사용한 결과이다.

 

 

 

 

 

[root@sulinux ~]# arp -a 192.168.0.100

su20.sulinux.net (192.168.0.100) at 00:C0:26:27:E5:CB [ether] on eth0

[root@sulinux ~]#

 

 

 

 

그리고 참고로 다음 내용도 알아 두면 좋을 것 같다.

 

우리가 사용하고 있는 윈도우 시스템에서도 arp라는 명령어를   사용할 수 있다.

 

다음은 윈도우PC에서 arp를 사용한 예이다.

 

 

 

C:\Users\admin>arp -av

 

인터페이스: 127.0.0.1 --- 0x1

  인터넷 주소           물리적 주소           유형

  224.0.0.2                                   정적

  224.0.0.22                                  정적

  224.0.0.251                                 정적

  219.192.8.10                                정적

  219.193.8.10                                정적

  219.255.255.250                             정적

  219.255.255.253                             정적

 

인터페이스: 192.168.19.210 --- 0x5

  인터넷 주소           물리적 주소           유형

  192.168.0.1          00-00-00-00-00-00     잘못됨

  192.168.0.71         00-00-00-00-00-00     잘못됨

  192.168.0.92         00-00-00-00-00-00     잘못됨

  192.168.0.93         00-00-00-00-00-00     잘못됨

  192.168.0.100        00-00-00-00-00-00     잘못됨

  192.168.0.111        00-00-00-00-00-00     잘못됨

  192.168.0.140        00-00-00-00-00-00     잘못됨

  192.168.0.155        00-00-00-00-00-00     잘못됨

  192.168.0.164        00-00-00-00-00-00     잘못됨

  192.168.0.201        00-00-00-00-00-00     잘못됨

  192.168.0.252        00-00-00-00-00-00     잘못됨

  192.168..255        ff-ff-ff-ff-ff-ff     정적

  224.0.0.2             02-00-7e-00-00-02     정적

  224.0.0.22            02-00-7e-00-00-16     정적

  224.0.0.251           02-00-7e-00-00-fb     정적

  224.0.0.252           02-00-7e-00-00-fc     정적

  219.192.8.10          02-00-7e-40-08-0a     정적

  219.193.8.10          02-00-7e-41-08-0a     정적

  219.255.255.250       02-00-7e-7f-ff-fa     정적

  219.255.255.253       02-00-7e-7f-ff-fd     정적

 

인터페이스: 192.168.19.111 --- 0x8

  인터넷 주소           물리적 주소           유형

  192.168.0.1          64-e5-99-a5-96-40     동적

  192.168.0.71         e0-be-03-35-f0-39     동적

  192.168.0.92         f8-28-19-6c-66-c9     동적

  192.168.0.93         e0-9d-31-d5-ba-92     동적

  192.168.0.100        70-8b-cd-a5-c6-cc     동적

  192.168.0.140        00-00-00-00-00-00     잘못됨

  192.168.0.155        28-ad-18-c4-a6-82     동적

  192.168.0.164        00-00-00-00-00-00     잘못됨

  192.168.0.201        08-00-27-17-d5-cb     동적

  192.168.0.251        00-24-73-92-d4-d5     동적

  192.168.0.252        f8-0d-60-eb-ee-68     동적

  192.168.0.255        ff-ff-ff-ff-ff-ff     정적

  224.0.0.2             02-00-7e-00-00-02     정적

  224.0.0.22            02-00-7e-00-00-16     정적

  224.0.0.251           02-00-7e-00-00-fb     정적

  224.0.0.252           02-00-7e-00-00-fc     정적

  219.192.8.10          02-00-7e-40-08-0a     정적

  219.193.8.10          02-00-7e-41-08-0a     정적

  219.255.255.250       02-00-7e-7f-ff-fa     정적

  219.255.255.253       02-00-7e-7f-ff-fd     정적

 

C:\Users\admin>

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,032 명
  • 현재 강좌수 :  35,773 개
  • 현재 접속자 :  167 명