ARP란 무엇인가

ARP(Address Resolution Protocol)는 1982년 IETF의 RFC 826 문서를 통해 공식적으로 표준화된 네트워크 프로토콜로, TCP/IP 네트워크 환경에서 IP 주소를 기반으로 해당 IP에 대응하는 MAC 주소(물리적 주소)를 동적으로 찾아내는 주소 변환 프로토콜이며, OSI 7계층 모델에서 2계층(데이터 링크 계층)과 3계층(네트워크 계층) 사이의 경계에서 동작하여 논리적 주소(IP)와 물리적 주소(MAC)를 매핑하는 핵심 역할을 수행한다.

네트워크 통신에서 장치 간 실제 데이터 전송은 MAC 주소를 기반으로 이루어지는데, 상위 계층(네트워크 계층)에서는 IP 주소만 알고 있으므로 하위 계층(데이터 링크 계층)에서 패킷을 전송하기 위해서는 반드시 목적지의 MAC 주소를 알아야 하며, 이때 ARP가 IP 주소를 MAC 주소로 변환하는 과정을 담당한다. ARP는 브로드캐스트(broadcast) 방식으로 네트워크 내 모든 장치에게 질의를 보내고 해당 IP를 가진 장치만 응답하는 구조로 동작하며, 이더넷(Ethernet) 네트워크를 비롯한 대부분의 로컬 네트워크 환경에서 필수적으로 사용되는 프로토콜이다.

ARP의 역할과 필요성

ARP는 TCP/IP 네트워크 스택에서 다음과 같은 핵심 역할을 수행하며, 이는 네트워크 통신이 정상적으로 이루어지기 위한 필수 요소다.

  1. IP 주소를 MAC 주소로 변환

    • 3계층(네트워크 계층)의 논리적 주소인 IP를 2계층(데이터 링크 계층)의 물리적 주소인 MAC으로 매핑
    • 라우터, 스위치, 호스트 등 모든 네트워크 장치가 실제 통신을 위해 필요
  2. 네트워크 내에서 직접 통신 가능한 장치 식별

    • 동일한 서브넷(브로드캐스트 도메인) 내의 장치들 간 직접 통신 지원
    • 라우터를 거치지 않고 직접 연결된 장치들 사이의 효율적인 패킷 전송 가능
  3. ARP 캐싱을 통한 성능 최적화

    • 한 번 학습한 MAC 주소를 메모리(ARP 캐시)에 저장하여 반복적인 브로드캐스트 요청 방지
    • 네트워크 트래픽 감소와 응답 시간 단축으로 전체 네트워크 성능 향상
  4. 중복된 IP 충돌 감지 (Gratuitous ARP 사용)

    • 호스트가 네트워크에 참여할 때 자신의 IP 주소가 이미 사용 중인지 확인
    • IP 주소 충돌 방지 및 네트워크 안정성 보장
  5. 라우터와 게이트웨이 발견

    • 기본 게이트웨이(default gateway)의 MAC 주소 학습을 통해 외부 네트워크 통신 가능
    • 서브넷 외부로 나가는 모든 패킷이 라우터의 MAC 주소로 전송되도록 지원

ARP의 OSI 계층 위치

ARP는 OSI 7계층 모델에서 독특한 위치를 차지하는데, 공식적으로는 2.5계층 프로토콜로 간주되며, 2계층(데이터 링크 계층)의 이더넷 프레임 내에 캡슐화되지만 3계층(네트워크 계층)의 IP 주소를 사용하여 두 계층을 연결하는 브리지 역할을 한다.

계층별 역할:

  • 3계층 (네트워크 계층): IP 패킷 생성, 논리적 주소 지정, 라우팅 결정
  • ARP (2.5계층): IP 주소 → MAC 주소 변환
  • 2계층 (데이터 링크 계층): 이더넷 프레임 생성, 물리적 주소 지정, 스위칭

ARP 패킷은 IP 패킷 내에 캡슐화되지 않고 직접 이더넷 프레임에 캡슐화되며, 이더넷 프레임의 EtherType 필드에 0x0806 값을 사용하여 ARP 프로토콜임을 명시한다.

