ARP: Difference between revisions

From HPCWIKI
Jump to navigation Jump to search
(Added Knowledge Graph section)
(Fix: remove --- horizontal lines (12 removed))
 
Line 18: Line 18:
* 언제 사용하는가? 로컬 네트워크에서 장치 간 통신 시 주소 해결
* 언제 사용하는가? 로컬 네트워크에서 장치 간 통신 시 주소 해결


---


== Purpose ==
== Purpose ==
Line 28: Line 27:
* Non-goals: IPv6의 Neighbor Discovery Protocol(NDP), 라우팅 프로토콜
* Non-goals: IPv6의 Neighbor Discovery Protocol(NDP), 라우팅 프로토콜


---


== Key Concepts ==
== Key Concepts ==
Line 58: Line 56:
|}
|}


---


== Architecture ==
== Architecture ==
Line 74: Line 71:
</syntaxhighlight>
</syntaxhighlight>


---


== Workflow ==
== Workflow ==
Line 113: Line 109:
|}
|}


---


== Detailed Explanation ==
== Detailed Explanation ==
Line 167: Line 162:
부팅 시에도 정적 엔트리를 유지하려면 /etc/ethers 파일을 사용하세요. 중요한 시스템의 MAC 주소를 파일에 기록하면 스푸핑을 방지할 수 있습니다.
부팅 시에도 정적 엔트리를 유지하려면 /etc/ethers 파일을 사용하세요. 중요한 시스템의 MAC 주소를 파일에 기록하면 스푸핑을 방지할 수 있습니다.


---


== Configuration ==
== Configuration ==
Line 189: Line 183:
</syntaxhighlight>
</syntaxhighlight>


---


== Examples ==
== Examples ==
Line 218: Line 211:
</syntaxhighlight>
</syntaxhighlight>


---


== Best Practices ==
== Best Practices ==
Line 228: Line 220:
* 네트워크 분리 — 중요한 시스템은 VLAN으로 격리
* 네트워크 분리 — 중요한 시스템은 VLAN으로 격리


---


== Limitations ==
== Limitations ==
Line 238: Line 229:
* IPv6에서는 NDP(Neighbor Discovery Protocol)로 대체
* IPv6에서는 NDP(Neighbor Discovery Protocol)로 대체


---


== References ==
== References ==
Line 246: Line 236:
* https://www.geeksforgeeks.org/arp-command-in-linux-with-examples/
* https://www.geeksforgeeks.org/arp-command-in-linux-with-examples/


---


== Related Pages ==
== Related Pages ==
Line 258: Line 247:
* [[NDP (Neighbor Discovery Protocol)]]
* [[NDP (Neighbor Discovery Protocol)]]


---


[[Category:Linux]]
[[Category:Linux]]

Latest revision as of 11:27, 17 July 2026

Template:Status

Template:TOC

Overview

ARP(Address Resolution Protocol)는 네트워크상에서 IP 주소를 물리적 MAC 주소로 변환하는 프로토콜입니다. EtherType 0x0806을 사용하며, 브로드캐스트 기반으로 작동합니다.

Summary

  • 무엇인가? IP 주소를 MAC 주소로 변환하는 네트워크 프로토콜 (EtherType 0x0806)
  • 왜 필요한가? 데이터 링크 계층에서 물리적 주소 전달을 위해 IP→MAC 매핑 필요
  • 언제 사용하는가? 로컬 네트워크에서 장치 간 통신 시 주소 해결


Purpose

이 문서가 존재하는 이유

  • Goal: ARP의 작동 원리, ARP 스푸핑, ARP 테이블 관리 방법 설명
  • Scope: ARP 프로토콜, 스푸핑 방어, 정적 엔트리 설정, 리눅스 명령어
  • Non-goals: IPv6의 Neighbor Discovery Protocol(NDP), 라우팅 프로토콜


Key Concepts

