ARP
1. 개요
1. 개요
ARP(Address Resolution Protocol)는 TCP/IP 네트워크에서 IP 주소를 물리적인 MAC 주소로 변환하는 통신 프로토콜이다. 이 프로토콜은 주로 이더넷과 같은 LAN(Local Area Network) 환경에서 사용되며, OSI 모델의 네트워크 계층(IP)과 데이터 링크 계층(MAC) 사이의 주소 매핑을 담당한다. 네트워크 상의 장치가 특정 IP 주소를 가진 호스트와 통신하려면, 최종적으로 프레임을 전송하기 위해 그 호스트의 MAC 주소를 알아야 한다. ARP는 바로 이 '주소 해석' 과정을 수행한다.
ARP의 기본 개념은 비교적 단순하다. 호스트 A가 호스트 B의 IP 주소는 알지만 MAC 주소를 모를 경우, 호스트 A는 네트워크에 브로드캐스트 방식으로 "이 IP 주소를 가진 호스트의 MAC 주소가 무엇인가?"라는 질의(ARP 요청)를 보낸다. 네트워크상의 모든 호스트가 이 요청을 받지만, 지정된 IP 주소를 가진 호스트 B만이 자신의 MAC 주소를 담은 ARP 응답을 유니캐스트로 회신한다. 이 과정을 통해 호스트 A는 호스트 B의 MAC 주소를 획득하고, 이후 통신에 사용한다.
ARP는 네트워크의 근본적인 동작을 가능하게 하는 핵심 프로토콜 중 하나이다. IPv4 네트워크에서 거의 필수적으로 동작하며, 라우터를 통한 다른 네트워크 간 통신에서도 최종 목적지가 아닌, 다음 홉(게이트웨이)의 MAC 주소를 찾는 데 사용된다. 그러나 ARP 프로토콜 자체는 인증 메커니즘을 갖추고 있지 않아, ARP 스푸핑과 같은 보안 공격에 취약한 단점도 있다.
프로토콜 계층 | 역할 | 관련 주소 |
|---|---|---|
네트워크 계층 (Layer 3) | 논리적 주소 지정, 경로 설정 | IP 주소 (예: 192.168.1.10) |
데이터 링크 계층 (Layer 2) | 물리적 주소 지정, 프레임 전송 | MAC 주소 (예: 00-1A-2B-3C-4D-5E) |
ARP의 역할 | Layer 3 주소(IP)를 Layer 2 주소(MAC)로 변환 | 두 계층 간의 매핑 제공 |
IPv6 환경에서는 ARP의 기능이 NDP(Neighbor Discovery Protocol)라는 프로토콜로 대체되었다. NDP는 ICMPv6 메시지를 활용하여 주소 해석을 수행하며, ARP의 기능 외에도 추가적인 네트워크 발견 기능을 제공한다.
2. ARP의 동작 원리
2. ARP의 동작 원리
ARP는 IP 주소를 MAC 주소로 변환하는 프로토콜이다. 이 변환 과정은 동일한 로컬 네트워크 내에서 두 호스트가 통신하기 위해 반드시 필요하다. 네트워크 계층에서 사용되는 논리적 주소인 IP 주소만으로는 최종 목적지에 데이터 프레임을 전달할 수 없으며, 실제 물리적 네트워크에서 장비를 식별하는 MAC 주소를 알아내야 한다. ARP는 이 '주소 해석' 과정을 담당한다.
ARP 동작은 크게 ARP 요청과 ARP 응답 두 단계로 이루어진다. 통신을 원하는 호스트(송신자)는 먼저 목표 IP 주소에 해당하는 MAC 주소를 모르는 상태이다. 이때 송신자는 네트워크에 브로드캐스트 방식으로 ARP 요청 패킷을 전송한다. 이 패킷은 "이 IP 주소를 가진 장비의 MAC 주소가 무엇인가?"라는 질문을 모든 호스트에 보내는 것이다.
요청을 받은 네트워크 내의 모든 호스트는 자신의 IP 주소와 요청 패킷에 담긴 목표 IP 주소를 비교한다. 일치하지 않는 호스트는 패킷을 무시한다. 반면, 목표 IP 주소를 자신이 가지고 있는 호스트(수신자)는 유니캐스트 방식으로 ARP 응답 패킷을 송신자에게 직접 회신한다. 이 응답 패킷에는 자신의 MAC 주소 정보가 담겨 있다.
이 과정에서 얻은 IP-MAC 주소 쌍은 효율적인 통신을 위해 ARP 캐시 테이블에 일정 시간 동안 저장된다. 이후 동일한 목적지로의 통신이 필요할 때는 이 캐시 테이블을 조회하여 다시 브로드캐스트를 수행하지 않고 바로 데이터를 전송할 수 있다. 캐시 테이블의 항목은 일정 시간(타임아웃)이 지나면 삭제되어 변경된 네트워크 정보를 반영할 수 있도록 한다.
2.1. ARP 요청(Request)
2.1. ARP 요청(Request)
ARP 요청은 IP 주소에 대응하는 MAC 주소를 찾기 위해 네트워크 상의 모든 장치에게 질의하는 브로드캐스트 패킷입니다. 이 요청은 일반적으로 특정 IP 주소를 가진 장치의 데이터 링크 계층 주소(MAC 주소)를 알지 못할 때 발생합니다. 예를 들어, 호스트 A가 호스트 B와 통신하려고 하지만 호스트 B의 MAC 주소를 자신의 ARP 캐시 테이블에서 찾을 수 없으면 ARP 요청을 시작합니다.
ARP 요청 패킷은 다음과 같은 주요 정보를 포함합니다.
* 발신자 MAC 주소 & IP 주소: 요청을 보내는 장치(호스트 A)의 주소입니다.
* 목표 IP 주소: MAC 주소를 알고 싶은 장치(호스트 B)의 IP 주소입니다.
* 목표 MAC 주소: 이 필드는 00:00:00:00:00:00(모두 0)으로 채워집니다. 이는 아직 알려지지 않았음을 의미합니다.
이 패킷은 이더넷 헤더의 목적지 MAC 주소를 FF:FF:FF:FF:FF:FF(브로드캐스트 주소)로 설정하여 전송됩니다. 따라서 동일한 네트워크 세그먼트 또는 브로드캐스트 도메인 내의 모든 장치가 이 패킷을 수신합니다.
네트워크의 모든 장치는 이 브로드캐스트 패킷을 처리합니다. 각 장치는 패킷 내의 "목표 IP 주소" 필드를 자신의 IP 주소와 비교합니다. 일치하지 않는 장치는 패킷을 무시합니다. 목표 IP 주소를 가진 장치(호스트 B)만이 ARP 응답을 통해 자신의 MAC 주소를 회신합니다. 이 과정을 통해 호스트 A는 호스트 B의 MAC 주소를 획득하고 자신의 ARP 캐시 테이블에 저장하여 향후 통신에 사용합니다.
2.2. ARP 응답(Reply)
2.2. ARP 응답(Reply)
ARP 요청을 수신한 장치는 자신의 MAC 주소가 요청된 IP 주소와 일치하는지 확인한다. 일치할 경우, 해당 장치는 ARP 응답 패킷을 요청을 보낸 장치로 직접 유니캐스트 전송한다.
ARP 응답 패킷에는 요청자의 IP 주소와 MAC 주소, 그리고 응답자의 IP 주소와 MAC 주소 정보가 포함된다. 주요 필드의 값은 다음과 같이 설정된다.
필드 | 값 |
|---|---|
발신자 MAC 주소 | 응답하는 장치의 MAC 주소 |
발신자 IP 주소 | 요청받은 IP 주소 (응답자의 IP) |
대상 MAC 주소 | ARP 요청을 보낸 장치의 MAC 주소 |
대상 IP 주소 | ARP 요청을 보낸 장치의 IP 주소 |
Opcode (작업 코드) | 2 (ARP 응답을 나타냄) |
요청 장치는 이 응답을 받아 자신의 ARP 캐시 테이블에 해당 IP 주소와 MAC 주소의 매핑 정보를 저장한다. 이후 해당 IP 주소로 향하는 패킷은 이제 캐시된 MAC 주소를 사용하여 이더넷 프레임으로 정확히 캡슐화되어 전송될 수 있다. 이 과정을 통해 네트워크 계층의 논리적 주소(IP 주소)와 데이터 링크 계층의 물리적 주소(MAC 주소)가 동적으로 연결된다.
2.3. ARP 캐시 테이블
2.3. ARP 캐시 테이블
ARP 캐시 테이블은 IP 주소와 MAC 주소의 매핑 정보를 일정 시간 동안 저장하는 장치의 메모리 내 테이블이다. 이 테이블은 네트워크 효율성을 극대화하기 위해 존재한다. 매번 통신이 필요할 때마다 ARP 요청을 브로드캐스트하면 네트워크에 불필요한 트래픽이 발생하고 통신 지연이 생기기 때문이다. 따라서 한 번 획득한 매핑 정보를 캐시에 저장해 두고, 이후 통신에서는 이 캐시를 먼저 조회하여 빠르게 목적지 MAC 주소를 결정한다.
ARP 캐시 테이블의 각 항목은 일반적으로 다음과 같은 정보를 포함하며, 일정 시간이 지나면 자동으로 삭제된다.
필드 | 설명 |
|---|---|
인터넷 주소 (Internet Address) | 호스트의 IP 주소 |
물리적 주소 (Physical Address) | 해당 IP 주소에 대응하는 MAC 주소 |
유형 (Type) | 항목의 유형 (동적/정적) |
TTL (Time To Live) | 항목의 남은 수명 또는 캐시 시간 |
캐시 항목의 유형은 크게 동적(Dynamic) 항목과 정적(Static) 항목으로 구분된다. 동적 항목은 ARP 요청과 ARP 응답을 통해 자동으로 학습되고 캐시되는 항목이다. 이 항목들은 보통 2분에서 20분 정도의 제한된 수명(TTL)을 가지며, 시간이 지나거나 시스템 재시작 시 삭제된다. 반면 정적 항목은 네트워크 관리자가 수동으로 설정한 항목으로, 시스템 재시작 후에도 유지되거나 영구적으로 남아 있다. 정적 항목은 ARP 스푸핑 공격을 방어하거나 특정 서버에 대한 안정적인 연결을 보장하기 위해 사용된다.
캐시 테이블의 내용은 운영체제별 명령어를 통해 확인하고 관리할 수 있다. 대표적으로 Windows나 리눅스 시스템에서 arp -a 명령을 사용하면 현재 캐시된 ARP 항목 목록을 볼 수 있다. 또한 arp -d 명령을 통해 특정 항목이나 전체 동적 항목을 캐시에서 수동으로 삭제하여 문제 해결에 활용하기도 한다.
3. ARP 패킷 구조
3. ARP 패킷 구조
ARP 패킷은 이더넷 프레임에 캡슐화되어 전송되며, 크게 이더넷 헤더와 ARP 메시지 본문으로 구성된다. 이더넷 헤더는 수신지와 발신지의 MAC 주소를 포함하며, 그 뒤에 이더넷 타입 필드(ARP의 경우 0x0806)가 붙어 이 프레임이 ARP 패킷임을 나타낸다.
ARP 메시지 본문은 네트워크 계층과 데이터 링크 계층의 주소 정보를 매핑하는 데 필요한 필드들로 이루어져 있다. 주요 필드는 다음과 같다.
필드 | 설명 |
|---|---|
하드웨어 타입 (HTYPE) | 네트워크 인터페이스 유형을 지정한다. 이더넷은 1이다. |
프로토콜 타입 (PTYPE) | 매핑하려는 네트워크 계층 프로토콜을 지정한다. IPv4는 0x0800이다. |
하드웨어 주소 길이 (HLEN) | MAC 주소의 길이를 바이트 단위로 지정한다. 이더넷은 6이다. |
프로토콜 주소 길이 (PLEN) | 프로토콜 주소(예: IP 주소)의 길이를 바이트 단위로 지정한다. IPv4는 4이다. |
오퍼레이션 (Operation) | 패킷의 유형을 지정한다. 요청(1) 또는 응답(2)이 일반적이다. |
발신지 하드웨어 주소 (SHA) | 발신지의 MAC 주소이다. |
발신지 프로토콜 주소 (SPA) | 발신지의 IP 주소이다. |
대상 하드웨어 주소 (THA) | 대상의 MAC 주소이다. 요청 시 일반적으로 00:00:00:00:00:00으로 채워진다. |
대상 프로토콜 주소 (TPA) | 찾고자 하는 대상의 IP 주소이다. |
이 구조는 IPv4와 이더넷 환경에 최적화되어 있다. HTYPE, PTYPE, HLEN, PLEN 필드는 서로 다른 네트워크 기술(예: 다른 데이터 링크 계층 프로토콜)에서도 ARP가 동작할 수 있도록 유연성을 제공한다. 오퍼레이션 필드는 ARP 요청 외에도 ARP 응답, RARP 요청 및 응답 등 다양한 메시지 유형을 구분하는 데 사용된다.
3.1. 이더넷 헤더
3.1. 이더넷 헤더
이더넷 헤더는 ARP 패킷이 같은 로컬 네트워크 내의 특정 장치에 정확히 전달되도록 하는 역할을 한다. 이 헤더는 OSI 모델의 데이터 링크 계층(2계층)에 해당하며, 패킷의 출발지와 목적지 MAC 주소 정보를 포함한다.
ARP 메시지는 이더넷 프레임의 페이로드(데이터 부분)에 실려 전송된다. 이더넷 헤더의 주요 필드는 다음과 같다.
필드 | 설명 |
|---|---|
목적지 MAC 주소 | ARP 요청 시에는 브로드캐스트 주소( |
출발지 MAC 주소 | ARP 패킷을 보내는 호스트의 MAC 주소를 담는다. |
이더타입(EtherType) | 페이로드에 실린 상위 프로토콜을 식별한다. ARP의 경우 값은 |
이더넷 헤더는 네트워크 카드나 스위치가 프레임을 처리하는 데 필요한 최소한의 정보를 제공한다. 특히 목적지 MAC 주소가 브로드캐스트 주소일 경우, 같은 네트워크 세그먼트에 연결된 모든 장치가 이 프레임을 수신하여 ARP 메시지를 처리하게 된다. 이 구조 덕분에 IP 주소를 아는 상태에서 대응하는 MAC 주소를 효율적으로 찾아낼 수 있다.
3.2. ARP 메시지 필드
3.2. ARP 메시지 필드
ARP 메시지는 이더넷 헤더 다음에 위치하며, 하드웨어 및 프로토콜 주소 정보와 수행할 작업을 지정하는 여러 필드로 구성되어 있다. 표준 ARP 메시지의 구조는 다음과 같다.
필드 이름 (길이) | 설명 |
|---|---|
하드웨어 타입 (2바이트) | 네트워크 액세스 계층의 주소 유형을 지정한다. 이더넷의 경우 값은 1이다. |
프로토콜 타입 (2바이트) | 네트워크 계층 주소의 프로토콜을 지정한다. IPv4의 경우 값은 0x0800이다. |
하드웨어 주소 길이 (1바이트) | 하드웨어 주소(예: MAC 주소)의 바이트 길이를 나타낸다. 이더넷은 6이다. |
프로토콜 주소 길이 (1바이트) | 네트워크 계층 주소(예: IP 주소)의 바이트 길이를 나타낸다. IPv4는 4이다. |
오퍼레이션 (2바이트) | ARP 메시지의 유형을 나타낸다. 요청은 1, 응답은 2가 일반적이다. RARP 요청/응답 등 다른 값도 존재한다. |
송신자 하드웨어 주소 (6바이트) | 메시지를 보내는 장치의 MAC 주소이다. |
송신자 프로토콜 주소 (4바이트) | 메시지를 보내는 장치의 IP 주소이다. |
대상 하드웨어 주소 (6바이트) | 목표 장치의 MAC 주소이다. 요청 시에는 일반적으로 0으로 채워진다. |
대상 프로토콜 주소 (4바이트) | 목표 장치의 IP 주소이다. 이 주소의 소유자를 찾는 것이 ARP 요청의 목적이다. |
이 구조에서 '하드웨어 타입'과 '프로토콜 타입' 필드는 ARP가 다양한 네트워크 기술(이더넷 외)과 프로토콜(IPv4 외)에 적용될 수 있도록 일반화된 설계를 반영한다. '오퍼레이션' 필드는 패킷이 ARP 요청인지 ARP 응답인지를 구분하는 가장 중요한 필드이다. 송신자 주소 필드는 요청 시 자신의 정보를 알리는 데 사용되며, 응답 시에는 요청에 대한 답변으로 송신자와 대상 필드의 정보가 채워진다.
4. ARP의 종류
4. ARP의 종류
ARP는 기본적인 주소 변환 기능 외에도 다양한 네트워크 환경과 요구 사항에 맞춰 여러 변형 형태로 사용된다. 주요 종류로는 Proxy ARP, Gratuitous ARP, Reverse ARP 등이 있다.
Proxy ARP는 한 네트워크 장치가 다른 장치를 대신하여 ARP 응답을 보내는 메커니즘이다. 이는 주로 서로 다른 서브넷에 위치한 호스트들이 동일한 물리적 네트워크에 있는 것처럼 통신해야 할 때 사용된다. 예를 들어, 라우터가 자신의 MAC 주소를 알려줌으로써, 발신 호스트가 목적지 호스트의 실제 MAC 주소를 알 필요 없이 라우터를 통해 패킷을 전송할 수 있게 한다. 이는 네트워크 구성을 유연하게 하지만, 불필요한 ARP 트래픽을 증가시킬 수 있다.
Gratuitous ARP는 네트워크 상의 다른 호스트들에게 자신의 IP 주소와 MAC 주소 쌍을 알리기 위해, 특정한 요청 없이 자발적으로 보내는 ARP 응답 패킷이다. 주로 두 가지 목적으로 사용된다. 첫째, 시스템이 부팅되거나 IP 주소가 변경되었을 때 자신의 주소 정보를 브로드캐스트하여 네트워크 내 다른 장치들의 ARP 캐시 테이블을 갱신한다. 둘째, IP 주소 충돌 감지에 사용된다. 만약 자신이 보낸 Gratuitous ARP에 대한 응답이 다른 장치로부터 돌아오면, 해당 IP 주소가 이미 사용 중임을 알 수 있다.
Reverse ARP (RARP)는 일반적인 ARP의 반대 과정을 수행한다. RARP는 자신의 MAC 주소는 알지만 IP 주소를 모르는 장치(예: 디스크리스 워크스테이션)가 서버에 질의하여 자신의 IP 주소를 얻어내는 데 사용되었다. 그러나 RARP는 기능이 제한적이어서 이후 BOOTP와 그 후속인 DHCP 프로토콜로 대체되었다.
종류 | 주요 목적 | 동작 방식 | 비고 |
|---|---|---|---|
Proxy ARP | 서브넷을 가로지르는 통신 용이화 | 라우터 등이 다른 호스트를 대신해 응답 | 네트워크 설계에 주의 필요 |
Gratuitous ARP | 주소 정보 알림 또는 충돌 감지 | 요청 없이 자발적인 ARP 응답 브로드캐스트 | 부팅 시 또는 주소 변경 시 발생 |
Reverse ARP (RARP) | MAC 주소로 IP 주소 획득 | 클라이언트가 서버에 자신의 IP 질의 | 현재는 DHCP로 대체됨 |
4.1. Proxy ARP
4.1. Proxy ARP
Proxy ARP는 네트워크 상의 한 장치가 다른 장치를 대신하여 ARP 응답을 보내는 기능이다. 일반적으로 서로 다른 물리적 네트워크 세그먼트에 위치한 호스트들이 마치 같은 네트워크에 있는 것처럼 통신할 수 있도록 중재하는 역할을 한다. 이 기법은 라우터나 특정 게이트웨이 장비에 의해 구현된다.
동작 원리는 다음과 같다. 호스트 A가 동일한 IP 서브넷에 속한다고 믿는 호스트 B의 MAC 주소를 요청하는 ARP 요청을 브로드캐스트하면, 두 호스트 사이에 위치한 라우터(또는 프록시 ARP 기능을 활성화한 장치)가 이 요청을 수신한다. 라우터는 자신의 라우팅 테이블을 확인하여 호스트 B가 자신의 다른 인터페이스를 통해 도달 가능함을 인지하고, 호스트 A에게 자신의 MAC 주소를 담은 ARP 응답을 회신한다. 결과적으로 호스트 A는 호스트 B의 MAC 주소 대신 라우터의 MAC 주소를 학습하게 되며, 이후 호스트 B로 보내는 모든 패킷은 우선 해당 라우터로 전송된다.
Proxy ARP의 주요 사용 사례와 특징은 다음과 같다.
사용 사례/특징 | 설명 |
|---|---|
서브넷 마스크 재구성 없이 네트워크 분할 | 기존 호스트들의 서브넷 마스크 설정을 변경하지 않고, 물리적 네트워크를 논리적으로 분할할 때 사용된다. |
모바일 IP 지원 | 이동 중인 호스트가 홈 에이전트를 통해 통신할 수 있도록 지원한다. |
단순한 라우팅 대체 | 복잡한 라우팅 프로토콜 설정 없이 기본적인 라우팅 기능을 제공할 수 있다. |
주된 단점 | ARP 테이블이 불필요하게 확대되고, 네트워크 문제 해결을 복잡하게 만들며, ARP 스푸핑 공격에 취약해질 수 있다. |
현대 네트워크에서는 명시적인 라우팅 구성과 서브네팅이 일반화되어 Proxy ARP의 사용이 줄어들었다. 그러나 특정 레거시 환경이나 모바일 IP와 같은 특수한 애플리케이션에서는 여전히 활용된다. 관리자는 이 기능이 의도치 않게 활성화되어 네트워크 동작에 혼란을 줄 수 있으므로 주의해야 한다.
4.2. Gratuitous ARP
4.2. Gratuitous ARP
Gratuitous ARP는 특정 호스트가 자신의 IP 주소와 MAC 주소 쌍을 네트워크 상의 모든 호스트에게 알리기 위해, 특정 수신자를 지정하지 않고 브로드캐스트 방식으로 보내는 ARP 패킷이다. 일반적인 ARP 요청과 달리, 이 패킷은 질문에 대한 응답을 기대하지 않는다. 주요 목적은 네트워크 내 다른 장치들의 ARP 캐시 테이블을 갱신하거나 중복 IP 주소를 감지하는 것이다.
주요 활용 사례는 다음과 같다. 첫째, IP 주소 변경 또는 네트워크 인터페이스 카드 교체 후, 다른 호스트들의 ARP 캐시를 새로운 MAC 주소로 갱신하여 통신 장애를 방지한다. 둘째, 시스템 부팅 시 또는 특정 간격으로 자신의 IP-MAC 쌍을 알려, 기본 게이트웨이와 같은 중요한 장치의 ARP 캐시에 자신의 정보가 항상 최신 상태로 유지되도록 한다. 셋째, 동일한 네트워크 세그먼트에 동일한 IP 주소를 사용하는 다른 호스트가 있는지 감지하는 데 사용된다. 만약 Gratuitous ARP를 보냈을 때 다른 호스트로부터 응답이 오면, IP 주소 충돌이 발생했음을 알 수 있다.
Gratuitous ARP 패킷의 구조는 일반적인 ARP 요청과 유사하지만, 몇 가지 특징이 있다. 송신자 프로토콜 주소(Sender Protocol Address)와 목표 프로토콜 주소(Target Protocol Address) 필드가 모두 송신자의 IP 주소로 동일하게 설정된다. 목표 하드웨어 주소(Target Hardware Address) 필드는 일반적으로 0으로 채워지거나, 브로드캐스트 MAC 주소(FF:FF:FF:FF:FF:FF)로 설정될 수 있다. 이 패킷은 목적지 MAC 주소를 브로드캐스트 주소로 설정하여 네트워크의 모든 노드에 전송된다.
4.3. Reverse ARP (RARP)
4.3. Reverse ARP (RARP)
Reverse ARP는 ARP의 반대 개념으로, 자신의 MAC 주소는 알지만 IP 주소를 모르는 장치가 자신의 IP 주소를 질의할 때 사용하는 프로토콜이다. 이는 디스크리스 워크스테이션이나 X 터미널과 같이 로컬 저장 장치가 없어 부트스트랩 과정에서 네트워크를 통해 운영체제와 설정 정보를 받아오는 장치에서 주로 활용되었다. 이러한 장치는 시스템 시작 시 자신의 MAC 주소는 알고 있지만, 네트워크에서 사용할 IP 주소를 할당받아야 했기 때문에 RARP 서버에 요청을 보냈다.
RARP의 동작 과정은 다음과 같다. IP 주소를 필요로 하는 클라이언트는 네트워크에 RARP 요청 패킷을 브로드캐스트한다. 이 패킷에는 자신의 MAC 주소가 담겨 있다. 네트워크 상에 존재하는 RARP 서버는 이 요청을 수신하고, 자신이 관리하는 MAC 주소와 IP 주소의 매핑 테이블을 확인한다. 테이블에서 요청자의 MAC 주소에 해당하는 IP 주소를 찾으면, 해당 IP 주소를 담은 RARP 응답 패킷을 유니캐스트로 클라이언트에게 회신한다. 이를 통해 클라이언트는 자신의 IP 주소를 획득한다.
RARP는 몇 가지 한계점으로 인해 현재는 거의 사용되지 않는다. RARP 서버가 MAC 주소와 IP 주소의 정적 매핑 테이블을 유지 관리해야 하므로 확장성이 떨어진다. 또한 IP 주소만을 제공할 뿐, 서브넷 마스크나 기본 게이트웨이 주소 같은 다른 중요한 네트워크 구성 정보는 알려줄 수 없다. 이러한 단점들로 인해 RARP는 이후 BOOTP와 그 후속 프로토콜인 DHCP에 의해 대체되었다. DHCP는 IP 주소를 포함한 다양한 네트워크 설정 정보를 동적으로 할당할 수 있어 훨씬 더 유연하고 강력한 기능을 제공한다.
5. ARP 스푸핑과 보안
5. ARP 스푸핑과 보안
ARP 스푸핑은 ARP 프로토콜의 신뢰 기반 설계 결함을 악용한 맨 인 더 미들 공격의 일종이다. 공격자는 네트워크 상에서 합법적인 호스트인 것처럼 위장하여 다른 호스트들의 ARP 캐시 테이블에 잘못된 MAC 주소 정보를 주입한다. 이로 인해 피해 호스트들은 의도된 통신 상대가 아닌 공격자에게 데이터를 전송하게 되고, 공격자는 이 트래픽을 훔쳐보거나 변조한 후 실제 목적지로 전달할 수 있다[1].
주요 방어 기법으로는 정적 ARP 항목 설정이 있다. 네트워크 관리자가 중요한 장치들(예: 기본 게이트웨이, 서버)의 IP 주소와 MAC 주소 매핑을 수동으로 ARP 테이블에 고정시켜, 동적 ARP 응답에 의해 테이블이 갱신되는 것을 방지한다. 그러나 이 방법은 대규모 네트워크에서는 관리 부담이 크다. 또 다른 방법으로는 ARP 검증이 있으며, 스위치 장비가 네트워크 포트를 통해 학습한 MAC 주소와 ARP 응답 패킷의 발신자 MAC 주소가 일치하는지 검사하여 불일치하는 패킷을 차단한다.
방어 기법 | 설명 | 장점 | 단점 |
|---|---|---|---|
정적 ARP | IP-MAC 매핑을 수동으로 설정하여 테이블 갱신을 막음 | 구현이 간단하고 효과적 | 대규모 네트워크에서 관리가 어려움 |
동적 ARP 검사(DAI) | 스위치가 ARP 패킷의 유효성을 검증하여 스푸핑 패킷 차단 | 네트워크 수준에서 자동 방어 | 지원하는 스위치 장비가 필요함 |
ARP 감시 소프트웨어 | 네트워크에서 비정상적인 ARP 트래픽을 탐지하고 경고 | 기존 장비 변경 없이 도입 가능 | 사후 대응적 성격이 강함 |
이 외에도 VPN이나 IPsec 같은 암호화 채널을 사용하면, 비록 ARP 테이블이 오염되더라도 가로챈 데이터의 내용을 해독할 수 없게 만든다. 최근의 네트워크 장비와 운영체제는 ARP 캐시 무결성 보호, 역방향 경로 전달 검사 같은 추가적인 보안 기능을 제공하기도 한다.
5.1. ARP 스푸핑 공격 원리
5.1. ARP 스푸핑 공격 원리
ARP 스푸핑은 공격자가 네트워크 상에서 합법적인 호스트인 것처럼 위장하여 ARP 프로토콜의 취약점을 악용하는 공격 기법이다. 이 공격은 ARP가 신뢰 기반으로 동작하며, 수신된 ARP 응답을 별도의 인증 없이 ARP 캐시 테이블에 갱신하는 특성을 이용한다. 공격자는 피해 호스트나 게이트웨이를 대상으로 위조된 ARP 응답 패킷을 지속적으로 전송하여, 피해자의 ARP 캐시 테이블에 잘못된 MAC 주소 정보(공격자의 MAC 주소)를 주입한다.
공격이 성공하면, 피해 호스트가 의도한 목적지(예: 다른 호스트나 인터넷 게이트웨이)로 보내는 모든 트래픽이 공격자의 MAC 주소를 향하게 된다. 결과적으로 공격자는 피해자의 트래픽을 중간에서 가로챌 수 있는 위치에 서게 되며, 이를 메인 인 더 미들 공격이라고 부른다. 공격자는 가로챈 트래픽을 단순히 스니핑하거나, 변조한 후 원래 목적지로 전달할 수도 있다. 네트워크 전체를 대상으로 게이트웨이의 MAC 주소를 위조하면 광범위한 트래픽을 감시하는 것이 가능해진다.
공격 유형 | 설명 | 목적 |
|---|---|---|
호스트 대상 스푸핑 | 공격자가 피해자 호스트에게 게이트웨이의 MAC 주소를 자신의 것으로 속인다. | 피해자의 외부(인터넷) 트래픽 탈취 |
게이트웨이 대상 스푸핑 | 공격자가 게이트웨이에게 특정 호스트의 MAC 주소를 자신의 것으로 속인다. | 특정 호스트로 향하는 트래픽 탈취 |
양방향 스푸핑 | 위의 두 방법을 동시에 사용하여 두 장치 간의 전체 세션을 가로챈다. | 완전한 메인 인 더 미들 공격 수행 |
이 공격은 로컬 영역 네트워크 내부에서 발생하기 때문에 외부 방화벽으로는 차단하기 어렵다. 또한 ARP 프로토콜 자체에 인증 메커니즘이 없어 지속적인 위조 패킷 전송만으로도 공격이 지속된다는 특징이 있다. 공격을 탐지하기 위해서는 네트워크에서 동일한 IP 주소에 대한 서로 다른 MAC 주소의 ARP 응답이 관찰되는지 모니터링하는 방법이 사용된다.
5.2. 방어 기법 (예: 정적 ARP, ARP 검증)
5.2. 방어 기법 (예: 정적 ARP, ARP 검증)
ARP 스푸핑 공격으로부터 네트워크를 보호하기 위해 여러 가지 방어 기법이 개발되어 사용된다. 가장 기본적인 방법은 정적 ARP 항목을 사용하는 것이다. 이 방법에서는 네트워크 관리자가 라우터나 주요 서버의 MAC 주소를 미리 알고, 클라이언트 장치의 ARP 캐시에 수동으로 등록한다. 이렇게 하면 장치는 ARP 응답을 수신하더라도 정적으로 설정된 주소를 우선시하므로, 공격자가 가짜 ARP 응답을 보내도 캐시가 갱신되지 않는다. 그러나 대규모 네트워크에서는 모든 장치의 주소를 관리하기 어렵고, 장치 변경 시 관리 부담이 커지는 단점이 있다.
보다 동적인 방어 방법으로는 ARP 검증 기능을 구현하는 것이 있다. 일부 네트워크 스위치는 포트 보안 기능의 일부로 ARP 패킷을 검사한다. 이 기법은 스위치가 각 포트에서 학습한 정당한 MAC 주소와 ARP 패킷의 송신자 MAC 주소를 비교한다. ARP 요청이나 응답 패킷의 송신자 MAC 주소가 해당 포트에 등록된 주소와 일치하지 않으면, 스위치는 그 패킷을 차단한다. 이를 통해 공격자가 다른 장치의 MAC 주소를 사칭하는 패킷을 보내는 것을 방지할 수 있다.
네트워크 수준에서는 ARP 감시나 동적 ARP 검사 같은 고급 스위치 기능을 활용할 수 있다. 이 기능들은 스위치가 네트워크의 모든 ARP 트래픽을 모니터링하고, IP-MAC 주소 바인딩의 신뢰성을 검증한다. 일반적으로 DHCP 서버의 로그를 참조하여 올바른 바인딩 정보를 구축하고, 이 정보와 일치하지 않는 ARP 패킷을 차단한다. 또한, 사설 VLAN을 구성하여 동일한 서브넷 내에서도 장치 간의 직접적인 통신을 제한함으로써 ARP 스푸핑 공격의 효과를 무력화할 수 있다.
방어 기법 | 설명 | 장점 | 단점 |
|---|---|---|---|
정적 ARP | ARP 캐시를 수동으로 설정하여 동적 갱신을 방지 | 구현이 간단하고 명확함 | 대규모 네트워크에서 관리가 어려움 |
ARP 검증 (포트 보안) | 스위치 포트별로 허용된 MAC 주소와 ARP 패킷을 비교 | 동적으로 주소 변조 공격 방지 | 스위치의 지원 기능 필요 |
동적 ARP 검사 (DAI) | 스위치가 DHCP 바인딩 테이블을 기준으로 ARP 패킷 신뢰성 검증 | 네트워크 전체적 보호, 자동화 가능 | 고급 스위치 기능 필요, 설정 복잡 |
ARP 감시 소프트웨어 | 호스트에 설치된 소프트웨어가 ARP 트래픽을 모니터링 및 이상 탐지 | 엔드포인트에서 직접 보호 | 호스트별 설치 및 관리 필요 |
이러한 기술적 방어와 함께, 암호화된 통신 채널(예: IPsec, TLS)을 사용하면 ARP 스푸핑으로 인한 메시지 가로채기 공격의 피해를 줄일 수 있다. 공격자가 통신 경로를 탈취하더라도 암호화된 내용을 해독하지 못하기 때문이다. 최선의 방어는 정적 설정, 네트워크 장비의 보안 기능, 엔드포인트 보호, 그리고 암호화를 조합하여 다층적으로 보안을 구성하는 것이다.
6. 관련 프로토콜
6. 관련 프로토콜
NDP(Neighbor Discovery Protocol)는 IPv6 환경에서 ARP의 역할을 대체하는 프로토콜이다. IPv4의 ARP가 이더넷과 같은 링크 계층 주소를 찾는 데 사용되었다면, NDP는 ICMPv6 메시지 타입을 활용하여 더욱 확장된 기능을 제공한다. NDP는 주소 해결(Address Resolution) 외에도 이웃 탐색, 자동 구성, 중복 주소 검출(DAD), 라우터 탐색 등의 작업을 수행한다. 이는 IPv6 네트워크가 더욱 자율적이고 효율적으로 운영될 수 있도록 설계된 특징이다.
InARP(Inverse ARP)는 주로 프레임 릴레이(Frame Relay)와 같은 비브로드캐스트 멀티액세스(NBMA) 네트워크에서 사용되는 프로토콜이다. 일반적인 ARP가 IP 주소를 알고 있을 때 해당 데이터 링크 계층 주소를 묻는 반면, InARP는 반대의 과정을 수행한다. 즉, 이미 알려진 데이터 링크 계층 주소(예: 프레임 릴레이의 DLCI)에 대응하는 IP 주소를 찾아내는 데 사용된다. 이는 가상 회선이 설정된 후 상대방의 네트워크 계층 주소를 동적으로 알아내어 라우팅 테이블을 구성하는 데 도움을 준다.
프로토콜 | 사용 환경 | 주요 목적 | 기반 프로토콜 |
|---|---|---|---|
IP 주소 → MAC 주소 변환 | 이더넷 프레임 내 직접 캡슐화 | ||
IPv6 / 다양한 링크 | 주소 해결, 이웃 탐색, 자동 구성 등 | ||
프레임 릴레이(NBMA) | 데이터 링크 주소(DLCI) → IP 주소 변환 | 프레임 릴레이 프레임 |
이러한 관련 프로토콜들은 서로 다른 네트워크 환경과 주소 체계에서 ARP가 수행하던 기본적인 주소 변환 기능을 계승하거나 확장한다. 각 프로토콜은 특정 네트워크 기술의 요구사항에 맞춰 발전되었으며, 현대적인 네트워크의 복잡한 구조를 지원하는 데 기여한다.
6.1. NDP (IPv6의 ARP 대체)
6.1. NDP (IPv6의 ARP 대체)
IPv6 환경에서는 ARP 프로토콜이 사용되지 않는다. 대신 NDP(Neighbor Discovery Protocol)가 같은 역할을 수행하며, 이는 ICMPv6 메시지 타입을 기반으로 동작한다.
NDP는 ARP의 핵심 기능인 IP 주소와 MAC 주소의 매핑을 담당하는 이웃 탐색(Neighbor Discovery) 기능을 제공한다. 구체적으로는 이웃 요청(Neighbor Solicitation, NS) 메시지와 이웃 광고(Neighbor Advertisement, NA) 메시지를 사용하여 주소를 확인한다. 예를 들어, 호스트가 특정 IPv6 주소의 MAC 주소를 알아내려면 해당 링크-로컬 범위에 멀티캐스트 형태로 NS 메시지를 전송하고, 대상 호스트는 NA 메시지로 자신의 MAC 주소를 회신한다.
NDP는 ARP의 단순한 주소 해결 기능을 넘어선 여러 향상된 기능을 포함한다. 주요 기능은 다음과 같다.
기능 | 설명 |
|---|---|
주소 자동 구성 | Stateless Address Autoconfiguration(SLAAC)을 통해 호스트가 네트워크 접두사를 자동으로 획득하고 주소를 생성한다. |
중복 주소 탐지 | Duplicate Address Detection(DAD)을 통해 새로 구성된 주소가 네트워크에서 고유한지 확인한다. |
라우터 탐색 | 호스트가 네트워크상의 기본 라우터를 발견하고 구성 정보를 얻는다. |
경로 재지정 | 라우터가 호스트에게 더 나은 첫 홉(next-hop)을 알려준다. |
이웃 도달 가능성 확인 | 캐시된 주소 매핑의 활성 상태를 지속적으로 모니터링한다. |
이러한 통합 설계로 인해 IPv6 네트워크에서는 ARP 브로드캐스트 폭풍이 사라지고, 보안성과 자동화 수준이 향상되었다. NDP의 메시지는 ICMPv6을 기반으로 하므로, 네트워크 관리자는 단일 프로토콜 스택을 통해 더 효율적인 관리를 할 수 있다.
6.2. InARP (Frame Relay)
6.2. InARP (Frame Relay)
InARP(Inverse ARP)는 Frame Relay와 같은 비브로드캐스트 다중접속(NBMA) 네트워크 환경에서 사용되는 주소 결정 프로토콜의 변형이다. 일반적인 ARP가 IP 주소를 기반으로 물리적 MAC 주소를 찾는 반면, InARP는 반대 방향으로 동작한다. 즉, 이미 알려진 데이터 링크 계층 주소(예: Frame Relay의 DLCI)를 사용하여 해당 링크와 연결된 원격 장치의 네트워크 계층 주소(예: IP 주소)를 동적으로 발견하는 데 사용된다.
Frame Relay 가상 회선이 설정되면 각 단말은 상대방의 DLCI(Data Link Connection Identifier)는 알지만, 그 DLCI가 매핑되는 원격지의 IP 주소를 모를 수 있다. 이때 InARP가 실행된다. 한 장치는 가상 회선을 통해 InARP 요청 패킷을 보내는데, 이 패킷에는 자신의 네트워크 주소와 대상의 DLCI가 포함된다. 요청을 받은 원격 장치는 InARP 응답 패킷으로 자신의 네트워크 주소를 회신한다. 이를 통해 양쪽 장치는 DLCI와 IP 주소의 매핑을 자동으로 학습하고 라우팅 테이블 또는 ARP 테이블을 갱신할 수 있다.
InARP의 주요 동작 과정은 다음 표와 같다.
단계 | 발신자 동작 | 수신자 동작 |
|---|---|---|
1 | Frame Relay 맵이 설정되면, 알려진 DLCI를 통해 InARP 요청 전송. 패킷에 자신의 IP 주소 포함. | InARP 요청 수신. 발신자의 IP 주소와 DLCI를 확인. |
2 | - | 자신의 IP 주소를 담은 InARP 응답을 동일 DLCI로 회신. |
3 | 응답을 수신하여 원격지 IP 주소와 로컬 DLCI를 매핑하여 테이블에 저장. | 응답을 발신하여 자신의 IP 주소와 발신자 DLCI를 매핑하여 테이블에 저장. |
이 프로토콜은 네트워크 관리자가 각 가상 회선에 대해 수동으로 주소 매핑을 구성할 필요를 줄여준다. 그러나 IPv6를 사용하는 현대 네트워크나 MPLS와 같은 다른 기술이 널리 보급되면서, Frame Relay와 함께 InARP의 실제 사용은 크게 줄어들었다.
7. 네트워크 문제 해결에서의 ARP
7. 네트워크 문제 해결에서의 ARP
네트워크 문제 해결 과정에서 ARP 동작 확인은 연결 문제의 근본 원인을 파악하는 핵심 단계이다. 주로 ARP 캐시 테이블의 상태를 점검하고, 필요한 경우 이를 조작하여 문제를 진단한다.
대부분의 운영 체제는 arp 명령어를 제공한다. Windows나 Linux에서 arp -a 명령을 실행하면 현재 시스템의 ARP 캐시 테이블에 저장된 IP 주소와 MAC 주소 매핑 목록을 확인할 수 있다. 이 목록에서 특정 호스트의 항목이 없거나, 잘못된 MAC 주소로 표시된다면 통신 문제의 원인이 될 수 있다. 잘못된 항목을 수동으로 삭제하려면 arp -d <IP 주소> 명령을 사용한다. 이 명령은 지정된 IP 주소에 대한 캐시 항목을 제거하여, 시스템이 다음 통신 시 새로운 ARP 요청을 보내도록 유도한다.
일반적인 ARP 관련 문제는 몇 가지 패턴으로 나타난다. 첫째, ARP 캐시 테이블에 목적지 호스트의 항목이 전혀 생성되지 않는 경우이다. 이는 물리적 연결 불량, 방화벽에 의한 ARP 패킷 차단, 또는 상대 호스트의 네트워크 인터페이스 비활성화 등을 의심해 볼 수 있다. 둘째, ARP 항목은 존재하지만 지속적으로 잘못된 MAC 주소를 가리키는 경우이다. 이는 ARP 스푸핑 공격이 진행 중이거나, 네트워크 내에 중복된 IP 주소가 존재할 가능성이 높다. 셋째, ARP 캐시 항목이 빈번하게 갱신되거나 불안정한 경우로, 네트워크 스위치의 포트 오류나 불안정한 케이블링을 원인으로 고려해야 한다.
이러한 문제를 해결하기 위해 네트워크 관리자는 패킷 캡처 도구를 사용해 실제 ARP 요청과 응답 패킷을 모니터링하기도 한다. 또한, 중요한 장비에 대해서는 정적 ARP 항목을 설정하여 캐시 테이블이 악의적으로 변경되는 것을 방지하는 방법을 사용한다.
7.1. ARP 명령어 사용법 (arp -a, arp -d)
7.1. ARP 명령어 사용법 (arp -a, arp -d)
대부분의 운영 체제는 네트워크 문제를 진단하고 관리하기 위해 arp 명령어를 제공합니다. 이 명령어는 ARP 캐시 테이블을 조회, 추가, 삭제하는 기능을 수행합니다. 주로 사용되는 옵션은 다음과 같습니다.
명령어 (Windows 기준) | 설명 |
|---|---|
| 현재 시스템의 ARP 캐시 테이블에 저장된 모든 항목을 조회한다. |
| 특정 IP 주소에 해당하는 ARP 캐시 항목만 조회한다. |
| ARP 캐시 테이블의 모든 동적 항목을 삭제한다. |
| 특정 IP 주소에 해당하는 ARP 캐시 항목만 삭제한다. |
| 특정 IP 주소와 MAC 주소를 정적으로 매핑하여 ARP 캐시에 추가한다. |
arp -a 명령을 실행하면 인터페이스별로 IP 주소, 물리적 주소(MAC), 그리고 항목의 유형(동적 또는 정적)이 표시됩니다. 동적 항목은 ARP 프로토콜을 통해 자동으로 학습된 것이며, 일정 시간이 지나면 캐시에서 제거됩니다. 정적 항목은 관리자가 수동으로 추가한 것으로, 시스템 재시작 전까지 또는 삭제 명령을 실행하기 전까지 유지됩니다.
arp -d 명령은 캐시 테이블을 비울 때 유용합니다. 예를 들어, 네트워크 카드를 교체한 호스트의 MAC 주소가 변경되었거나, ARP 스푸핑 공격이 의심되어 잘못된 매핑 정보를 삭제해야 할 때 사용합니다. 캐시를 삭제한 후 통신을 다시 시도하면 시스템은 필요한 MAC 주소를 얻기 위해 새로운 ARP 요청을 브로드캐스트하게 됩니다. 정적 항목을 삭제하려면 arp -d 명령에 특정 IP 주소를 지정해야 합니다.
7.2. 일반적인 ARP 관련 문제
7.2. 일반적인 ARP 관련 문제
ARP 캐시 테이블에 잘못된 또는 오래된 매핑 정보가 존재하는 경우 통신 장애가 발생할 수 있다. 이는 네트워크 인터페이스 카드의 MAC 주소 변경, IP 주소 충돌, 또는 ARP 스푸핑 공격으로 인해 빈번히 일어난다. 잘못된 엔트리는 패킷이 의도된 호스트가 아닌 다른 장치로 전송되게 하여 연결 실패를 초래한다.
IP 주소 충돌은 네트워크 내에서 동일한 IP 주소를 가진 두 개 이상의 장치가 존재할 때 발생한다. 이 경우 ARP 요청에 대한 응답이 여러 호스트로부터 올 수 있어, ARP 캐시 테이블이 불안정해지고 통신이 끊기거나 느려지는 현상을 보인다. DHCP 서버 설정 오류나 수동 IP 설정 실수가 주요 원인이다.
ARP 캐시 테이블의 엔트리는 일정 시간(타임아웃)이 지나면 자동으로 삭제된다. 만약 타임아웃 값이 너무 짧게 설정되어 있으면, 활발히 통신 중인 호스트의 매핑 정보도 자주 삭제되어 불필요한 ARP 요청이 반복적으로 발생한다. 이는 네트워크 성능 저하와 지연을 유발한다.
문제 유형 | 주요 증상 | 일반적인 원인 |
|---|---|---|
잘못된 ARP 캐시 | 특정 IP로의 연결 실패, 패킷 손실 | ARP 스푸핑, MAC 주소 변경, 수동 설정 오류 |
IP 주소 충돌 | 간헐적 연결 끊김, 네트워크 접속 불안정 | DHCP 서버 중복 범위, 동일 IP 수동 할당 |
ARP 캐시 타임아웃 | 주기적인 통신 지연, 네트워크 응답 속도 저하 | 시스템의 ARP 캐시 타임아웃 값이 너무 짧음 |
이러한 문제들은 arp -a 명령어로 ARP 캐시 테이블을 점검하고, arp -d 명령어로 문제가 의심되는 엔트리를 삭제한 후 통신을 재시도하는 방법으로 1차 진단을 할 수 있다. 지속적인 문제의 경우 네트워크 스니퍼를 사용한 ARP 트래픽 모니터링이나 정적 ARP 설정을 고려해야 한다.