ARP 패킷 구조

ARP 패킷 구조

ARP 패킷은 28바이트의 고정된 크기를 가지며, 이더넷 프레임 내에 직접 캡슐화되어 전송된다.

이더넷 프레임 헤더 (14바이트):

  • 목적지 MAC 주소 (6바이트): ARP 요청은 FF:FF:FF:FF:FF:FF (브로드캐스트), ARP 응답은 특정 MAC 주소
  • 출발지 MAC 주소 (6바이트): 요청 또는 응답을 보내는 장치의 MAC 주소
  • EtherType (2바이트): 0x0806 (ARP 프로토콜 식별자)

ARP 패킷 필드 (28바이트):

  • Hardware Type (2바이트): 하드웨어 주소 타입, 0x0001 (이더넷)
  • Protocol Type (2바이트): 프로토콜 주소 타입, 0x0800 (IPv4)
  • Hardware Length (1바이트): MAC 주소 길이, 6바이트
  • Protocol Length (1바이트): IP 주소 길이, 4바이트
  • Operation (2바이트): 동작 코드, 1 (ARP 요청), 2 (ARP 응답)
  • Sender Hardware Address (6바이트): 송신자의 MAC 주소
  • Sender Protocol Address (4바이트): 송신자의 IP 주소
  • Target Hardware Address (6바이트): 수신자의 MAC 주소, 요청 시 00:00:00:00:00:00
  • Target Protocol Address (4바이트): 수신자의 IP 주소

이더넷 프레임은 최소 60바이트 크기를 요구하므로, ARP 패킷(14 + 28 = 42바이트)은 18바이트의 패딩(padding)이 추가되어 전송되며, 프레임 끝에는 4바이트의 FCS(Frame Check Sequence)가 추가되어 총 64바이트 이더넷 프레임이 구성된다.

ARP 동작 과정

ARP 요청-응답 흐름

ARP는 2단계 프로세스(요청-응답)로 동작하며, 브로드캐스트 요청과 유니캐스트 응답의 조합으로 이루어진다.

1. ARP 요청 (ARP Request)

호스트 A(192.168.1.10)가 호스트 B(192.168.1.20)와 통신하고자 하는데 MAC 주소를 모르는 상황에서 ARP 요청이 시작된다.

ARP 요청 패킷 구성:

[이더넷 헤더]
목적지 MAC: FF:FF:FF:FF:FF:FF (브로드캐스트)
출발지 MAC: AA:AA:AA:AA:AA:AA (호스트 A의 MAC)
EtherType: 0x0806 (ARP)

[ARP 패킷]
Hardware Type: 0x0001 (이더넷)
Protocol Type: 0x0800 (IPv4)
Hardware Length: 6
Protocol Length: 4
Operation: 1 (요청)
Sender MAC: AA:AA:AA:AA:AA:AA
Sender IP: 192.168.1.10
Target MAC: 00:00:00:00:00:00 (알 수 없음)
Target IP: 192.168.1.20

브로드캐스트 전송:

  • 스위치는 목적지 MAC이 브로드캐스트(FF:FF:FF:FF:FF:FF)임을 인식하고 동일한 브로드캐스트 도메인(VLAN)의 모든 포트로 프레임을 전송한다
  • 동일 서브넷의 모든 호스트가 ARP 요청 패킷을 수신하여 네트워크 카드(NIC)까지 전달된다
  • 각 호스트는 Target IP 필드를 확인하여 자신의 IP와 일치하는지 검사한다

2. ARP 응답 (ARP Reply)

호스트 B(192.168.1.20)는 Target IP가 자신의 IP와 일치함을 확인하고 유니캐스트 ARP 응답을 보낸다.

ARP 응답 패킷 구성:

[이더넷 헤더]
목적지 MAC: AA:AA:AA:AA:AA:AA (호스트 A의 MAC)
출발지 MAC: BB:BB:BB:BB:BB:BB (호스트 B의 MAC)
EtherType: 0x0806 (ARP)

