ARP, la résolution des adresses IPv4 en adresses MAC
Définition
ARP (Address Resolution Protocol, RFC 826) sert à trouver l'adresse MAC (couche 2) associée à une adresse IPv4 (couche 3) sur le même segment local. Le protocole fonctionne par requête broadcast « Qui a 10.1.1.1 ? » et réponse unicast « 10.1.1.1 est en 001c.b3a1.2d44 ». ARP est indispensable au routage IPv4 sur Ethernet, car un frame ne peut être livré qu'avec une destination MAC.
Le mécanisme pas à pas
Quand un hôte veut envoyer un paquet vers une IP, il consulte d'abord sa table de routage pour identifier l'interface de sortie et le next-hop. Si la destination est sur le même sous-réseau, le next-hop est la destination elle-même. Sinon le paquet part vers la passerelle par défaut. Dans les deux cas, la résolution ARP porte toujours sur l'adresse IPv4 du next-hop, pas sur la destination finale.
- L'hôte vérifie sa table ARP locale.
- En cas d'échec, il envoie une requête ARP broadcast (destination MAC ff:ff:ff:ff:ff:ff, opcode 1).
- Tous les hôtes du domaine de broadcast reçoivent la requête, seul le propriétaire de l'IP répond.
- La réponse est unicast (opcode 2) et l'entrée est ajoutée à la table ARP.
- L'hôte encapsule alors son paquet IP dans un frame Ethernet à destination de la MAC résolue.
La table ARP
Sur un routeur ou un switch Cisco IOS :
R1# show arp
Protocol Address Age (min) Hardware Addr Type Interface
Internet 10.1.1.1 1 001c.b3a1.2d44 ARPA GigabitEthernet0/0
Internet 10.1.1.2 138 aabb.cc00.0100 ARPA GigabitEthernet0/0
Points à connaître pour l'examen 200-301 :
| Élément | Valeur Cisco IOS |
|---|---|
| Durée de vie par défaut d'une entrée | 4 heures (240 min) |
| Rafraîchissement | Une entrée utilisée est maintenue, le compteur se remet à zéro tant que le trafic passe |
| Suppression manuelle | clear arp-cache ou clear arp interface GigabitEthernet0/0 |
Une entrée peut être dynamique (apprise par trafic), statique (arp 10.1.1.5 aabb.cc00.0200 arpa) ou complète (-i pour une interface).
ARP ne traverse pas les routeurs
ARP ne franchit jamais un routeur : la requête est broadcast layer 2 et les routeurs isolent les domaines de broadcast. Pour joindre une IP hors sous-réseau, le PC résout la MAC de sa passerelle, pas celle du serveur distant. Chaque tronçon refait sa propre résolution ARP. C'est ce qui permet le changement d'en-tête Ethernet hop par hop alors que les adresses IP source/destination restent constantes.
Deux variantes utiles :
- Gratuitous ARP : l'hôte s'annonce lui-même (requête pour sa propre IP). Utilisé par HSRP/VRRP pour mettre à jour les tables ARP des switchs lors d'un basculement, et par certains protocoles de détection de doublon.
- Proxy ARP : un routeur répond aux requêtes ARP d'une IP qui n'est pas la sienne. Historiquement utilisé pour masquer un sous-réseau, aujourd'hui déconseillé car il crée des tables ARP énormes sur les hôtes. Désactivable avec
no ip proxy-arpsur l'interface.
ARP et IPv6 : NDP
IPv6 n'utilise pas ARP. La résolution passe par le Neighbor Discovery Protocol (RFC 4861), basé sur ICMPv6 : Neighbor Solicitation (type 135) et Neighbor Advertisement (type 136). Les messages NS sont envoyés vers une adresse multicast solicited-node, pas en broadcast, ce qui réduit la charge sur les hôtes.
Exemple concret
Un PC (10.1.1.10, masque /24, passerelle 10.1.1.1) veut ping 8.8.8.8. La table de routage du PC lui dit que 8.8.8.8 sort par la passerelle. Le PC émet Qui a 10.1.1.1 ? Dites-le à 10.1.1.10. Le routeur répond avec la MAC de son interface G0/0. Le frame part vers cette MAC, l'IP destination reste 8.8.8.8. Le routeur, côté liaison vers l'ISP, refait un ARP vers le next-hop suivant. Sur le PC, arp -a montre l'entrée du routeur ; sur le routeur, show arp montre les deux entrées.
Pièges et sécurité
- ARP spoofing / cache poisoning : un attaquant envoie de fausses réponses ARP gratuitées pour se placer en man-in-the-middle. Contre-mesures :
arp inspectionsur switch, entrées ARP statiques, port security. - IP en doublon : deux machines avec la même IP se renvoient des réponses ARP différentes ; la MAC apprise par le switch change en permanence.
- Sous-réseau mal masqué : un /25 configuré en /24 fait croire à l'hôte que des hôtes sont locaux ; l'ARP échoue et le trafic ne sort jamais.