{"id":352,"date":"2017-04-25T11:31:08","date_gmt":"2017-04-25T09:31:08","guid":{"rendered":"http:\/\/www.gatoux.com\/?page_id=352"},"modified":"2017-04-25T23:48:35","modified_gmt":"2017-04-25T21:48:35","slug":"arp-qui-es-tu","status":"publish","type":"page","link":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/arp-qui-es-tu\/","title":{"rendered":"ARP, qui es-tu ?"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p>Dans les chapitres pr\u00e9c\u00e9dents nous avons \u00e9tudi\u00e9 l&rsquo;adressage IP et les notions de base du routage. A plusieurs reprises mes sch\u00e9mas pr\u00e9sentaient des r\u00e9seaux locaux (<strong>LAN<\/strong> : <strong>L<\/strong>ocal <strong>A<\/strong>rea <strong>N<\/strong>etwork) nomm\u00e9s <strong>Ethernet<\/strong> et raccord\u00e9s \u00e0 des routeurs.<\/p>\n<p>Sur certains sch\u00e9mas j&rsquo;ai fait appara\u00eetre des <strong>trames de niveau 2<\/strong> qui v\u00e9hiculaient des paquets IP. Ces trames comportaient \u00e0 priori une <strong>adresse niveau 2<\/strong> ! Enfin j&rsquo;ai plusieurs fois fait allusion \u00e0 ARP qui permettrait de faire correspondre l&rsquo;adresse de niveau 2 avec celle de niveau 3 !<\/p>\n<p>Si vous \u00eates novices ou d\u00e9butants vous avez probablement d\u00fb me ha\u00efr et me mettre au rang des mauvais formateurs qui font expr\u00e8s de parler de trucs que vous connaissez pas sans vous \u00e9clairer, pour se donner un air intelligent ! Peut-\u00eatre m\u00eame que vous n&rsquo;en avez pas dormi !<\/p>\n<p>Je m&rsquo;en veux de vous laisser dans cet \u00e9tat, et je ne supporte pas qu&rsquo;on me ha\u00efsse ! Alors je vais tout vous dire &#8230; Fini les insomnies !<\/p>\n<p>Dans ce chapitre, pour comprendre l&rsquo;utilit\u00e9 d&rsquo;ARP nous aborderons rapidement la notion de r\u00e9seau local et d&rsquo;adresse de niveau 2, puis nous \u00e9tudierons le r\u00f4le d&rsquo;<strong>ARP<\/strong>, ses m\u00e9canismes de fonctionnement et son format de paquet. Enfin, si vous \u00eates sages, nous aborderons \u00e9galement la notion de <strong>Proxy-ARP<\/strong> (<em>ha ! ha ! Vous la connaissiez pas celle-l\u00e0, hein ?<\/em>).<\/p>\n<h2>C&rsquo;est quoi un LAN ?<\/h2>\n<h3>Caract\u00e9ristiques<\/h3>\n<p>Le but de ce cours n&rsquo;\u00e9tant pas de pr\u00e9senter les LANs je citerai leurs caract\u00e9ristiques essentielles :<\/p>\n<ul>\n<li><strong>couverture g\u00e9ographique faible<\/strong> (je viens de le dire !)<\/li>\n<li><strong>hauts d\u00e9bits de transmission<\/strong> (plusieurs M\u00e9ga bits par seconde : Mbps). Leur faible couverture g\u00e9ographique permet d&rsquo;installer des supports physiques d&rsquo;excellente qualit\u00e9 (affaiblissement faible, peu de diaphonie et paradiaphonie, bande passante \u00e9lev\u00e9e) pour la transmission de donn\u00e9es. Ces supports sont de la paire torsad\u00e9e (L120, cat\u00e9gorie 5, etc.), de la fibre optique ou du c\u00e2ble coaxial (<em>de plus en plus rare !<\/em>).<\/li>\n<li><strong>r\u00e9seau de diffusion<\/strong> (<em>avant l&rsquo;arriv\u00e9e des switchs je sais &#8230;Mais une chose \u00e0 la fois ! Pensez \u00e0 ceux qui n&rsquo;y connaissent rien !<\/em>). C&rsquo;est \u00e0 dire que toute donn\u00e9e \u00e9mise sur le r\u00e9seau est vue par tous les connect\u00e9s. Lorsqu&rsquo;une station envoie une trame de niveau 2 (<em>rappelez-vous le mod\u00e8le OSI ! Sur un support physique on impl\u00e9mente une proc\u00e9dure de niveau 2<\/em>), cette trame est diffus\u00e9e \u00e0 toutes les stations pr\u00e9sentes sur le r\u00e9seau local. Cette op\u00e9ration est facilit\u00e9e par la topologie logique (<em>et \u00e9ventuellement physique<\/em>) du r\u00e9seau. Les stations sont connect\u00e9s \u00e0 un bus ou \u00e0 un anneau (<em>pour 99% des cas !<\/em>). On dit que <strong>les r\u00e9seaux locaux fonctionnent sur des supports partag\u00e9s<\/strong>. Cette caract\u00e9ristique est extr\u00eamement importante car c&rsquo;est elle qui oblige \u00e0 la mise en place d&rsquo;un adressage au niveau 2.<\/li>\n<li><strong>m\u00e9thode d&rsquo;acc\u00e8s au support<\/strong>. Chaque type de LAN met en oeuvre une proc\u00e9dure particuli\u00e8re, et normalis\u00e9e, d&rsquo;acc\u00e8s au support afin d&rsquo;\u00e9mettre les trames. Cette proc\u00e9dure est commun\u00e9ment appel\u00e9e le <strong>MAC<\/strong> : <strong>M<\/strong>edium <strong>A<\/strong>ccess <strong>C<\/strong>ontrol. D&rsquo;une mani\u00e8re g\u00e9n\u00e9rale \u00e9tant donn\u00e9 que le support est partag\u00e9 entre toutes les stations d&rsquo;un r\u00e9seau local, seule une trame \u00e0 la fois est v\u00e9hicul\u00e9e par le support. Le MAC veille donc \u00e0 donner \u00e9quitablement la parole \u00e0 chaque station, et bien s\u00fbr d\u00e9tecte les \u00e9ventuelles cacophonie si certaines stations ne respectent pas le jeu. Enfin <strong>le MAC d\u00e9fini le format de la trame de niveau 2<\/strong>. Vous pouvez assimil\u00e9 le MAC \u00e0 la proc\u00e9dure de niveau 2 au m\u00eame titre qu&rsquo;HDLC par exemple pour un r\u00e9seau WAN.<\/li>\n<\/ul>\n<p>Pour la suite de ce chapitre, il est important de retenir que :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-235 alignleft\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/MAC1.gif\" alt=\"\" width=\"216\" height=\"163\" \/><\/p>\n<p>&nbsp;<\/p>\n<ul>\n<li><strong>un LAN est un r\u00e9seau de diffusion<\/strong> qui partage son support entre toutes les stations pr\u00e9sentes (technologie logique du bus).<\/li>\n<li><strong>un LAN impl\u00e9mente une proc\u00e9dure de niveau 2 nomm\u00e9e MAC<\/strong> qui d\u00e9finie un format de trame et g\u00e8re la m\u00e9thode d&rsquo;acc\u00e8s au support.<\/li>\n<li>en raison de la caract\u00e8ristique de diffusion, <strong>le MAC d\u00e9fini un adressage de niveau 2 pour les trames<\/strong> (adresse de destination et adresse source)<\/li>\n<\/ul>\n<h3>Principaux LAN<\/h3>\n<p>La star incontest\u00e9e est <strong>Ethernet<\/strong> ! Ce type de r\u00e9seau local repr\u00e9sente aujourd&rsquo;hui plus de <strong>80% du parc<\/strong>. Il se d\u00e9cline en plusieurs d\u00e9bit, 10, 100, 1000 et bient\u00f4t 10 000 Mbps ! Les appelations courantes sont respectivment <strong>Ethernet, Fast Ethernet, Giga Ethernet et 10 Giga Ethernet<\/strong> (<em>il y a m\u00eame des bruits de couloirs sur du Tera Ethernet ! Moi \u00e7a me fait peur !<\/em>).<\/p>\n<p>Un autre r\u00e9seau local assez connu, mais en s\u00e9rieuse perte de vitesse : <strong>Token Ring<\/strong> (<em>Anneau \u00e0 jeton<\/em>). C&rsquo;est une production d&rsquo;IBM ! Belle technique, bonne qualit\u00e9 de service mais pas assez ouvert, trop complexe. N&rsquo;existe que dans les environnement IBM d&rsquo;ancienne g\u00e9n\u00e9ration (SNA). Il se d\u00e9cline en deux versions 4 et 16 Mbps.<\/p>\n<p>Parfois vous entendrez parler de <strong>FDDI<\/strong> mais pour moi c&rsquo;est un <strong>MAN<\/strong> (<strong>M<\/strong>etropolitan <strong>A<\/strong>rea <strong>N<\/strong>etwork) offrant une couverture g\u00e9ographique d&rsquo;une centaine de Km. Ce n&rsquo;est pas un LAN. Mais il est vrai qu&rsquo;il est parfois utilis\u00e9 en LAN pour son d\u00e9bit (100 Mbps) et sa fiabilit\u00e9 (double-anneau \u00e0 reconfiguration automatique). C&rsquo;est une technologie assez ch\u00e8re.<\/p>\n<h3>L&rsquo;adressage MAC<\/h3>\n<p>Ce qui nous pr\u00e9occupe dans ce cours, c&rsquo;est l&rsquo;adressage de niveau 2. En effet sur un LAN, les stations voient passer toutes les trames \u00e9mises, il faut donc qu&rsquo;elles puissent diff\u00e9rencier celles qui les concerne des autres. Pour cela, elles vont se baser sur <strong>l&rsquo;adresse destination de la trame<\/strong>. Une station ne lira le contenu que des trames qui lui sont adress\u00e9es.<\/p>\n<p>Quand une trame est <strong>adress\u00e9e \u00e0 une station unique du r\u00e9seau local<\/strong>, elle comporte un format d&rsquo;adresse dit \u00ab\u00a0<strong>unicast<\/strong>\u00ab\u00a0. Mais une trame peut \u00e9galement \u00eatre <strong>adress\u00e9e \u00e0 un groupe de stations ou \u00e0 toutes les stations du r\u00e9seau local<\/strong>. L&rsquo;adressage est alors respectivement nomm\u00e9 \u00ab\u00a0<strong>multicast<\/strong>\u00a0\u00bb et \u00ab\u00a0<strong>broadcast<\/strong>\u00ab\u00a0.<\/p>\n<p>La station qui re\u00e7oit une trame doit pouvoir y r\u00e9pondre. Chaque trame poss\u00e9de donc <strong>une adresse MAC source<\/strong> qui permet au destinataire d&rsquo;identifier l&rsquo;\u00e9metteur.<\/p>\n<p>Pour des raisons que je ne pr\u00e9senterai pas ici, l&rsquo;adressage MAC garanti l&rsquo;unicit\u00e9 mondiale d&rsquo;une adresse. L&rsquo;adresse d&rsquo;une station est d&rsquo;ailleurs inscrite \u00ab\u00a0en dur\u00a0\u00bb sur la carte r\u00e9seau install\u00e9e dans la machine.<\/p>\n<p><strong>Cette adresse est d\u00e9finie sur 6 octets<\/strong>. <strong>Les trois premiers octets indiquent le num\u00e9ro du constructeur<\/strong> et <strong>les trois derniers indiquent le num\u00e9ro de la carte<\/strong> dans la s\u00e9rie du constructeur. Si demain vous voulez vous mettre \u00e0 produire des cartes Ethernet, pour faire concurrence \u00e0 3Com (les fameuses EtherLink), il vous faudra d&rsquo;abord demander \u00e0 un organisme central (je sais plus lequel !), une adresse constructeur. Apr\u00e8s quoi, vous vous engagez \u00e0 ne pas produire deux cartes ayant le m\u00eame num\u00e9ro sur les toris derniers octets. Ainsi l&rsquo;unicit\u00e9 de l&rsquo;adresse est garanti ! Bien s\u00fbr si vous d\u00e9cidez de concurrencer Cisco il vous faudra prendre plusieurs adresses constructeurs, pour pouvoir produire toutes vos cartes ! Mais sur 6 octets c&rsquo;est :<\/p>\n<ul>\n<li>2<sup>24<\/sup> (plus de 16 millions !) constructeurs possibles<\/li>\n<li>2<sup>24<\/sup> (plus de 16 millions !) cartes par constructeur !<\/li>\n<\/ul>\n<p>En v\u00e9rit\u00e9, pour assurer les adressages multicast et broadcast, certains bits sont bloqu\u00e9s notamment sur la partie constructeur ! Mais on a de la marge !<\/p>\n<p>Lorsqu&rsquo;on \u00e9nonce une adresse MAC, on donne sa valeur en hexad\u00e9cimal pour chaque octet (Et oui ! Apr\u00e8s le d\u00e9cimale et le binaire, on passe \u00e0 l\u2019hexad\u00e9cimal ! Pas facile le r\u00e9seau !). Par exemple : <strong>00.00.0C.1A.BE.34<\/strong> ! Super lisible non ?<\/p>\n<p>Peu importe ! Retenez simplement :<\/p>\n<ul>\n<li>qu&rsquo;une <strong>adresse MAC se d\u00e9finie sur 6 octets<\/strong><\/li>\n<li>qu&rsquo;il existe des adresses MAC destinations \u00ab\u00a0<strong>unicast<\/strong>\u00ab\u00a0, et \u00ab\u00a0<strong>broadcast<\/strong>\u00a0\u00bb (<em>vous pouvez oublier le \u00ab\u00a0multicast\u00a0\u00bb pour ce cours !<\/em>). L&rsquo;adresse destination broadcast a pour valeur hexad\u00e9cimale : <strong>FF.FF.FF.FF.FF.FF<\/strong> (tous les bits \u00e0 1 !).<\/li>\n<li>que l&rsquo;adresse est, g\u00e9n\u00e9ralement, <strong>fix\u00e9e \u00ab\u00a0en dur\u00a0\u00bb sur la carte r\u00e9seau de la machine<\/strong>. Autrement dit, si vous changez la carte r\u00e9seau d&rsquo;une machine vous allez changer d&rsquo;adresse MAC !! Croyez-moi, ce n&rsquo;est pas anodin si j&rsquo;insiste sur ce point !<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-304 aligncenter\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/TRAME_MAC.gif\" alt=\"\" width=\"369\" height=\"177\" \/><\/p>\n<p>Vous n&rsquo;avez pas besoin d&rsquo;en savoir plus pour aborder ARP.<\/p>\n<h2>R\u00f4le d&rsquo;ARP<\/h2>\n<p>Nous avons vu qu&rsquo;une station ne lisait le contenu d&rsquo;une trame qu&rsquo;\u00e0 la condition qu&rsquo;elle lui soit adress\u00e9e. Or le paquet IP est justement plac\u00e9 dans la trame ! Lorsqu&rsquo;une couche haute transmets des donn\u00e9es \u00e0 une autre machine, elle communique \u00e0 la couche IP, l&rsquo;adresse IP de destination.<\/p>\n<p>IP formate ensuite un paquet avec une ent\u00eate IP. Celle-ci comportent l&rsquo;adresse de destination, transmise par la couche sup\u00e9rieure, et l&rsquo;adresse IP source de l&rsquo;\u00e9metteur. Cette derni\u00e8re est connu par IP car vous l&rsquo;avez initialis\u00e9e lors de l&rsquo;installation de la machine.<\/p>\n<p>IP communique ce paquet \u00e0 la couche 2 (ici le MAC) pour l&rsquo;encapsuler dans une trame MAC avant \u00e9mission sur le support. Mais il doit \u00e9galement communiquer l&rsquo;adresse MAC de destination de la trame, pour que la couche 2 puisse formater correctement la trame ! D&rsquo;o\u00f9 IP sortira-t-il cette adresse ? Il va l&rsquo;inventer ? Non &#8230; <strong>ARP<\/strong> est l\u00e0 !<\/p>\n<p><strong>ARP<\/strong> pour <strong>A<\/strong>ddress <strong>R<\/strong>esolution <strong>P<\/strong>rotocol prend en charge, comme son nom l&rsquo;indique, la <strong>r\u00e9solution d&rsquo;adresse entre le niveau 2 et le niveau 3<\/strong>. Il a pour r\u00f4le de trouver l&rsquo;adresse MAC correspondant \u00e0 une adresse IP donn\u00e9e.<\/p>\n<p>Lorsqu&rsquo;il a d\u00e9couvert cette adresse, il met \u00e0 jour une <strong>table ARP<\/strong> !<\/p>\n<h2>Fonctionnement d&rsquo;ARP<\/h2>\n<p>Nous venons de voir qu&rsquo;IP doit transmettre \u00e0 la couche MAC l&rsquo;adresse de destination MAC de la trame qui v\u00e9hiculera le paquet IP transmis. La proc\u00e9dure est la suivante :<\/p>\n<ul>\n<li>IP scrute sa table ARP pour trouver la correspondance MAC de l&rsquo;adresse IP transmise par la couche sup\u00e9rieure :\n<ul>\n<li>S&rsquo;il n&rsquo;a jamais communiqu\u00e9 avec la station ayant cette adresse depuis son \u00ab\u00a0boot\u00a0\u00bb (la table ARP est en RAM, donc volatile !), il ne conna\u00eet pas la correspondance et passe \u00e0 l&rsquo;\u00e9tape suivante.<\/li>\n<li>S&rsquo;il trouve la correspondance il transmet l&rsquo;adresse MAC \u00e0 la couche MAC en m\u00eame temps que son paquet IP (<em>rappelez-vous le mod\u00e8le OSI et le dialogue vertical inter-couches !<\/em>) et c&rsquo;est fini pour lui !<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-253 aligncenter\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/PROCESS_ARP.gif\" alt=\"\" width=\"256\" height=\"162\" \/><\/p>\n<ul>\n<li>S&rsquo;il ne trouve pas de correspondance, il transmet l&rsquo;adresse IP destination au protocole ARP, en lui demandant de trouver la correspondance d&rsquo;adresse MAC :\n<ul>\n<li>ARP formate un paquet <strong>ARP Request<\/strong> (<em>nous verrons son format plus tard<\/em>), qu&rsquo;il place directement dans une trame MAC \u00ab\u00a0<strong>broadcast<\/strong>\u00ab\u00a0. Celle-ci, parce qu&rsquo;elle est \u00e9mise en broadcast, est lue par toutes les stations du LAN. Le paquet ARP_Request dit : \u00ab\u00a0<em>Coucou, je suis 10.0.0.1 sur 00.00.0C.1A.34.EC et je cherche 10.0.0.2. Y a quelqu&rsquo;un ??<\/em>\u00ab\u00a0.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-202 aligncenter\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/ARP_REQ.gif\" alt=\"\" width=\"394\" height=\"172\" \/><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Toutes les stations actives du r\u00e9seau re\u00e7oivent la trame et lisent son contenu. Elles d\u00e9tectent un paquet <strong>ARP-Request<\/strong> qu&rsquo;elles transmettent \u00e0 leur propre sous-programme ARP.<\/li>\n<li>Seule la station ayant l&rsquo;adresse IP indiqu\u00e9e dans le paquet ARP_Request r\u00e9pondra ! Elle \u00e9mettra un paquet <strong>ARP_Reply<\/strong> annon\u00e7ant : \u00ab\u00a0<em>Salut 10.0.0.1 ! Moi je suis bien 10.0.0.2 et j&rsquo;habite \u00e0 00.00.0C.2A.32.55 ! Ecris-moi !<\/em>\u00ab\u00a0. Ce paquet <strong>ARP_Reply<\/strong> est encapsul\u00e9 dans une trame \u00e9mise en \u00ab\u00a0<strong>unicast<\/strong>\u00a0\u00bb \u00e0 la station qui a recherch\u00e9e l&rsquo;adresse (<em>adresse MAC : 00.00.0C.1A.34.EC pour notre exemple<\/em>), il est, en effet, inutile d&#8217;emb\u00eater tous le monde avec la r\u00e9ponse ! La station en profite \u00e9galement pour mettre \u00e0 jour sa table ARP (<em>pour notre exemple : 10.0.0.1 = 00.00.0C.1A.34.EC<\/em>).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-203 aligncenter\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/ARP_RESP.gif\" alt=\"\" width=\"418\" height=\"143\" \/><\/p>\n<ul>\n<li>La station ayant initi\u00e9 la s\u00e9quence ARP, re\u00e7oit donc une trame MAC qui lui est adress\u00e9e et contenant un paquet ARP_Response v\u00e9hiculant l&rsquo;adresse MAC en correspondance avec l&rsquo;adresse IP sur laquelle elle a lanc\u00e9 la recherche. Elle met \u00e0 jour sa table ARP (<em>pour notre : 10.0.0.2 = 00.00.0C.2A.32.55<\/em>).<\/li>\n<\/ul>\n<p>La s\u00e9quence de recherche est termin\u00e9e ! Maintenant IP peut envoyer son paquet \u00e0 la couche MAC en transmettant l&rsquo;adresse MAC !<\/p>\n<p>Vous voyez, ARP c&rsquo;est tr\u00e8s simple !<\/p>\n<h2>Formats des paquets ARP<\/h2>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-251 alignright\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/PQ_ARP.gif\" alt=\"\" width=\"119\" height=\"311\" \/>ARP est encapsul\u00e9 directement dans IP (il n&rsquo;est pas plac\u00e9 dans UDP ou TCP). Il propose deux paquets :<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>La requ\u00eate pour initier la recherche : <strong>ARP_Request<\/strong><\/li>\n<li>La r\u00e9ponse \u00e0 la requ\u00eate : <strong>ARP_Reply<br \/>\n<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"color: #663300;\"><strong>Le champ HW<\/strong> : indique le <strong>type de r\u00e9seau support<\/strong> sur lequel la s\u00e9quence a \u00e9t\u00e9 activ\u00e9e. Pour Ethernet le code est (0001)h. <\/span><\/li>\n<li><span style=\"color: #663300;\"><strong>Le champ Longueur d&rsquo;adresse MAC<\/strong> : indique le <strong>nombre d&rsquo;octets des champs d&rsquo;adresse MAC des paquets ARP<\/strong>. La valeur est g\u00e9n\u00e9ralement (0006)h.<\/span><\/li>\n<li><span style=\"color: #663300;\"><strong>Le champ Longueur d&rsquo;adresse protocolaire<\/strong> : indique la longueur <strong>en octets des champs d&rsquo;adresse de niveau 3<\/strong>. Pour IP la valeur est (0004)h..<\/span><\/li>\n<li><span style=\"color: #663300;\"><strong>Le champ Code d&rsquo;op\u00e9ration<\/strong> : indique le <strong>type de paquet ARP<\/strong>. (0001)h = ARP_Request et (0002)h = ARP_Response (appel\u00e9 aussi ARP_Reply).<\/span><\/li>\n<li><span style=\"color: #663300;\"><strong>Les champs adresse MAC source et adresse protocolaire source<\/strong> : supportent les adresses MAC et protocolaire (IP) de l&rsquo;\u00e9metteur du paquet. Dans le cas d&rsquo;un paquet ARP_Request ce sont donc les adresses niveau 2 et 3 de l&rsquo;initiateur de la s\u00e9quence ARP. Dans le cas du paquet ARP_Reply, la station r\u00e9pondant \u00e0 la requ\u00eate ARP y place ses propres adresses niveau 2 et 3.<\/span><\/li>\n<li><span style=\"color: #663300;\"><strong>Les champs adresse MAC destination et adresse protocolaire destination<\/strong> : supportent les adresses MAC et protocolaire (IP) de la station \u00e0 atteindre. Dans le cas d&rsquo;un paquet ARP_Request ce sont donc les adresses niveau 2 et 3 de la station pour laquelle l&rsquo;initiateur de la s\u00e9quence ARP a lanc\u00e9 la recherche. Comme l&rsquo;\u00e9metteur du paquet ne connait pas l&rsquo;adresse niveau 2 de la station qu&rsquo;il cherche \u00e0 atteindre (normal ! c&rsquo;est justement ce qu&rsquo;il cherche \u00e0 conna\u00eetre !), le champ adresse MAC destination est plac\u00e9 \u00e0 0. Dans un paquet ARP_Request le champ adresse MAC destination est donc toujours \u00e0 0, par contre le champ adresse protocolaire destination contient toujours l&rsquo;adresse niveau 3 de la station dont on veut faire la r\u00e9solution d&rsquo;adresse. Dans le cas du paquet ARP_Reply, la station r\u00e9pondant \u00e0 la requ\u00eate ARP remplace les valeurs de ces champs par les valeurs d&rsquo;adresse de l&rsquo;\u00e9metteur du paquet ARP_Request. Elle recopie en fait les champs adresse MAC source et adresse protocolaire source du paquet ARP_Request re\u00e7u dans les champs destination correspondants du paquet ARP_Reply \u00e9mis en r\u00e9ponse.<\/span><\/li>\n<\/ul>\n<h2>Quelques remarques \u00e0 propos d&rsquo;ARP<\/h2>\n<h3>Les probl\u00e8me li\u00e9s \u00e0 la table ARP<\/h3>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Je vous l&rsquo;ai pr\u00e9c\u00e9demment indiqu\u00e9 <strong>la table ARP est m\u00e9moris\u00e9e en RAM<\/strong>. De plus, dans la majorit\u00e9 des cas<strong> il n&rsquo;y a pas de timeout sur les tables ARP<\/strong>. Ceci veut dire que lorsqu&rsquo;une correspondance MAC-IP a \u00e9t\u00e9 r\u00e9alis\u00e9e elle reste m\u00e9moris\u00e9e dans la station jusqu&rsquo;au \u00ab\u00a0reboot\u00a0\u00bb de celle-ci. Et croyez-moi ! Ce n&rsquo;est pas anodin !<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Dans une architecture classique des stations et des serveurs partageant le m\u00eame r\u00e9seau local discutent ensemble. Supposons qu&rsquo;un PC rencontre un probl\u00e8me vous allez le remplacer. La carte r\u00e9seau du nouveau PC aura une adresse MAC diff\u00e9rente. Par contre vous aurez r\u00e9affect\u00e9 au PC la m\u00eame adresse IP. Mais le serveur a m\u00e9moris\u00e9 dans sa table ARP la correspondance \u00ab\u00a0Ancienne @MAC-@IP\u00a0\u00bb. S&rsquo;il \u00e9met des donn\u00e9es vers le PC celui-ci ne lira pas les trames puisque leurs adresses destinations ne correspondent pas \u00e0 son adresse MAC !<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Rassurez-vous ! Pour un PC ce n&rsquo;est pas grave ! En effet, pour le remplacer vous avez d\u00fb le mettre hors tension. Le nouveau PC a donc une table ARP vierge. Comme un PC est plut\u00f4t client, c&rsquo;est lui qui va demander des infos au serveur, ce n&rsquo;est pas le serveur qui va d\u00e9cider de lui parler de lui-m\u00eame (<em>il a autre chose \u00e0 faire, le bougre, que de faire la causette aux nouveaux qui lui demandent rien !!<\/em>). Le PC va donc lancer une s\u00e9quence ARP vers le serveur pour mettre \u00e0 jour sa table et le serveur va en profiter pour d\u00e9tecter la modification d&rsquo;adresse MAC et mettre \u00e0 jour sa propre table !<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Mais imaginons que vous remplaciez une station qui ne cause pas toute seule sans \u00eatre sollicit\u00e9e ! Imaginez que vous remplaciez un serveur ou un routeur !! <strong>Pensez-bien \u00e0 faire rebooter les PC du LAN<\/strong> &#8230; Sinon &#8230; Plus de communication avec le serveur ou le routeur ! Toutes les tables ARP des stations sont fausses pour la r\u00e9solution d&rsquo;adresse de l&rsquo;\u00e9quipement que vous avez remplac\u00e9 !<\/span><\/p>\n<h3>ARP et la passerelle par d\u00e9faut<\/h3>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Dans les exemples de routage des chapitres pr\u00e9c\u00e9dents, et notamment dans le paragraphe \u00ab\u00a0Sortir du r\u00e9seau\u00a0\u00bb du chapitre 6, nous avons vu qu&rsquo;une station envoie son paquet \u00e0 une passerelle par d\u00e9faut lorsque le paquet est \u00e0 destination d&rsquo;un autre r\u00e9seau IP.<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Nous avons tr\u00e8s succinctement \u00e9voqu\u00e9 le r\u00f4le d&rsquo;ARP dans ce m\u00e9canisme. En effet, comment envoyer un paquet IP \u00e0 destination de 12.0.0.1 en voulant le transf\u00e9rer \u00e0 10.0.0.254 sans changer l&rsquo;adresse IP du paquet ? C&rsquo;est simple &#8230; On l&rsquo;envoie dans une trame ayant pour adresse destination, l&rsquo;adresse MAC du routeur (passerelle).<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Lorsque la station doit envoyer un paquet en dehors de son r\u00e9seau IP, elle scrute sa configuration pour trouver l&rsquo;adresse de Gateway Default que vous lui avez donn\u00e9 lors de son installation. Puis elle regarde dans sa table ARP, l&rsquo;adresse MAC correspondante \u00e0 l&rsquo;adresse IP de la Gateway Default. Si celle-ci existe dans la table ARP, la station encapsule son paquet IP dans une trame \u00e0 destination de l&rsquo;adresse MAC de la passerelle. Si celle-ci n&rsquo;existe pas, elle lance une proc\u00e9dure de r\u00e9solution d&rsquo;adresse ARP, telle que nous l&rsquo;avons pr\u00e9c\u00e9demment \u00e9tudi\u00e9 !<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Et le tour est jou\u00e9 ! La passerelle re\u00e7oit une trame qui lui est destin\u00e9e et qui v\u00e9hicule un paquet IP qui ne lui est pas destin\u00e9. Elle applique l&rsquo;organigramme de routage tel que nous l&rsquo;avons vu au chapitre 6.<\/span><\/p>\n<h3>La temp\u00eate du matin &#8230;<\/h3>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Tous le monde commence son travail entre 8 et 9 heures le matin &#8230; Enfin c&rsquo;est la moyenne des bureaux &#8230; En arrivant la premi\u00e8re op\u00e9ration est d&rsquo;allumer son PC avant m\u00eame de retirer son manteau (<em>on esp\u00e8re que Windows aura fini son boot quand on sera revenu du premier caf\u00e9 !<\/em>).<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Comme les tables ARP sont vides \u00e0 ce moment l\u00e0 (<em>rappelez-vous, elles sont stock\u00e9es en RAM, donc volatile<\/em>). D\u00e8s qu&rsquo;on va appel\u00e9 un serveur il va falloir renseigner la table ARP. Chaque fois qu&rsquo;on appelle une ressource il faut de nouveau renseigner cette table.<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Les requ\u00eates sont v\u00e9hicul\u00e9es par des trames \u00ab\u00a0<strong>broadcast<\/strong>\u00ab\u00a0, qui sont donc lus par toutes les stations. Bien souvent seuls les serveurs sont sollicit\u00e9s et sont donc les seuls \u00e0 r\u00e9pondre.<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Quoiqu&rsquo;il en soit, lorsque vous placez un analyseur sur un r\u00e9seau LAN vous assistez \u00e0 des \u00ab\u00a0<strong>temp\u00eates de broadcast<\/strong>\u00a0\u00bb dans ce cr\u00e9neau horaire. Ceci entra\u00eene une surcharge momentan\u00e9e du r\u00e9seau &#8230; Il est d\u00e9conseill\u00e9 de proc\u00e9der dans ce cr\u00e9neau horaire \u00e0 des op\u00e9rations lourdes de duplication de bases par exemple !! Vous noterez un ralentissement non n\u00e9gligeable !<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Les serveurs doivent r\u00e9pondre \u00e0 des centaines de requ\u00eates ARP, le LAN v\u00e9hicule deux trames par requ\u00eate, toutes les stations lisent les broadcast des requ\u00eates ARP &#8230; Et on travaille quand ?<\/span><\/p>\n<h3>ARP et la s\u00e9curit\u00e9 !<\/h3>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">ARP est un bonheur pour les \u00ab\u00a0hackers\u00a0\u00bb et une plaie pour les administrateurs. En effet gr\u00e2ce \u00e0 ARP, si vous avez les moyens d\u2019acc\u00e9der au LAN, vous pouvez conna\u00eetre tr\u00e8s rapidement l&rsquo;ensemble des stations pr\u00e9sentent sur un LAN !<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Avec un peu de connaissance, vous pouvez programmer un petit utilitaire ou installer sur votre PC un analyseur qui va scruter le contenu de tous les ARP_Request et ARP_Reply \u00e9mis sur le LAN. Vous aurez ainsi d\u00e9couvert toutes les adresses niveau 2 et 3 des \u00e9quipements du LAN.<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Ne reste plus qu&rsquo;\u00e0 faire \u00ab\u00a0sauter\u00a0\u00bb les protections des couches sup\u00e9rieures &#8230; <\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Vous pouvez m\u00eame vous substituer \u00e0 une station lorsque celle-ci aura r\u00e9alis\u00e9 son authentification d&rsquo;acc\u00e8s aupr\u00e8s d&rsquo;un serveur !! Vous attendez qu&rsquo;elle entre son login\/password en surveillant le trafic. Puis vous reprogrammez votre station avec l&rsquo;@MAC et l&rsquo;@IP de la station. Vous acc\u00e9dez ainsi en son nom au serveur, et lui ni voit que du feu !<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Vous allez me dire qu&rsquo;il faut quand m\u00eame acc\u00e9der au LAN ! Certes, mais les anglo-saxons estiment que 70% des actes de piratages ont pour source l&rsquo;int\u00e9rieur de l&rsquo;entreprise. Je vous accorde qu&rsquo;ils sont un peu parano, mais &#8230;<\/span><\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #663300;\">Rassurez-vous, des m\u00e9canismes de couches sup\u00e9rieures permettent de vaincre ce trou de s\u00e9curit\u00e9, mais il existe aussi des moyens de les faire sauter ! <\/span><\/p>\n<h2>Le proxy-ARP, c&rsquo;est quoi ?<\/h2>\n<p>Vous avez peut-\u00eatre d\u00e9j\u00e0 crois\u00e9 ce terme en vous demandant pourquoi un ARP de proximit\u00e9 ? <strong>En fait c&rsquo;est un ARP qui trompe<\/strong> !!<\/p>\n<p>Supposons que votre entreprise rach\u00e8te une autre entreprise (<em>disons que vous travaillez chez Cisco, Intel ou Microsoft !<\/em>). Le si\u00e8ge de cette nouvelle entreprise poss\u00e9de un r\u00e9seau local supportant l&rsquo;adresse r\u00e9seau 10.0.0.0. Pas de chance ! C&rsquo;est la m\u00eame adresse r\u00e9seau que celle de votre si\u00e8ge ! Et bien s\u00fbr, votre PDG veut que vous interconnectiez les deux sites (<em>heu .. Plut\u00f4t DSI ! Un PDG, ne sait pas ce que veut dire \u00ab\u00a0interconnecter\u00a0\u00bb ! Lui il dit : \u00ab\u00a0Fusionner moi nos bases de connaissances !\u00a0\u00bb<\/em>).<\/p>\n<p>Vous voil\u00e0 bien emb\u00eat\u00e9 ! Si vous placez un routeur entre les deux, il va \u00eatre malade si vous placez chacune de ces interfaces dans le m\u00eame r\u00e9seau IP (<em>croyez-moi, il ne se laissera pas faire ! Belliqueux l&rsquo;engin !<\/em>).<\/p>\n<p>Mais dans votre malheur, vous avez un peu de chance (<em>croyez-moi, profitez-en ! Parce que c&rsquo;est pas souvent !<\/em>). En effet, en examinant le plan d&rsquo;adressage de l&rsquo;entreprise achet\u00e9e vous remarquez que tous les \u00e9quipements de son r\u00e9seau local ont pour adresses 10.1.X.X avec un masque 255.0.0.0. Or vos stations sont toutes avec une adresse 10.2.X.X\/8 ! Quelle chance (<em>croyez-moi ! J&rsquo;insiste ! C&rsquo;est pas souvent !<\/em>) ! Vous allez vous en sortir avec <strong>Proxy-ARP<\/strong>, sans \u00eatre oblig\u00e9 de reprogrammer toutes les stations (<em>ben oui .. Vous connaissez pas DHCP alors vous en \u00eates pour vos frais .. C&rsquo;\u00e9tait une petite remarque \u00e0 l&rsquo;attention des experts dans le fond de la salle, qui sont tordus de rire !<\/em>).<\/p>\n<p>Vous avez remarqu\u00e9 que les stations avaient un masque de r\u00e9seau classe A sans sous-r\u00e9seau. Autrement dit, la station 10.2.0.1 de votre si\u00e8ge estime que le serveur 10.1.0.1 du si\u00e8ge de l&rsquo;entreprise achet\u00e9e est sur son r\u00e9seau IP ! Elle va donc tenter de le contacter directement sans passer par votre routeur install\u00e9 entre les deux r\u00e9seaux ! Quand elle lancera une requ\u00eate ARP pour conna\u00eetre l&rsquo;adresse MAC du serveur, elle n&rsquo;obtiendra rien puisqu&rsquo;il n&rsquo;est pas sur son LAN !<\/p>\n<p>En installant un routeur entre les deux r\u00e9seaux, qui impl\u00e9mente la fonction Proxy-ARP vous allez r\u00e9soudre le probl\u00e8me ! Vous devez simplement placer chaque interface du routeur dans un sous-r\u00e9seau diff\u00e9rent :<\/p>\n<ul>\n<li>L&rsquo;interface branch\u00e9e sur le LAN de l&rsquo;entreprise achet\u00e9e sera param\u00e9tr\u00e9e avec l&rsquo;adresse 10.1.254.254\/16 (le masque indique que l&rsquo;interface est dans le sous-r\u00e9seau 10.1.0.0).<\/li>\n<li>L&rsquo;interface branch\u00e9e sur le LAN de votre si\u00e8ge sera param\u00e9tr\u00e9e avec l&rsquo;adresse 10.2.254.254\/16 (le masque indique que l&rsquo;interface est dans le sous-r\u00e9seau 10.2.0.0).<\/li>\n<\/ul>\n<p>Si la fonction Proxy-ARP est impl\u00e9ment\u00e9e dans le routeur, voici ce qui va se passer :<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-254 aligncenter\" src=\"http:\/\/www.gatoux.com\/wp-content\/uploads\/2017\/04\/PROXY_ARP.gif\" alt=\"\" width=\"431\" height=\"264\" \/><\/p>\n<ul>\n<li>10.2.0.1 va tenter de trouver l&rsquo;adresse MAC de 10.1.0.1 par un ARP_Request. Cette requ\u00eate est \u00e9mise dans une trame MAC en broadcast (<em>Fl\u00e8che 1 sur le sch\u00e9ma<\/em>) . Toutes les stations du r\u00e9seau vont lire cette trame !<\/li>\n<li>Le routeur, qui est une station comme les autres, va lire la trame, transf\u00e9rer le paquet ARP \u00e0 son module ARP ! Il verra que ce n&rsquo;est pas son adresse IP d&rsquo;interface qu&rsquo;on sollicite.<\/li>\n<li>Mais, si le Proxy-ARP est actif, il va essayer de corr\u00e9ler l&rsquo;adresse r\u00e9seau recherch\u00e9e avec celles existants dans sa table de routage. Il va donc voir qu&rsquo;on cherche \u00e0 joindre une station du sous-r\u00e9seau 10.1.0.0 qui est sur son autre interface ! Il va alors se substituer \u00e0 l&rsquo;adresse demand\u00e9e, en r\u00e9pondant \u00e0 l&rsquo;ARP_Request, par un ARP_Response (<em>Fl\u00e8che 2 du sch\u00e9ma<\/em>) donnant l&rsquo;adresse MAC de son interface sur le LAN 10.2.0.0.<\/li>\n<li>La station va croire que c&rsquo;est 10.1.0.1 qui lui r\u00e9pond et va initialiser dans sa table ARP, la correspondance 10.1.0.1 = @MAC routeur. Tous les prochains paquets \u00e9mis \u00e0 10.1.0.1 seront donc plac\u00e9s dans des trames \u00e0 destination du routeur !<\/li>\n<\/ul>\n<p>Et c&rsquo;est tr\u00e8s bien comme \u00e7a ! Le routeur pourra router les paquets et tout le monde sera content !<\/p>\n<p>C&rsquo;est \u00e7a le Proxy-ARP !!<\/p>\n<h2>Conclusion du chapitre<\/h2>\n<p>Ouf ! C&rsquo;en est fini d&rsquo;ARP ! Pas compliqu\u00e9, mais difficile \u00e0 expliquer par \u00e9crit !! Pas trop fatiguant ce chapitre ? Normal ! On prenait des forces pour la suite &#8230;<\/p>\n<p>Dans le chapitre suivant (<em>pour se r\u00e9veiller<\/em>) on va fragmenter le paquet IP ! C&rsquo;est sympa un paquet IP en petits morceaux, non ?<\/p>\n<h5 align=\"center\"><a href=\"http:\/\/www.gatoux.com\/index.php\/les-sous-reseaux-et-masques-ip\/\">Page Pr\u00e9c\u00e9dente<\/a> | <a href=\"http:\/\/www.gatoux.com\/index.php\/la-fragmentation-ip\/\">Page Suivante<\/a><\/h5>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Dans les chapitres pr\u00e9c\u00e9dents nous avons \u00e9tudi\u00e9 l&rsquo;adressage IP et les notions de base du routage. A plusieurs reprises mes sch\u00e9mas pr\u00e9sentaient des r\u00e9seaux locaux (LAN : Local Area Network) nomm\u00e9s Ethernet et raccord\u00e9s \u00e0 des routeurs. Sur certains sch\u00e9mas j&rsquo;ai fait appara\u00eetre des trames de niveau 2 qui v\u00e9hiculaient des paquets IP. Ces\u2026 <span class=\"read-more\"><a href=\"https:\/\/racine.gatoux.com\/lmdr\/index.php\/arp-qui-es-tu\/\">Lire la suite &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":26,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width.php","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"class_list":["post-352","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/pages\/352","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/comments?post=352"}],"version-history":[{"count":4,"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/pages\/352\/revisions"}],"predecessor-version":[{"id":442,"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/pages\/352\/revisions\/442"}],"wp:attachment":[{"href":"https:\/\/racine.gatoux.com\/lmdr\/index.php\/wp-json\/wp\/v2\/media?parent=352"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}