[ARP 패킷]
Hardware Type: 0x0001 (이더넷)
Protocol Type: 0x0800 (IPv4)
Hardware Length: 6
Protocol Length: 4
Operation: 2 (응답)
Sender MAC: BB:BB:BB:BB:BB:BB
Sender IP: 192.168.1.20
Target MAC: AA:AA:AA:AA:AA:AA
Target IP: 192.168.1.10

유니캐스트 전송:

  • 목적지 MAC 주소가 특정 호스트(호스트 A)로 지정되어 스위치는 MAC 주소 테이블을 참조하여 해당 포트로만 전송한다
  • 호스트 A는 ARP 응답을 수신하고 192.168.1.20의 MAC 주소가 BB:BB:BB:BB:BB:BB임을 학습한다
  • 학습한 정보는 ARP 캐시(ARP 테이블)에 저장되어 일정 시간 동안 재사용된다

3. ARP 캐시 저장 및 데이터 전송

호스트 A는 학습한 MAC 주소를 ARP 캐시에 저장하고, 이후 호스트 B로 전송할 모든 패킷의 목적지 MAC 주소를 BB:BB:BB:BB:BB:BB로 설정하여 직접 전송할 수 있으며, ARP 캐시 엔트리는 TTL(Time To Live)에 따라 일정 시간(보통 2-20분) 후 만료되어 삭제되고 필요 시 다시 ARP 요청을 통해 갱신된다.

ARP 캐시와 TTL

ARP는 네트워크 성능 최적화를 위해 학습한 MAC 주소 정보를 메모리에 캐싱하며, 이를 ARP 캐시(ARP Table) 또는 ARP 테이블이라고 부른다.

ARP 캐시의 종류:

  1. 동적 ARP 캐시 (Dynamic ARP Cache)

    • ARP 요청-응답 과정을 통해 자동으로 학습된 MAC 주소 정보
    • TTL(Time To Live) 타이머가 설정되어 일정 시간 후 자동 삭제됨
    • Windows: 기본 2분, 최대 10분 (사용 시 갱신)
    • Linux: 기본 60초 (사용 시 갱신), 최대 30분
    • 네트워크 변경 사항(IP 또는 MAC 변경)에 자동으로 적응
  2. 정적 ARP 캐시 (Static ARP Cache)

    • 네트워크 관리자가 수동으로 설정한 MAC 주소 정보
    • TTL이 없어 시스템 재부팅 전까지 영구적으로 유지됨
    • 중요한 서버, 게이트웨이 등에 사용하여 ARP 스푸핑 공격 방지
    • 설정 예시 (Linux): sudo arp -s 192.168.1.1 aa:bb:cc:dd:ee:ff
    • 설정 예시 (Windows): arp -s 192.168.1.1 aa-bb-cc-dd-ee-ff

ARP 캐시 조회 명령어:

  • Linux: arp -n 또는 ip neigh show
  • Windows: arp -a
  • macOS: arp -a

ARP 캐시 삭제 명령어:

  • Linux: sudo ip neigh flush all (모든 엔트리 삭제)
  • Windows: arp -d * (모든 엔트리 삭제)
  • macOS: sudo arp -d -a (모든 엔트리 삭제)

특수한 ARP 유형

ARP 프로토콜은 기본적인 요청-응답 외에도 여러 특수한 용도로 활용되며, 각각 특정한 네트워크 시나리오를 해결하기 위해 설계되었다.

Gratuitous ARP (무상 ARP)

Gratuitous ARP는 요청하지 않았는데도 자발적으로 전송되는 ARP 패킷으로, 송신자와 수신자 IP 주소가 모두 자기 자신의 IP 주소로 설정되며, 브로드캐스트 방식으로 전송되어 네트워크의 모든 장치가 송신자의 MAC 주소를 학습하거나 업데이트하도록 한다.

