ARP Address Resolution Protocol est un protocol de couche 2 permettant l'association d'adresses IP aux adresses MAC au sein d'un domaine de diffusion. Rôle et importance Tout comme l'envoi de courrier ou de courriels, il est impératif de connaître l'adresse du destinataire d'une communication pour permettre l'échange de données sur un réseau ethernet. Pour composer toute forme de communication réseau, il est nécessaire de connaître l'adresse MAC à laquelle acheminer une donnée pour composer le message. Lorsqu'il s'agit d'une communication destinée à une adresse IP, il sera impératif d'associer une adresse MAC à une adresse IP étant soit celle de la passerelle correspondant à la règle de la table de routage de l'émetteur ou celle de l'appareil à contacter au sein du réseau IP directement connecté à une interface réseau de l'hôte. Dû au concept d'un broadcast ou une diffusion, il serait impossible de placer toutes les interfaces ethernet existantes ayant accès à Internet dans un seul domaine de diffusion. Certains protocoles tels que spanning-tree, ARP, ou DHCP surchargeraient et/ou entreraient en conflit et surchargeraient les connexions réseau de tous les appareils reliés à Internet. Fonctionnement Fonctionnement régulier Le fonctionnement du protocole ARP est parmis les protocoles réseau les plus simples. Il suffit d'envoyer une requête à tous les appareils situé au sein du même domaine de diffusion (adresse MAC FF:FF:FF:FF:FF:FF) demandant quelle adresse MAC possède une adresse IP particulière. Si un appareil possède cette adresse IP, l'appareil répondra avec son adresse MAC pour savoir à quelle adresse MAC adresser une trame ethernet. Exemple d'une requête ARP :  Frame 76: 64 bytes on wire (512 bits), 64 bytes captured (512 bits) on interface -, id 0 Ethernet II, Src: 00:50:79:66:68:02, Dst: ff:ff:ff:ff:ff:ff Address Resolution Protocol (request) Hardware type: Ethernet (1) Protocol type: IPv4 (0x0800) Hardware size: 6 Protocol size: 4 Opcode: request (1) Sender MAC address: 00:50:79:66:68:02 Sender IP address: 192.168.255.3 Target MAC address: ff:ff:ff:ff:ff:ff Target IP address: 192.168.255.6 Dans cette requête ARP, le demandeur doté de l'adresse MAC 00:50:79:66:68:02 configuré avec l'adresse IP 192.168.255.3 demande à l'ensemble de son domaine de diffusion qui est configuré avec l'adresse IPv4 192.168.255.6. Exemple d'une réponse ARP :  Frame 77: 64 bytes on wire (512 bits), 64 bytes captured (512 bits) on interface -, id 0 Ethernet II, Src: 00:50:79:66:68:05, Dst: 00:50:79:66:68:02 Address Resolution Protocol (reply) Hardware type: Ethernet (1) Protocol type: IPv4 (0x0800) Hardware size: 6 Protocol size: 4 Opcode: reply (2) Sender MAC address: 00:50:79:66:68:05 Sender IP address: 192.168.255.6 Target MAC address: 00:50:79:66:68:02 Target IP address: 192.168.255.3 Puisque l'adresse MAC du demandeur est mentionné dans la requête, la réponse contenant l'adresse MAC de la destination sera acheminée seulement au demandeur et contiendra l'adresse IP ainsi que l'adresse MAC de la destination concernée par la demande. Empoisonnement ARP Le protocole ARP étant aussi simple, même si un appareil n'émet par de demande, il est possible d'informer un appareil ou même un réseau complet de notre adresse MAC et notre adresse IP. Ceci peut être utilisé pour permettre l'établissement plus rapide de connexion entre plusieurs appareils. En contrepartie, ceci est généralement utiliser pour empoisonner la table ARP de victimes pour effectuer une attaque de type man-in-the-middle. Ce type d'attaque consiste à constamment s'annoncer comme possédant l'adresse IP du routeur dans un domaine de diffusion pour recevoir l'ensemble des communications des appareils de ce réseau étant destinées au réseau étendu. Ceci peut être utilisé pour intercepter ou capturer le trafic des appareils d'un réseau, que ce soit pour modifier les réponses transmises aux émetteurs ou espionner les appareils d'un réseau. Il est aussi possible d'utiliser cette méthode pour effectuer une attaque de déni de service pour empêcher un appareil d'accéder à un autre appareil ou accéder au réseau étendu. Malgré que 192.168.122.229 n'ait effectué aucune requête ARP, 192.168.122.1 s'annonce comme étant 8.8.8.8 avec l'adresse MAC 52:54:00:e6:6e:44. Limitations Table de routage Pour qu'un appareil effectue une requête ARP lors d'une tentative de communication avec un appareil réseau, l'appareil doit être informé qu'il est directement connecté à ce réseau. Sous Windows, ces réseaux IP seront représentés comme étant "On-link". PS C:\Users\alexa> route print -4 =========================================================================== Interface List 18...00 e0 4c 98 39 88 ......Realtek Gaming USB 2.5GbE Family Controller 15...00 15 5d 00 7d 03 ......Hyper-V Virtual Ethernet Adapter #4 12...0a 00 27 00 00 0c ......VirtualBox Host-Only Ethernet Adapter 16...d8 cb 8a 35 f2 9a ......Hyper-V Virtual Ethernet Adapter #3 17...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1 3...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8 21...a0 9f 10 ba ba 02 ......Bluetooth Device (Personal Area Network) 1...........................Software Loopback Interface 1 27...00 15 5d ff 2d 30 ......Hyper-V Virtual Ethernet Adapter =========================================================================== IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 10.60.9.1 10.60.9.69 281 10.60.9.0 255.255.255.0 On-link 10.60.9.69 281 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 172.21.16.0 255.255.240.0 On-link 172.21.16.1 5256 192.168.56.0 255.255.255.0 On-link 192.168.56.1 281 192.168.118.0 255.255.255.0 On-link 192.168.118.1 291 192.168.184.0 255.255.255.0 On-link 192.168.184.1 291 D'autres appareils indiquerons qu'ils y sont directement connectés. En Linux, il sera indiqué que la passerelle est une carte réseau directement. Dans l'exemple suivant, 172.31.192.0/20 a comme passerelle "eth0" et utilisera "172.31.198.68" comme adresse IP source. [arsenaultja ~]$ ip route default via 172.31.192.1 dev eth0 172.31.192.0/20 dev eth0 proto kernel scope link src 172.31.198.68 En MikroTik, ces réseaux seront identifiés par un "c" pour "CONNECT". [admin@MikroTik] > ip route print Flags: D - DYNAMIC; A - ACTIVE; c - CONNECT, d - DHCP Columns: DST-ADDRESS, GATEWAY, DISTANCE DST-ADDRESS GATEWAY DISTANCE DAd 0.0.0.0/0 192.168.122.1 1 DAc 10.0.1.0/24 ether2 0 DAc 192.168.122.0/24 ether1 0 Même chose en Cisco. IOU1#show ip route Codes: L - local, C - connected, S - static Gateway of last resort is 192.168.122.1 to network 0.0.0.0 10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks C 10.0.0.0/24 is directly connected, Ethernet0/1 L 10.0.0.1/32 is directly connected, Ethernet0/1 192.168.122.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.122.0/24 is directly connected, Ethernet0/0 L 192.168.122.118/32 is directly connected, Ethernet0/0 Domaine de diffusion Il faut aussi garder en tête que puisqu'il s'agit d'une requête envoyée en "broadcast" ou "diffusée", les appareils tentant de communiquer ensemble doivent non seulement être directement connectés au même réseau mais doivent aussi faire partie du même domaine de diffusion. Si ces appareils sont séparés par des VLANs ou des routeurs, ils n'arriveront pas à recevoir de réponse à leur requête ARP et n'arriveront par conséquent pas à rejoindre les appareils appartenant à un autre domaine de diffusion.