ARP - Address Resolution Protocol

Was ist ARP?

ARP (Address Resolution Protocol) ist ein Netzwerkprotokoll, das dafΓΌr zustΓ€ndig ist herauszufinden, welche GerΓ€te im lokalen Netzwerk erreichbar sind und wo sie sich befinden. Das Protokoll lΓΆst IP-Adressen in MAC-Adressen auf, damit die Kommunikation auf Layer 2 (Data Link Layer) stattfinden kann.

Funktionsweise von ARP

Das Problem ohne ARP

PC A (192.168.1.10)
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ "Ich mΓΆchte mit β”‚
β”‚ 192.168.1.20    β”‚
β”‚ kommunizieren"  β”‚
β”‚                 β”‚
β”‚ ❓ Aber welche  β”‚
β”‚ MAC-Adresse hat β”‚
β”‚ dieses GerΓ€t?   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ARP Request (Broadcast)

Wenn ein PC mit einem anderen GerΓ€t kommunizieren mΓΆchte, sendet er einen ARP Request als Broadcast an alle GerΓ€te im lokalen Netzwerk:

Netzwerk: 192.168.1.0/24

PC A                    Switch                    PC B
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚192.168. β”‚            β”‚         β”‚               β”‚192.168. β”‚
β”‚1.10     β”‚            β”‚         β”‚               β”‚1.20     β”‚
β”‚MAC:     β”‚            β”‚         β”‚               β”‚MAC:     β”‚
β”‚AA:BB:CC │─────────────         β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚DD:EE:FF β”‚
β”‚         β”‚            β”‚         β”‚               β”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
     β”‚                                                β”‚
     β”‚ ARP Request (Broadcast)                       β”‚
     β”‚ "Wer hat IP 192.168.1.20?"                   β”‚
     β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
     β”‚ Destination MAC: FF:FF:FF:FF:FF:FF             β”‚
     β”‚ Source MAC: AA:BB:CC:DD:EE:FF                  β”‚
     β”‚ Target IP: 192.168.1.20                       β”‚
     β”‚ Sender IP: 192.168.1.10                       β”‚

ARP Reply (Unicast)

Das ZielgerΓ€t antwortet mit einem ARP Reply direkt an den Absender:

PC A                    Switch                    PC B
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”            β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”               β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚192.168. β”‚            β”‚         β”‚               β”‚192.168. β”‚
β”‚1.10     β”‚            β”‚         β”‚               β”‚1.20     β”‚
β”‚MAC:     β”‚            β”‚         β”‚               β”‚MAC:     β”‚
β”‚AA:BB:CC │◄───────────         β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”‚DD:EE:FF β”‚
β”‚         β”‚            β”‚         β”‚               β”‚         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜            β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜               β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
     β”‚                                                β”‚
     β”‚ ARP Reply (Unicast)                           β”‚
     β”‚ "Ich bin 192.168.1.20!"                      β”‚
     β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
     β”‚ Destination MAC: AA:BB:CC:DD:EE:FF             β”‚
     β”‚ Source MAC: DD:EE:FF:GG:HH:II                  β”‚
     β”‚ Target IP: 192.168.1.10                       β”‚
     β”‚ Sender IP: 192.168.1.20                       β”‚

ARP-Tabelle (ARP Cache)

Nach dem ARP-Austausch speichert jeder PC die gelernten Zuordnungen in seiner ARP-Tabelle:

PC A's ARP-Tabelle

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ IP-Adresse      β”‚ MAC-Adresse       β”‚ Typ             β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 192.168.1.1     β”‚ 11:22:33:44:55:66 β”‚ Dynamisch       β”‚
β”‚ 192.168.1.20    β”‚ DD:EE:FF:GG:HH:II β”‚ Dynamisch       β”‚
β”‚ 192.168.1.30    β”‚ 99:AA:BB:CC:DD:EE β”‚ Dynamisch       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ARP-Prozess im Detail

Schritt 1: IP-Paket soll versendet werden
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Anwendung mΓΆchte Daten an           β”‚
β”‚ 192.168.1.20 senden                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                    β”‚
                    β–Ό
Schritt 2: ARP-Tabelle prΓΌfen
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Ist MAC-Adresse fΓΌr 192.168.1.20   β”‚
β”‚ bereits bekannt?                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
            β”‚                    β”‚
        JA  β”‚                    β”‚ NEIN
            β–Ό                    β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Paket direkt        β”‚    β”‚ ARP Request senden  β”‚
β”‚ versenden           β”‚    β”‚ (Broadcast)         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                                      β–Ό
                           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                           β”‚ ARP Reply empfangen β”‚
                           β”‚ MAC-Adresse lernen  β”‚
                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                                      β–Ό
                           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                           β”‚ ARP-Tabelle         β”‚
                           β”‚ aktualisieren       β”‚
                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                                      β–Ό
                           β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                           β”‚ Paket versenden     β”‚
                           β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Verschiedene ARP-Typen

1. Standard ARP (IPv4)

  • LΓΆst IPv4-Adressen in MAC-Adressen auf
  • Funktioniert nur im lokalen Netzwerksegment

2. Proxy ARP

Netzwerk A              Router              Netzwerk B
192.168.1.0/24      (Proxy ARP)         192.168.2.0/24

PC A ───────────── Router ───────────── PC B
192.168.1.10    192.168.1.1    192.168.2.10
                192.168.2.1

PC A fragt: "Wer hat 192.168.2.10?"
Router antwortet: "Ich!" (mit seiner MAC-Adresse)

3. Gratuitous ARP

PC sendet ARP Request fΓΌr seine EIGENE IP-Adresse
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Zweck:                                          β”‚
β”‚ β€’ IP-Duplikate erkennen                         β”‚
β”‚ β€’ ARP-Tabellen anderer GerΓ€te aktualisieren     β”‚
β”‚ β€’ Nach IP-Γ„nderung das Netzwerk informieren     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

ARP-Sicherheitsprobleme

ARP Spoofing/Poisoning

Normaler Betrieb:
PC A ←──────── Switch ──────→ PC B
     ARP: "B = MAC:DD:EE:FF"

Angriff durch Attacker:
PC A ←──────── Switch ──────→ PC B
  ↑               ↑
  β”‚    ARP Reply  β”‚
  β”‚  "B = MAC:    β”‚
  └─  99:88:77"   β”‚
      (Falsch!)   β”‚
                  β”‚
            [Attacker]
            MAC: 99:88:77

ARP-Befehle (Windows/Linux)

ARP-Tabelle anzeigen

# Windows
arp -a

# Linux
arp -a
ip neighbor show

ARP-Eintrag hinzufΓΌgen

# Windows
arp -s 192.168.1.20 dd-ee-ff-gg-hh-ii

# Linux
arp -s 192.168.1.20 dd:ee:ff:gg:hh:ii

ARP-Cache leeren

# Windows
arp -d *

# Linux
ip neighbor flush all

Zusammenfassung

Aspekt Beschreibung
Zweck IP-Adressen in MAC-Adressen auflΓΆsen
Bereich Nur lokales Netzwerksegment
Methode Broadcast Request, Unicast Reply
Cache TemporΓ€re Speicherung der Zuordnungen
Sicherheit AnfΓ€llig fΓΌr Spoofing-Angriffe
Protokoll-Layer Layer ⅔ Übergang

ARP ist ein essentielles Protokoll fΓΌr die Ethernet-Kommunikation und ermΓΆglicht es GerΓ€ten, sich im lokalen Netzwerk zu finden und miteinander zu kommunizieren.