주요 용도:

  1. IP 주소 충돌 감지 (Duplicate IP Detection)

    • 호스트가 부팅 시 또는 IP 설정 시 자신의 IP 주소를 브로드캐스트하여 중복 사용 여부 확인
    • 동일한 IP를 사용하는 다른 장치가 있으면 응답이 오므로 충돌 감지 가능
  2. ARP 캐시 업데이트 알림

    • 네트워크 카드(NIC) 교체 시 MAC 주소 변경을 모든 호스트에게 알림
    • 장애 조치(failover) 시 가상 IP(VIP)의 MAC 주소가 변경되었음을 알림
    • 네트워크 재구성 시 신속한 MAC 주소 정보 동기화
  3. 고가용성 클러스터 (High Availability Cluster)

    • VRRP, HSRP 등의 프로토콜에서 마스터 노드가 변경될 때 새로운 MAC 주소 전파
    • 로드 밸런서에서 가상 서버의 MAC 주소 변경 알림

Proxy ARP

Proxy ARP는 라우터가 다른 서브넷에 속한 호스트를 대신하여 ARP 요청에 응답하는 기술로, 클라이언트는 라우터의 존재를 인식하지 못한 채 마치 동일 서브넷에 있는 것처럼 통신할 수 있다.

동작 원리:

  1. 호스트 A(192.168.1.10/24)가 호스트 B(192.168.2.20/24)에게 패킷을 보내려 하지만 게이트웨이 설정이 없어 같은 서브넷으로 착각한다
  2. 호스트 A는 192.168.2.20에 대한 ARP 요청을 브로드캐스트한다
  3. 라우터는 192.168.2.20이 자신이 연결된 다른 서브넷에 있음을 알고 자신의 MAC 주소로 ARP 응답을 보낸다
  4. 호스트 A는 라우터의 MAC 주소로 패킷을 전송하고 라우터는 이를 실제 목적지로 포워딩한다

사용 사례:

  • 레거시 시스템에서 게이트웨이 설정이 불가능한 경우
  • 서브넷 분할 후 일시적인 호환성 유지
  • 단순화된 네트워크 구성 (현대 네트워크에서는 권장되지 않음)

Reverse ARP (RARP)

Reverse ARP는 RFC 903(1984)에 정의된 프로토콜로, ARP의 반대 기능을 수행하며, 자신의 MAC 주소는 알지만 IP 주소를 모르는 장치가 네트워크에서 IP 주소를 얻기 위해 사용한다.

동작 원리:

  1. 클라이언트는 자신의 MAC 주소를 포함한 RARP 요청을 브로드캐스트한다
  2. RARP 서버는 MAC 주소와 IP 주소의 매핑 테이블을 참조하여 해당 MAC에 할당된 IP를 찾는다
  3. RARP 서버는 IP 주소를 포함한 RARP 응답을 클라이언트에게 전송한다

역사적 의의:

  • 1980년대 디스크리스(diskless) 워크스테이션이 부팅 시 IP 주소를 얻기 위해 사용되었다
  • 현재는 BOOTP(1985)와 DHCP(1993)로 대체되어 거의 사용되지 않는다
  • RARP는 브로드캐스트 도메인 내에서만 작동하지만 DHCP는 DHCP Relay를 통해 다른 서브넷에서도 작동 가능하다

ARP의 보안 문제점

ARP 프로토콜은 1982년 설계 당시 보안을 고려하지 않았기 때문에 인증(authentication) 메커니즘이 전혀 없으며, 이로 인해 여러 보안 취약점이 존재하고 악의적인 공격에 노출될 수 있다.

1. ARP 스푸핑 (ARP Spoofing)

ARP 스푸핑은 공격자가 위조된 ARP 응답 패킷을 전송하여 희생자의 ARP 캐시를 오염시키는 공격 기법으로, 네트워크 내에서 중간자 공격(MITM)을 수행하는 가장 일반적인 방법이다.

