MOOC:Verb23

From Livre IPv6

Activité 23 : Le contrôle du fonctionnement d'IPv6 à travers ICMPv6

Comment savoir que tout va bien dans un réseau IPv6 ?

hé bien si aucune erreur ne remonte du réseau, c'est que tout va bien, dans le cas contraire, il nous faut interpréter les messages d'erreurs remontés par ICMPv6 !

Gestion du niveau IP par ICMPv6

Le protocole ICMPv6 permet de contrôler le bon fonctionnement du réseau.

Au niveau de l'Internet, il permet depuis une station de vérifier l'accessibilité d'une autre station connectée, et, lors de l'acheminement d'un paquet, d'obtenir des rapports d'erreur, en cas de problème.

Au niveau local, l'ICMPv6 permet à une station qui vient de se connecter de découvrir les voisins connectés sur le même lien.

Gestion du niveau IP par ICMPv6

ICMPv6, Internet Control Management Protocol, est un protocole générique pour le contrôle du fonctionnement du réseau.

Il est transporté directement au-dessus d'IPv6.

La valeur du champ "Next Header" de l'en-tête IPv6 aura pour valeur 58.

Un message ICMPv6 correspond à un rapport de fonctionnement du réseau.

23.2 Format générique d’un paquet ICMPv6

Chaque message ICMPv6 est identifié par un "type", auquel correspond la fonction de ce message.

Le champ "code" permet de préciser la sémantique de ce message.

Comme tout protocole transporté au-dessus d'un en-tête IPv6, l'en-tête ICMPv6 doit contenir une somme de contrôle.

Enfin, le champ "options" sert à fournir les informations utiles, selon la fonction du message. On y retrouvera des informations diverses, comme des extraits de paquets ayant généré des erreurs ou des informations de configuration.

Test d'accessibilité entre équipements avec PING

Une fonction très utile et bien connue des utilisateurs, mise en œuvre par ICMPv6, est le test d'accessibilité entre équipements connectés par Internet. Cette fonction est utilisée par la commande "ping".

Lorsque, depuis la station A, un utilisateur souhaite savoir si la station B est accessible à travers l'Internet IPv6, il utilise la commande "ping6".

Cette commande permet de générer sur le réseau un message ICMPv6 de type 128, signifiant "echo-request", message qui va permettre de sonder le destinataire B.

À la réception de ce message, si le destinataire B veut bien, il peut renvoyer une réponse sous la forme d'un message ICMPv6 de type 129, "echo-reply", qui va être envoyé à destination de A. (La volonté et la capacité à répondre dépendent des réglages du parefeu de B, voire d'un filtrage intermédiaire sur le trajet emprunté).

Le message reçu par A est identifié comme une réponse de B, au premier message, grâce au numéro de séquence.

La commande "ping6" peut alors afficher la réponse de B.

"Ping6" affiche en plus un temps mesuré par la station A entre l'émission de la demande et la réception de la réponse, appelé "temps d'aller-retour" ou "Round Trip Time".

la fonction Traceroute utilise également ces messages ICMPv6 en incrémentant la valeur du champ hop limit, ce qui permet d'identifier le trajet dans le réseau, à condition que les parefeux ne bloquent pas ces mécanismes.

Identification des problèmes, grâce aux rapport d'erreur ICMPv6

ICMPv6 permet de signaler à l'émetteur d'un paquet un problème dans son acheminement ou dans sa réception, à travers des rapports d'erreur.

Lorsqu'une machine A envoie un paquet IPv6, si une erreur est détectée par le destinataire du paquet ou par tout routeur intermédiaire sur le chemin entre A et B, alors l'élément ayant détecté l'erreur renvoie à l'émetteur un rapport sous la forme d'un message ICMPv6.

Le type du message et son code définissent précisément l'erreur détectée.

L'extrait du paquet fautif est inclus dans le message dans la limite de la MTU pour permettre l'analyse de l'erreur.

Les erreurs pouvant être détectées par ICMPv6 sont la destination inaccessible, renvoyée par le dernier routeur ne pouvant pas transmettre le paquet à la destination.

Une erreur liée à un paquet trop grand est transmise par un routeur intermédiaire ne pouvant pas transmettre le paquet sur un lien imposant une taille inférieure à celle du paquet.

Le délai expiré est une erreur renvoyée lorsque le paquet reçu présente, dans son en-tête IPv6, le champ "Hop Limit" à valeur 1.

Enfin, l'erreur de paramètre est renvoyée par un routeur détectant un problème dans la valeur d'un champ de l'en-tête IP ou d'une extension de cet en-tête.


Identification d'une boucle

Voyons ici un exemple illustrant un rapport d'erreur lié à un délai expiré.

L'en-tête IPv6 contient un champ "Hop Limit" dont la valeur est décrémentée à chaque routeur traversé.

L'erreur intervient lorsqu'un paquet est reçu par un routeur, avec un champ contenant la valeur 1. On interdit au routeur de retransmettre un paquet avec la valeur 0.

Il renvoie vers l'émetteur un rapport d'erreur signalant un délai expiré.

Ce cas peut se présenter lorsqu'il y a une erreur de configuration dans le réseau, qui fait apparaître une boucle de routage. Sans mécanisme de détection ce phénomène de boucle peut saturer le trajet concerné, car si l'émetteur n'est pas prévenu, il retransmet les paquets à souhait, ce qui empire la situation...

Il est important, donc, que les paquets ICMPv6 puissent bien circuler sur le réseau car ils permettent à la station de s'adapter en cas de problème, et à l'administrateur de détecter et d'analyser les problèmes.

Il convient donc de ne pas filtrer ICMPv6 de façon inconsidérée dans son réseau.

La RFC 4890 décrit les bonnes pratiques de filtrage.

Filtrage ICMPv6

Cet exemple va illustrer les problèmes de filtrage des paquets ICMPv6.

Dans cet exemple, la station A est située dans un réseau protégé par un pare-feu, sous la responsabilité de l'administrateur.

Celui-ci a considéré que les messages ICMPv6 provenant d'Internet sont potentiellement dangereux.

Le pare-feu est donc configuré pour bloquer ces messages entrants provenant de l'Internet.

A envoie un paquet vers B, mais une erreur de délai expiré est détectée par un routeur situé entre A et B.

Le routeur envoie un rapport d'erreur ICMPv6 à destination de A.

Mais la configuration du pare-feu fait que ce rapport n'est pas transmis sur le réseau local.

La station A n'est donc pas informée du problème de transmission du paquet.

Donc, l'erreur ne sera pas détectée et la station A ne pourra pas s'adapter.

Conclusion

Il est donc important, pour les administrateurs réseau, de bien considérer les messages ICMPv6 de types de rapport d'erreur, lors de la définition des politiques de sécurité.

Personal tools