Concept Description Related
ARP Address Resolution Protocol — IP 주소를 MAC 주소로 변환 Linux
ARP Spoofing ARP 캐시 독점 — 악의적인 시스템이 ARP 응답을 가로채는 공격 ARP Tables
ARP Cache Poisoning ARP 스푸핑의 다른 이름 — ARP 테이블에 잘못된 정보 주입 ARP Spoofing
ARP Table IP-MAC 매핑 정보를 저장하는 동적/정적 테이블 Linux
EtherType 0x0806 ARP 프레임의 EtherType 값 ARP


Architecture

ARP는 다음과 같은 브로드캐스트 기반 주소 해결 프로세스를 사용합니다:

graph TD
    A[Host A - IP: 10.230.20.2] --> B["ARP Broadcast: 'Who is 10.230.20.1?'"]
    B --> C[모든 네트워크 호스트 수신]
    C --> D[Host B - IP: 10.230.20.1]
    D --> E["ARP Reply: 'I am 10.230.20.1, MAC: XX:XX:XX:XX:XX:XX'"]
    E --> F[Host A가 ARP 테이블에 기록]
    F --> G[통신 시작 - MAC 주소 사용]


Workflow

ARP 주소 해결 및 테이블 관리 흐름:

  1. Host A가 Host B의 MAC 주소를 모름
  2. Host A가 ARP 브로드캐스트 전송 — "Who is 10.230.20.1?"
  3. Host B가 ARP 응답 전송 — "I'm 10.230.20.1, MAC: XX:XX:XX:XX:XX:XX"
  4. Host A가 ARP 테이블에 IP-MAC 매핑 기록
  5. 일반적으로 300초 후 엔트리 만료 → 재해결 반복
  6. 정적 엔트리 설정 시 만료 없이 영구 사용
Stage Input Output
Broadcast 대상 IP 주소 ARP 요청 패킷 (브로드캐스트)
Reply ARP 요청 수신 ARP 응답 패킷 (단일 전송)
Table Update 응답의 IP-MAC 매핑 ARP 테이블 엔트리 추가/업데이트
Expiry 시간 경과 (일반적으로 300초) 엔트리 만료 → 재해결 필요
Static Entry ip neighbour add/change 만료 없는 정적 엔트리


Detailed Explanation

ARP 작동 원리

ARP는 브로드캐스트 패킷으로 네트워크상에서 작동합니다:

  • Host A: "Hey, who is 10.230.20.1, tell me your MAC address!"
  • Host B: "I'm 10.230.20.1, my MAC address is XX:XX:XX:XX:XX:XX"
  • 모든 시스템이 이 응답을 확인하고 ARP 테이블에 기록
  • 일반적으로 300초 후 엔트리 만료 → 재해결 반복

ARP Spoofing (ARP 캐시 독점)

ARP Spoofing은 ARP 캐시 독점 또는 ARP Poison Routing이라고도 합니다. 악의적인 시스템이 정당한 시스템보다 빠르게 ARP 응답을 전송하면, 모든 패킷이 악의적인 시스템으로 우회됩니다. 이는 중간자 공격(Man-in-the-Middle)의 기본 메커니즘입니다.

ARP Tables

각 컴퓨터의 ARP 테이블에 정적 엔트리를 추가할 수 있습니다. 정적 엔트리는 만료되지 않으며, 해당 IP에 대한 ARP 해결 요청을 보내지 않고 항상 정적 엔트의 MAC 주소를 사용합니다.

리눅스에서 정적 엔트리 설정:

# 정적 엔트리 추가
ip neighbour add 192.168.1.5 lladdr 00:60:6e:10:24:a5 dev eth1

# 기존 동적 엔트리 변경
ip neighbour change 10.230.200.1 lladdr d0:14:11:40:19:e0 dev eth1

ARP 테이블 확인:

$ ip neigh show
  192.168.1.202 dev bond0 lladdr 00:19:d1:02:e2:a7 STALE
  10.230.200.1 dev bond0 lladdr d0:14:11:40:19:e0 STALE
  192.168.1.5 dev bond0 lladdr 00:60:6e:10:24:a5 STALE
  10.230.200.8 dev bond0 FAILED
  192.168.1.12 dev bond0 lladdr 3c:ec:ef:73:66:e0 DELAY
  192.168.1.222 dev bond0 lladdr 00:15:58:c6:87:11 REACHABLE
  192.168.1.101 dev bond0 lladdr 00:11:32:98:40:8b REACHABLE
  10.230.200.22 dev bond0 lladdr 3c:ec:ef:73:66:e0 STALE
  192.168.1.80 dev bond0 FAILED

엔트리 상태:

  • REACHABLE — 정상 통신 확인
  • STALE — 만료 임박, 재확인 필요
  • DELAY — 재확인 대기 중
  • FAILED — 해결 실패

부팅 시에도 정적 엔트리를 유지하려면 /etc/ethers 파일을 사용하세요. 중요한 시스템의 MAC 주소를 파일에 기록하면 스푸핑을 방지할 수 있습니다.


Configuration

/etc/ethers 파일 형식:

00:19:d1:02:e2:a7 192.168.1.202
d0:14:11:40:19:e0 10.230.200.1
00:60:6e:10:24:a5 192.168.1.5

정적 엔트리 추가 (리눅스):

# 정적 엔트리 추가
ip neighbour add 192.168.1.5 lladdr 00:60:6e:10:24:a5 dev eth1

# 기존 동적 엔트리 변경
ip neighbour change 10.230.200.1 lladdr d0:14:11:40:19:e0 dev eth1


Examples

Example 1: ARP 테이블 확인

$ ip neigh show
  192.168.1.202 dev bond0 lladdr 00:19:d1:02:e2:a7 STALE
  10.230.200.1 dev bond0 lladdr d0:14:11:40:19:e0 STALE
  192.168.1.5 dev bond0 lladdr 00:60:6e:10:24:a5 STALE
  10.230.200.8 dev bond0 FAILED
  192.168.1.12 dev bond0 lladdr 3c:ec:ef:73:66:e0 DELAY
  192.168.1.222 dev bond0 lladdr 00:15:58:c6:87:11 REACHABLE
  192.168.1.101 dev bond0 lladdr 00:11:32:98:40:8b REACHABLE
  10.230.200.22 dev bond0 lladdr 3c:ec:ef:73:66:e0 STALE
  192.168.1.80 dev bond0 FAILED

Example 2: 정적 엔트리 추가

# 정적 엔트리 추가
ip neighbour add 192.168.1.5 lladdr 00:60:6e:10:24:a5 dev eth1

# 기존 동적 엔트리 변경
ip neighbour change 10.230.200.1 lladdr d0:14:11:40:19:e0 dev eth1


Best Practices

  • 중요한 시스템(라우터, DNS 서버 등)은 ARP 테이블에 정적 엔트로 등록
  • /etc/ethers 파일을 사용하여 부팅 시에도 정적 엔트리 유지
  • ARP Spoofing 감지를 위한 모니터링 도구 도입 (예: arpspoof, tcpdump)
  • 정기적으로 ARP 테이블 확인 — FAILED 상태 엔트리 확인
  • 네트워크 분리 — 중요한 시스템은 VLAN으로 격리


Limitations

  • ARP는 브로드캐스트 기반 — 모든 네트워크 호스트가 패킷 수신
  • IP-MAC 매핑은 동적으로 변경될 수 있음 (정적 엔트리 제외)
  • ARP Spoofing에 취약 — 별도 방어 메커니즘 필요
  • 로컬 네트워크(L2)에서만 작동 — 라우터 너머로는 확장되지 않음
  • IPv6에서는 NDP(Neighbor Discovery Protocol)로 대체


References


Related Pages

Knowledge Graph

Related

LinuxServerHardwareNetwork