공격 메커니즘:

  1. 공격자는 희생자 A에게 “게이트웨이(192.168.1.1)의 MAC 주소는 공격자의 MAC"이라는 위조 ARP 응답을 지속적으로 전송한다
  2. 공격자는 게이트웨이에게 “희생자 A(192.168.1.10)의 MAC 주소는 공격자의 MAC"이라는 위조 ARP 응답을 전송한다
  3. 희생자 A는 외부로 나가는 모든 패킷을 공격자에게 전송하고, 게이트웨이는 희생자 A로 향하는 모든 패킷을 공격자에게 전송한다
  4. 공격자는 패킷을 가로채어 내용을 읽거나 수정한 후 원래 목적지로 포워딩하여 통신이 정상적으로 이루어지는 것처럼 위장한다

공격 도구: Ettercap, Cain & Abel, Arpspoof, Bettercap 등

2. ARP 캐시 포이즈닝 (ARP Cache Poisoning)

ARP 캐시 포이즈닝은 ARP 스푸핑과 유사하지만 더 광범위한 개념으로, 네트워크의 여러 호스트의 ARP 캐시에 잘못된 MAC 주소 정보를 주입하여 네트워크 통신 장애를 유발하거나 트래픽을 가로채는 공격이다.

피해 유형:

  • 서비스 거부(DoS): 존재하지 않는 MAC 주소로 매핑하여 통신 차단
  • 중간자 공격(MITM): 공격자의 MAC 주소로 매핑하여 트래픽 가로채기
  • 세션 하이재킹(Session Hijacking): 인증 정보나 세션 쿠키 탈취

3. MITM (Man-in-the-Middle) 공격

ARP 스푸핑을 기반으로 한 중간자 공격으로, 공격자가 두 통신 당사자 사이에 위치하여 모든 트래픽을 가로채고 감청하거나 조작할 수 있다.

공격 시나리오:

  1. 비밀번호 탈취: HTTP 로그인 폼을 통해 전송되는 평문 비밀번호 가로채기
  2. 세션 쿠키 탈취: HTTPS가 아닌 HTTP 세션 쿠키를 가로채어 세션 하이재킹
  3. SSL 스트리핑(SSL Stripping): HTTPS 연결을 HTTP로 다운그레이드하여 암호화 우회
  4. DNS 스푸핑: DNS 응답을 조작하여 사용자를 악성 웹사이트로 유도
  5. 패킷 조작: 전송되는 데이터를 실시간으로 수정하여 악성 코드 삽입

ARP 보안 강화 방법

ARP의 보안 취약점을 완전히 제거할 수는 없지만, 다음과 같은 방어 기법을 통해 공격의 위험을 크게 줄일 수 있다.

1. 정적 ARP 테이블 사용

중요한 서버, 게이트웨이, 네트워크 장비에 대해 수동으로 MAC 주소를 등록하여 ARP 스푸핑 공격을 원천 차단한다.

장점:

  • ARP 스푸핑 공격에 완전히 면역
  • 중요한 통신 경로(예: 서버 ↔ 게이트웨이) 보호에 효과적

단점:

  • 네트워크 규모가 클수록 관리 부담 증가
  • MAC 주소 변경 시(NIC 교체 등) 수동 업데이트 필요
  • 동적 네트워크 환경(DHCP 등)에서는 실용성 낮음

설정 예시:

# Linux
sudo arp -s 192.168.1.1 aa:bb:cc:dd:ee:ff

# Windows
arp -s 192.168.1.1 aa-bb-cc-dd-ee-ff

2. Dynamic ARP Inspection (DAI)

관리형 스위치에서 제공하는 보안 기능으로, DHCP 스누핑(DHCP Snooping) 테이블을 기반으로 ARP 패킷의 유효성을 검증하여 위조된 ARP 패킷을 차단한다.

동작 원리:

  1. DHCP 스누핑을 통해 각 포트에 연결된 호스트의 IP-MAC 매핑 정보를 학습하여 바인딩 테이블 구축
  2. ARP 패킷이 스위치를 통과할 때 송신자 IP와 송신자 MAC을 바인딩 테이블과 비교
  3. 테이블에 없거나 일치하지 않는 ARP 패킷은 드롭(drop)하여 차단
  4. 신뢰할 수 있는 포트(uplink, 라우터 연결 포트)는 검증 없이 통과 허용

