Ce document académique est destiné aux étudiants universitaires en informatique et réseaux. Il explore en détail le protocole ARP (Address Resolution Protocol), un mécanisme fondamental pour la communication au sein d'un réseau local, permettant la traduction d'adresses IP en adresses MAC.
Il couvre les notions suivantes :
- Le fonctionnement et l'architecture du protocole ARP.
- Les aspects liés à la sécurité, notamment l'ARP Spoofing.
- Les protocoles connexes comme RARP et Proxy ARP.
- La manipulation et l'analyse du cache ARP via des outils pratiques.
Réseaux Informatiques : Tp r4.4 arp réseaux informatiques
Télécharger PDFLe protocole ARP (Address Resolution Protocol)
Le protocole ARP (Address Resolution Protocol) est essentiel pour la communication au sein d'un réseau local. Il sert à traduire une adresse réseau logique (adresse IP) en une adresse physique (adresse MAC).
Lorsqu'un poste souhaite envoyer un paquet IP à un autre poste situé sur le même segment de réseau physique, il doit connaître l'adresse physique (MAC) de ce destinataire. Or, il ne dispose initialement que de son adresse IP. C'est là qu'intervient le protocole ARP, permettant de trouver l'adresse physique du poste destinataire de manière transparente pour l'utilisateur.
Une table de conversion est générée dynamiquement sur chaque hôte, appelée "cache ARP". Avant d'envoyer un paquet, ARP consulte ce cache. Si l'adresse physique du destinataire y est présente, elle est utilisée. Sinon, l'hôte envoie un paquet spécial nommé "Requête ARP" (ARP Request Packet) à tous les hôtes du même réseau physique. Cette requête inclut l'adresse IP à rechercher et utilise l'adresse MAC de diffusion (broadcast) FF:FF:FF:FF:FF:FF.
La machine possédant l'adresse IP demandée répond en renvoyant son adresse physique (MAC), qui est alors ajoutée à la table ARP de l'expéditeur. Si aucune réponse n'est reçue dans un délai imparti, la requête est envoyée à nouveau. Le contenu du cache ARP est généralement conservé jusqu'à l'extinction de la machine hôte. Au démarrage, le cache ARP est donc vide :
# arp -v
Entrées: 0Ignorées: 0Trouvées: 0
# cat /proc/net/arp
IP address HW typeFlags HW address Mask Device
Autres aspects du protocole ARP
Interaction entre routeurs et requêtes ARP
Les requêtes ARP ne traversent pas les routeurs. Un routeur opère au niveau de la couche réseau (couche 3 du modèle OSI) et relaie les informations basées sur les adresses IP, mais il ne transmet pas le trafic broadcast de la couche MAC (couche 2).
ARP Spoofing et risques de sécurité
L'ARP Spoofing, aussi appelé ARP Redirect ou empoisonnement du cache ARP, est une technique d'attaque où une machine non fiable accédant au réseau physique émet de faux messages ARP. Ces messages visent à corrompre le cache ARP d'une machine cible, détournant ainsi tout le trafic destiné à cette cible vers la machine de l'attaquant. Cela permet à l'attaquant d'écouter et/ou de modifier les données transitant sur le réseau.
Des générateurs de paquets ARP tels que arpspoof ou nemesis peuvent être utilisés pour ce type d'attaque. L'attaquant peut se rendre transparent en redirigeant le trafic après avoir activé la fonction d'IP Forwarding (par exemple, avec la commande echo 1 > /proc/sys/net/ipv4/ip_forward sous Linux). Il existe donc un certain risque lié à l'utilisation du protocole ARP, même sur des réseaux segmentés par des switchs.
Le Proxy ARP pour des réseaux segmentés
Le Proxy ARP permet de résoudre les problèmes de communication dans des scénarios où des pare-feu sont installés sur un même réseau d'adresses IP. Les requêtes ARP, étant des diffusions (broadcast), seraient normalement bloquées par la machine filtrante.
L'activation de la fonctionnalité Proxy ARP permet de pallier ce problème en demandant explicitement que les requêtes et réponses ARP arrivant par une interface réseau soient propagées vers une autre, et vice-versa. Cela rend le pare-feu "transparent" pour la résolution ARP.
Sous Linux, on active le Proxy ARP pour chacune des deux interfaces de la manière suivante :
# echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp# echo 1 > /proc/sys/net/ipv4/conf/eth1/proxy_arp
Le protocole RARP (Reverse ARP)
Le protocole RARP (Reverse ARP) est l'inverse d'ARP : il permet d'associer une adresse réseau (IP) à une adresse physique (MAC) connue. Ce protocole était utilisé avant l'adoption généralisée du protocole DHCP (Dynamic Host Configuration Protocol).
RARP était notamment employé sous Unix par des stations "diskless" (sans disque dur) ou des terminaux pour leur attribuer une adresse IP à partir d'un serveur. Le protocole Inverse ARP est similaire à RARP, mais souvent utilisé dans des contextes différents comme ATM.
Références RFCs pour les protocoles ARP et RARP
Les Request for Comments (RFCs) sont des documents techniques qui décrivent le fonctionnement des protocoles Internet. Voici quelques RFCs clés concernant ARP et RARP :
| RFC | Contenu |
|---|---|
| RFC 826 | ARP (Address Resolution Protocol) |
| RFC 903 | RARP (Reverse ARP) |
| RFC 1122 | Prérequis des hôtes Internet - Couches de communication |
| RFC 1433 | ARP direct |
| RFC 1868 | Extension UnARP |
| RFC 2131 | DHCP (Dynamic Host Configuration Protocol) et DHCP ARP |
| RFC 2390 | Inverse ARP |
Exemple de résolution ARP
Considérons un poste avec l'adresse IP 192.168.1.1 qui vient de démarrer et dont le cache ARP est vide. Il effectue un ping vers le poste d'adresse IP 192.168.1.3. L'échange ARP qui s'ensuit peut être capturé et analysé avec un outil comme tcpdump :
# tcpdump -vv arptcpdump: listening on eth008:51:26.702516 arp who-has 192.168.1.3 tell 192.168.1.108:51:26.702747 arp reply 192.168.1.3 is-at 0:a0:4b:7:43:71
Dans cet exemple, le poste 192.168.1.1 envoie une requête "who-has" (qui a) pour l'adresse 192.168.1.3, demandant à quiconque la possède de "tell" (répondre à) 192.168.1.1. Le poste 192.168.1.3 répond ensuite par un "reply" (réponse) indiquant "is-at" (est à) son adresse MAC 0:a0:4b:7:43:71.
Structure de la trame ARP
Le protocole ARP a été conçu pour fonctionner avec n'importe quel protocole de couche réseau, ce qui implique l'utilisation d'un format de paquet souple. Un paquet ARP est encapsulé dans une trame Ethernet II, avec l'adresse de diffusion générale (broadcast MAC FF:FF:FF:FF:FF:FF) et un numéro de protocole (0x0806) désignant un paquet ARP.
- Type matériel (Hardware Type) : Spécifie le type de matériel réseau utilisé (par exemple, Ethernet).
- Type protocole (Protocol Type) : Indique le protocole de couche réseau pour lequel la résolution d'adresse est demandée (par exemple, 0x0800 pour IPv4).
- Longueur adresse physique (Hardware Address Length) : Longueur de l'adresse physique en octets (par exemple, 6 pour Ethernet).
- Longueur adresse IP (Protocol Address Length) : Longueur de l'adresse de protocole en octets (par exemple, 4 pour IPv4).
- Opération (Operation Code) : Définit la signification du paquet ARP (requête, réponse, etc.).
- Adresse physique de l'émetteur (Sender Hardware Address) : Adresse MAC de l'expéditeur de la trame ARP.
- Adresse IP de l'émetteur (Sender Protocol Address) : Adresse IP de l'expéditeur de la trame ARP.
- Adresse physique du récepteur (Target Hardware Address) : Adresse MAC du destinataire recherché (peut être nulle dans une requête).
- Adresse IP du récepteur (Target Protocol Address) : Adresse IP du destinataire recherché.
Pour rappel :
- Les adresses physiques (MAC) ont une taille de 6 octets.
- Les adresses réseaux IP v4 ont une taille de 4 octets.
Quelques valeurs du champ "Type matériel" :
| Type matériel | Protocole |
|---|---|
| 1 | Ethernet |
| 6 | IEEE 802 |
| 20 | ATM |
Le champ "Type protocole" désigne le protocole dont on veut résoudre les adresses ; il est toujours 0x0800 pour IP.
Le champ "Longueur adresse physique" indique la longueur de l'adresse physique, soit 6 octets pour Ethernet.
Le champ "Longueur adresse protocole" indique la longueur de l'adresse réseau, soit 4 octets pour IPv4.
Le champ "Opération" définit la signification du paquet :
| Opération | Message |
|---|---|
| 1 | Requête ARP |
| 2 | Réponse ARP |
| 3 | Requête RARP |
| 4 | Réponse RARP |
| 8 | Requête Inverse ARP |
| 9 | Réponse Inverse ARP |
Fonctionnement et gestion du cache ARP
Comprendre et manipuler le cache ARP
Le cache ARP est une table temporaire stockée sur chaque hôte qui associe les adresses IP aux adresses MAC. Pour afficher son contenu, on peut utiliser la commande arp -n -a ou consulter le fichier /proc/net/arp sous Linux.
Lorsqu'un hôte envoie un "ping" vers un autre poste du réseau local, une entrée pour l'adresse IP et l'adresse MAC du poste pingé est ajoutée dynamiquement au cache ARP de l'hôte émetteur. Si l'hôte pingé se trouve derrière une passerelle (routeur), seule l'adresse MAC de la passerelle sera ajoutée au cache ARP de l'expéditeur, car le routeur est le prochain saut physique.
Utilisation de la commande ARP
Pour vider le cache ARP, on peut utiliser la commande arp -d * (pour supprimer toutes les entrées dynamiques) ou, plus radicalement, désactiver et réactiver l'interface réseau, ce qui vide son cache ARP. Par exemple, sous Linux :
ifconfig eth0 down (désactive l'interface eth0)ifconfig eth0 up (réactive l'interface eth0)
La commande ifconfig eth0 down désactive l'interface réseau eth0, la rendant incapable de transmettre ou recevoir des données. La commande ifconfig eth0 up la réactive. Après ces opérations, le cache ARP de l'interface est généralement vide.
Il est également possible d'ajouter manuellement une entrée statique dans le cache ARP à l'aide de la commande arp -s [adresse_IP] [adresse_MAC]. Par exemple : arp -s 192.168.1.100 00:11:22:33:44:55. Cette entrée aura un type "statique" et sera conservée tant qu'elle n'est pas supprimée ou que la machine redémarre. Tester cette entrée avec un ping confirmera sa validité.
En résumé, la commande arp permet d'afficher, d'ajouter ou de supprimer des entrées dans le cache ARP, offrant un contrôle précis sur la résolution d'adresses.
Démonstration d'ARP Spoofing avec une adresse MAC inexistante
En utilisant la commande arp -s, il est possible de modifier manuellement l'adresse MAC associée à l'adresse IP de la passerelle par défaut. Si l'on assigne une fausse adresse MAC (par exemple, 08:00:02:22:22:20) à la passerelle, toute tentative de communication avec elle échouera, car les paquets seront envoyés à une adresse MAC inexistante sur le réseau local. Un ping vers la passerelle ou une machine située derrière elle ne recevra pas de réponse, car le chemin vers la destination est rompu au niveau de la couche liaison de données.
Pour corriger cette situation, il faut supprimer l'entrée incorrecte du cache ARP avec la commande arp -d [adresse_IP_passerelle].
Démonstration d'ARP Spoofing avec une adresse MAC existante mais incorrecte
Une autre forme d'ARP Spoofing consiste à associer l'adresse IP d'un poste A à l'adresse MAC d'un poste B. Si, par exemple, le poste A est la passerelle, et que son adresse IP est associée à la MAC d'un autre poste C, les communications destinées à la passerelle seront redirigées vers le poste C. Cela interrompra la connectivité ou permettra au poste C d'intercepter le trafic. Un ping vers l'adresse IP du poste A (la passerelle, dans cet exemple) atteindra en réalité le poste C, qui ne saura probablement pas traiter le trafic, ce qui entraînera l'échec des communications.
Analyse des paquets ARP avec des outils de capture réseau
L'analyse des paquets ARP est cruciale pour comprendre le fonctionnement du protocole et détecter d'éventuelles anomalies ou attaques. Des outils comme tcpdump ou Wireshark sont très utiles.
Avec tcpdump, la commande tcpdump -e -vv arp permet de capturer les paquets ARP en affichant des informations détaillées (-vv pour très verbeux) et l'adresse MAC (-e). Si un ping est envoyé à une adresse IP inexistante sur le réseau, on observera des requêtes ARP répétées pour cette adresse IP sans aucune réponse, car aucune machine ne la possède.
Lors de l'analyse avec un outil graphique comme Wireshark, après avoir généré du trafic (par exemple, un ping vers une adresse existante), on peut identifier les deux paquets ARP d'un échange typique : une requête (Opération/Opcode 1) et une réponse (Opération/Opcode 2). Le paquet de requête ARP est destiné à l'adresse MAC de diffusion (FF:FF:FF:FF:FF:FF) pour atteindre tous les hôtes du segment de réseau. Le paquet de réponse, en revanche, est unicast, directement adressé à la machine qui a émis la requête.
En examinant un paquet de réponse ARP, on peut décoder les informations suivantes :
- En-tête Ethernet : Contient les adresses MAC source et destination, et le type d'Ethernet (0x0806 pour ARP).
- Données du paquet ARP : Incluent les champs décrits précédemment (Type matériel, Type protocole, longueurs, opération, adresses physiques et IP de l'émetteur et du récepteur).
Scénario de communication et résolution ARP
Considérons un poste client P2 (IP : 62.147.61.173, MAC : 00:50:04:6A:8D:CA) qui veut faire une requête HTTP vers un serveur WEB S2 (IP : 213.186.33.19). L'adresse IP du serveur S2 n'appartient pas au réseau local du client P2. Par conséquent, le client P2 enverra sa requête à son routeur INTERNET, dont il connaît l'adresse IP, pour que celui-ci l'achemine.
- L'adresse IP Source contenue dans le paquet envoyé par le client P2 sera 62.147.61.173 (son adresse IP).
- L'adresse IP Destination contenue dans le paquet envoyé par le client P2 sera 213.186.33.19 (l'adresse IP du serveur WEB S2).
- Pour envoyer ce paquet au routeur INTERNET (Routeur RA, IP : 62.147.61.254, MAC : 00:E0:18:01:28:DD), le client P2 doit connaître son adresse MAC. Il va donc effectuer une résolution ARP pour l'adresse IP 62.147.61.254 afin d'obtenir l'adresse MAC 00:E0:18:01:28:DD du routeur RA. Une fois l'adresse MAC obtenue et stockée dans son cache ARP, le client encapsulera le paquet IP dans une trame Ethernet dont l'adresse MAC de destination sera celle du routeur RA.
FAQ : Questions Fréquemment Posées sur ARP
Quelle est la fonction principale du protocole ARP ?
La fonction principale du protocole ARP (Address Resolution Protocol) est de traduire une adresse IP logique (couche réseau) en une adresse MAC physique (couche liaison de données) au sein d'un réseau local. Cela permet aux dispositifs de communiquer directement entre eux sur le même segment physique du réseau.
Comment l'ARP Spoofing peut-il compromettre la sécurité d'un réseau ?
L'ARP Spoofing, ou empoisonnement du cache ARP, est une attaque où un attaquant envoie de fausses réponses ARP pour associer son adresse MAC à l'adresse IP d'une autre machine (par exemple, la passerelle par défaut). Cela détourne le trafic destiné à la victime vers la machine de l'attaquant, permettant l'interception, la modification ou le rejet de données, et peut mener à des attaques de type "man-in-the-middle".
Quelle est la différence entre ARP et RARP ?
ARP (Address Resolution Protocol) résout une adresse IP en une adresse MAC. C'est le processus le plus courant pour la communication. RARP (Reverse ARP) fait l'inverse : il résout une adresse MAC en une adresse IP. RARP était principalement utilisé par les stations sans disque pour obtenir leur adresse IP au démarrage, mais il a été largement remplacé par DHCP.