설정 예시 (Cisco 스위치):

! DHCP 스누핑 활성화
ip dhcp snooping
ip dhcp snooping vlan 10

! DAI 활성화
ip arp inspection vlan 10

! 신뢰 포트 설정 (라우터 연결 포트)
interface GigabitEthernet0/1
  ip dhcp snooping trust
  ip arp inspection trust

3. ARP 감시 및 탐지 시스템

네트워크 트래픽을 모니터링하여 비정상적인 ARP 활동을 탐지하고 알림을 제공하는 소프트웨어 또는 하드웨어 솔루션이다.

주요 탐지 기법:

  • 동일한 IP에 대해 서로 다른 MAC 주소가 짧은 시간 내에 반복적으로 나타나는 패턴 감지
  • 비정상적으로 많은 ARP 응답 패킷을 전송하는 호스트 식별
  • Gratuitous ARP의 과도한 사용 감지
  • ARP 요청 없이 전송되는 ARP 응답(unsolicited ARP reply) 탐지

도구 및 솔루션:

  • ArpWatch (Linux): ARP 테이블 변경 사항을 로그로 기록하고 이메일 알림 전송
  • XArp (Windows): 실시간 ARP 모니터링 및 스푸핑 탐지, 알림 제공
  • Snort (IDS/IPS): ARP 스푸핑 탐지 룰 적용 가능
  • Wireshark: 네트워크 트래픽 캡처 및 ARP 패킷 분석

4. VPN 및 암호화 프로토콜 사용

ARP 스푸핑 공격은 로컬 네트워크(동일 브로드캐스트 도메인)에서만 가능하므로, 신뢰할 수 없는 네트워크(공용 Wi-Fi 등)에서는 VPN을 사용하여 암호화된 터널을 구축하면 공격자가 트래픽을 가로채더라도 내용을 읽을 수 없다.

보호 메커니즘:

  • VPN 터널 내의 모든 트래픽은 암호화되어 ARP 스푸핑으로 가로채도 해독 불가능
  • HTTPS, SSH, TLS 등 애플리케이션 계층 암호화 프로토콜 사용
  • IPsec을 통한 네트워크 계층 암호화

5. 네트워크 분할 (Network Segmentation)

VLAN(Virtual LAN)을 통해 네트워크를 논리적으로 분할하여 브로드캐스트 도메인을 제한하면 ARP 스푸핑 공격의 영향 범위를 최소화할 수 있다.

장점:

  • 공격자가 접근할 수 있는 호스트 수 제한
  • 중요한 서버와 일반 사용자를 다른 VLAN으로 분리하여 보호
  • 각 VLAN마다 별도의 보안 정책 적용 가능

마치며

ARP(Address Resolution Protocol)는 1982년 RFC 826을 통해 표준화된 이후 40년 이상 TCP/IP 네트워크의 핵심 프로토콜로 사용되어 왔으며, IP 주소를 MAC 주소로 변환하는 필수적인 역할을 수행하여 이더넷 네트워크에서의 실제 데이터 전송을 가능하게 한다. 브로드캐스트 기반의 요청-응답 메커니즘과 캐싱을 통해 효율적으로 동작하지만, 설계 초기에 보안이 고려되지 않아 ARP 스푸핑, 캐시 포이즈닝, 중간자 공격 등 다양한 보안 취약점이 존재하며, 네트워크 관리자는 정적 ARP 테이블, Dynamic ARP Inspection, ARP 감시 시스템, VPN 암호화, 네트워크 분할 등의 방어 기법을 적절히 조합하여 보안을 강화해야 한다. 현대 네트워크 환경에서 ARP는 IPv6의 NDP(Neighbor Discovery Protocol)로 대체되고 있지만, IPv4 네트워크가 여전히 광범위하게 사용되는 현재 ARP의 동작 원리와 보안 이슈를 이해하는 것은 네트워크 엔지니어와 보안 전문가에게 필수적인 지식이다.