MOOC:Compagnon Act16

From Livre IPv6

Revision as of 09:33, 11 April 2017 by Bstevant (Talk | contribs)

Activité 16 : Découvrez un réseau IPv6

L'objectif de cette première activité pratique va être d'expérimenter la communication en IPv6 et de découvrir les adresses IPv6 dans un réseau IPv6. A l'aide d'une topologie de réseau comprenant 2 hôtes et 2 routeurs, vous allez pouvoir  :

  1. prendre en main l'environnement de virtualisation GNS3,
  2. vous familiariser avec l'adressage en IPv6 et les commandes de consultation d'état d'une interface réseau. Vous verrez aussi comment identifier les types des adresses IPv6 et déterminer la portée des communications utilisant ces types d"adresses.
  3. effectuer des communications locales au lien, ou des communications avec remises indirectes des paquets. Dans ce cette dernière forme de communication, les paquets passent à travers plusieurs liens avant d'atteindre la destination.
  4. effectuer des échanges en multi-diffusion (multicast).

Comme le montre la figure 1, le réseau étudié comporte 4 noeuds et repose uniquement sur IPv6. Un serveur web est installé et configuré sur l'hôte appelé PC-2. Un serveur DNS est également installé sur PC-2.

Figure 1: Topologie du réseau étudié.

Le support vous donne l'ensemble des opérations à réaliser pour aller jusqu'au bout de l'activité. Vous trouverez un résumé de ces commandes dans le Manuel Apprenant disponible dans l'onglet documentation du cours Objectif IPv6 du site de FUN.

TODO: Préfixer les commandes par le nom de la machine)


Etape 0 : Démarrage de GNS3

Démarrage de votre machine virtuelle

Après avoir téléchargé la machine virtuelle "MOOC_IPv6_Lab_Session3", vous pouvez la démarrer soit en utilisant VirtualBox ou bien VMwarePlayer 7 ou supérieur:

Selon la configuration de votre PC quelques messages "warning" peuvent apparaitre, valider, relancer ou ignorer les dans un premier temps. Si vous obtenez un blocage, merci de consulter le forum pour identifier si une solution résout votre souci.

Une fois que la machine virtuelle Debian aura démarré, vous voyez sur le bureau des dossiers pour les activités de travaux pratiques des séquences 1 à 4.

Pour l'adapter à la taille de votre écran : clic-droit sur le bureau - Modifier l'arrière plan du bureau - choisir la flèche en haut à gauche. Dans la section Matériel, choisir écran puis choisir affichage inconnu. Enfin, appliquer la taille la mieux adaptée à votre écran, puis conserver les modifications si cela convient.

Démarrage du modèle de réseau sous GNS3

Double cliquer sur le dossier "MOOC_IPV6_TP1" , puis sur l'icône "TP1_Etape0"

Attendre que la fenêtre TP_IPv6.gns3 -GNS3 apparaisse à l'écran comme présentée par la figure 2. Double cliquer sur la barre de titre de cette fenêtre pour qu'elle occupe la totalité de votre écran. Si besoin, vous pouvez ensuite recentrer l'image de la topologie dans la fenêtre centrale avec les boutons ascenseurs horizontal et vertical.

Figure 2: Ecran de GNS3

Identification des liens physiques

Il est possible d'afficher les numéros des interfaces des équipements représentés sur la maquette, appuyer sur le bouton carré "a b c" situé juste en dessous du menu déroulant Device.

Une fois que vous aurez bien identifié les numéros d'interfaces des 6 liaisons, nous pouvons constater ceci : Ce réseau est constitué de 3 liens.

  • lien PC1 - SW2 - R1 : les interfaces eth0 de PC1 et R1 sont reliées à travers le commutateur Ethernet SW2 ;
  • lien R1 - SW1 - R2 : les interfaces eth1 de R1 et R2 sont reliées à travers un commutateur Ethernet SW1 ;
  • lien PC2 - SW3 - R2 : les interfaces eth0 de PC2 et R2 sont reliées à travers un commutateur Ethernet SW3.

Activation des équipements

Si tout est correct, vous pouvez activer les équipements du réseau dans GNS3, à l'aide du bouton triangulaire vert démarrer "Start/Resume all devices".

Dans la fenêtre centrale les témoins verts des liens indiquent que les équipements démarrent, et sur la droite la fenêtre "Topology Summary" montre aussi les témoins verts des équipements réseaux.

Lorsque les noeuds sont actifs, il faut cliquer sur le bouton "Console connect to all devices" symbolisé par ">_" situé à gauche du bouton triangulaire vert, juste en dessous du menu déroulant "Annotate". Ainsi vous aller faire apparaitre les consoles de contrôle pour les routeurs et pour les hôtes comme le montre la figure 3.

Les consoles de contrôle dites CLI (Command Line Interface) affichent le démarrage des différents équipements réseaux. Notons que le démarrage des PC est plus rapide que celui des routeurs (le temps de démarrage dépendant des capacités de votre machine: compter quelques minutes). Comptez entre trois et dix minutes, parfois plus. Une fois que tous les noeuds ont leur console avec l'invite pour se connecter comme le montre la figure 3, votre plateforme de réseau est dorénavant opérationnelle.

Figure 3: Ecran GNS3 avec les interfaces CLI.

Arrêt/Pause de GNS3

Au besoin vous pouvez aussi figer l'exécution des équipements avec le bouton Pause "Suspend All devices", voire arrêter les équipements avec le bouton Stop "Stop All devices".

Faire CTRL+S si vous souhaitez sauvegarder l'état des équipements. Pour quitter proprement GNS3, faire CTRL+Q ou faire, avec le menu déroulant File, l'action Quit.

Etape 1 : Découvertes de l'adressage IPv6

Dans cette étape nous allons découvrir les commandes pour afficher les adresses IPv6.

Dans le cas d'un hôte

Pour ouvrir une session sur un hôte tel que PC-1, utiliser l'identifiant apprenant. Il n'y a pas de mot de passe.

Déterminer la configuration IP actuelle en tapant la commande :

apprenant@MOOCIPv6:~$ ifconfig

ou

apprenant@MOOCIPv6:~$ ip -6 address show

Astuce

La touche de tabulation aide à terminer automatiquement la saisie des commandes.

Vous pouvez constater que l'interface de boucle (loopback) noté lo0 possède une adresse alors que l'interface Ethernet (eth0) est configurée avec 2 adresses IPv6.

Quelle est l'adresse IPv6 sur l'interface de boucle ?

 


Compléter ici les adresses IPv6 attribuées à l'interface eth0 :

 1/ fe...
 2/ fd...

Nota : Une adresse IPv6 s'indique sans préciser la longueur du préfixe. A l'inverse, un préfixe réseau consiste en une adresse IPv6 suffixée par le nombre de bits occupé par le préfixe. Ne confondez pas ces 2 notions: préfixe réseau et adresse.

Parmi les 2 adresses IP attribuées à l'interface Ethernet, il y a une adresse de lien-local (LLA Link Loca Address) et une adresse locale unique (ULA Unique unicast Local Address). Pour différencier ces 2 types d'adresse, il faut analyser le mot de poids fort de l'adresse (le mot le plus à gauche). L'adresse LLA commence par le mot réservé fe80 comme indiqué dans l'activité 13 "Les adresses unicast". Les 2 adresses ont la même longueur de préfixe à savoir de 64 bits.

Quel est le préfixe /64 auquel appartient l'adresse ULA ?

 


Quel sont la première et la dernière adresse de ce préfixe /64 ?

 
 


Quel est la valeur de l'adresse MAC du PC ?

 

Quel est la méthode de construction utilisée pour l'identifiant d'interface (IID) de l'adresse LLA ?

 
 

Quel est la méthode de construction utilisée pour l'identifiant d'interface (IID) de l'adresse ULA ?

 
 

Quel est l'adresse de multicast sollicité correspondant à cette adresse ULA?

 

Dans le cas d'un routeur

Pour ouvrir une session sur un routeur tel que R1, les identifiants/mots de passe sont vyos/vyos. (Aucun echo de caractère n'est proposé lorsqu'on saisi le mot de passe). Passer en mode Quagga à l'aide de la commande:

vyos@vyos:~$ vtysh

Vérifier l'état des interfaces par la commande:

vyos# show interface

Cette commande affiche les adresses configurées sur les interfaces des routeurs. Les routeurs possèdent chacun, en plus de l'interface (lo) de boucle locale, 2 interfaces Ethernet actives (eth0 et eth1). En effet, les routeurs sont attachés à 2 liens. Un lien représente un réseau de distribution sur lequel on va trouver des PC (dans notre cas un PC) et l'autre lien sert de réseau d'interconnexion (ou d'infrastructure) qui relie les routeurs.

Noter ici les adresses ULA que vous observez sur les interfaces de R1 :

eth0 : 
eth1 : 


Vous pouvez remarquer que PC-1 et R1 partagent le même préfixe réseau. Cette plateforme a été numérotée à l'aide d'un préfixe de type ULA. En l'occurrence, il s'agit de fd75:e4d9:cb77::/48. Chaque lien s'est vu ensuite attribuer un identifiant sur 16 bits pour former en tout un préfixe de 64 bits. On parle de SID (Subnet Identifier) pour l'identifiant du lien sur 16 bits. C'est la raison pour laquelle un lien identifié par un préfixe réseau se qualifie quelquefois de sous-réseau. Bien que ce sous-réseau peut aussi s'appeler réseau si on considère qu'un routeur est la passerelle dans une interconnexion de réseaux.

Pour en revenir au plan d'adressage de notre plateforme, les affectations des SID ont été faites de la manière suivante:

  • 0 pour le sous-réseau d'interconnexion de R1 et R2
  • 1 pour le sous-réseau de distribution de PC1 et R1
  • 2 pour le sous-réseau de distribution de PC2 et R2


Maintenant, prendre soin de relever ici les adresses LLA attribuées aux interfaces du router R1 :

eth0 : 
eth1 : 


Vous pouvez vérifier que l'interface de PC-2 possède bien une adresse IPv6 ULA. Retrouvez-vous la valeur du SID de 2 dans cette adresse ?

Etape 2 : Communications en IPv6

Dans cette étape, nous allons voir comment utiliser les adresses IPv6 pour effectuer des communications.

Un échange entre un client et un serveur va être mis en place. Nous allons commencer par activer un serveur sur le noeud R1. Ceci s'effectue à l'aide de la commande netcat6 qui s'écrit en abrégé nc6. Tout d'abord, vous allez repasser en mode utilisateur :

vyos# exit

puis il faut démarrer le serveur :

 vyos@vyos:~$ nc6 -l -v -n -u -p 4500
TODO: Passer nc6 en TCP (UDP non disponible)

Les options de la commande signifient que la commande netcat6 utilise UDP (-u), se met en écoute (-l) sur le port (-p) 4500 tout en étant explicite dans ses affichages (-v). Il nous reste maintenant à démarrer la version cliente de netcat6 sur PC-1:

apprenant@MOOCIPv6:~$ nc6 -n -v -u ADDR6 4500

Ici le terme ADDR6 doit être remplacé par une adresse IPv6.

Note

Pour interrompre une commande comme netcat6 faites la combinaison de touches CTRL+C (appui simultané sur les touches Ctrl et C.

Commencer par tester une communication avec le serveur en utilisant l'adresse lien-local (LLA) du serveur mise sur l'interface eth0 de R1. Comme il est indiqué dans le cours, l'utilisation des adresses lien-local doit s'accompagner de la mention de l'interface réseau à utiliser pour transmettre le paquet. En effet, le système ne peut pas séléctionner cette interface de lui-même. Tous les liens ont le même préfixe pour une adresse de lien local. Il y a donc une ambigüité c'est pour cela que le système ne peut décider. L'ambigüité est donc levée en indiquant explicitement l'interface de sortie. Pour ce faire, la mention de l'interface se fait en ajoutant son nom après le caractère % mis à la fin de l'adresse. Dans certain cas, une option est disponible pour spécifier l'interface. Dans le cas présent, la commande de démarrage du client est la suivante :

apprenant@MOOCIPv6:~$ nc6 -n -v -u fe80::200:abff:fe13:a800%eth0 4500

Tant qu'il n'y a pas de données à transmettre, il n'y a pas de communication. Aussi sur le terminal de PC-1, il vous faut saisir des caractères qui seront envoyés au serveur après l'appui sur la touche retour à la ligne. Une fois passé le retour à la ligne, vous verrez vos caractères saisis s'afficher sur le terminal de R1. Tout marche bien. Arrêter le client et le serveur par un CTRL+C dans la console de chacun d'eux.

Relancer le serveur pour un nouvel essai mais cette fois-ci à partir d'un client situé sur PC-1 mais en utilisant l'adresse ULA de eth0 R1. La commande de démarrage du client devient alors:

apprenant@MOOCIPv6:~$ nc6 -n -v -u ADDR6 4500

Ici le terme ADDR6 doit être remplacé par l'adresse ULA de eth0 de R1 que vous avez noté préalablement dans l'étape précédente. Là aussi les caractères que vous entrez coté client vont être transférés vers le serveur.

Nota

lorsque que l'argument d'une commande est une adresse lien local (LLA), vous devez spécifier l'interface de sortie en suffixant l'adresse par le caractère '%' suivi de l'interface.

Donc vous pouvez constater, à ce niveau, que les adresses ULA ou LLA (lien local) pour des communications en remise directe n'ont pas de différence dans l'exécution de la communication.

Voyons maintenant pour les communications en remise indirecte, si cela reste vrai. Le serveur reste sur R1, par contre le client va être démarré depuis le PC-2. Le routeur R2 va servir à relayer les paquets IPv6 de PC-2 vers R1. Les paquets émis par le client ne sont ainsi pas remis directement à la destination, mais délégués au routeur R2 qui va donc les relayer vers la destination. On parle dans ce cas d'une communication en remise indirecte.

Toujours sur R1, relancer le serveur en écoute sur le port 4500.

 vyos@vyos:~$ nc6 -l -v -n -u -p 4500

Ensuite, indiquer au client d'utiliser l'adresse lien-local de eth1 de R1 :

apprenant@MOOCIPv6:~$ nc6 -n -v -u fe80::200:abff:fe13:a801%eth0 4500

Les caractères que vous saisissez ne s'affichent pas sur la console du serveur. La communication ne passe pas !

Arrêter le client avec un CTRL+C et relancer le mais cette fois-ci en spécifiant une adresse ULA de R1 :

apprenant@MOOCIPv6:~$ nc6 -n -v -u fd75:e4d9:cb77::1 4500

et vérifier si la communication fonctionne en validant des caractères sur la console du client. Dans le cas d'une communication à remise indirecte, constatez vous une différence dans l'usage des types d'adresses ? Que pouvez vous conclure sur la portée des adresses ULA utilisées dans cette étape ? Quelles sont les noeuds joignables avec ce type d'adresse ? Aucune station / uniquement les stations du même réseau / les stations d'une même organisation / les stations de l'internet ?

 

Vous venez d'expérimenter le fonctionnement d'un réseau IPv6 en utilisant des adresses lien-local et des adresses ULA. La portée limitée des adresses LLA (lien-local) et l'obligation d'expliciter l'interface de sortie rendent leur usage restreint. Cependant ces adresses sont utiles pour des mécanismes fonctionnant au niveau du lien, comme la découverte du voisinage direct ou le test de services sur le lien que nous verrons par la suite. Les adresses ULA ont une portée moins limitée que les adresses LLA. Grâce à ces adresses configurées sur les interfaces de chaque équipement, il est possible de joindre des interfaces qui sont situées sur d'autres liens de l'interconnexion que celui de la source. Cette extension de la portée de la connectivité s'explique par le fait que les adresses ULA sont des adresses routables.

Etape 3 : Utiliser le web avec IPv6

Pour fonctionner en IPv6, une application doit être prévue pour cela. De nos jours, les applications sont toutes compatibles IPv6. Nous allons dans cette étape montrer comment utiliser le web sur un réseau en IPv6. Nous retiendrons le client wget, qui n'est pas un navigateur mais une commande transfert. Cette commande sert à télécharger des éléments depuis un serveur web.

Sur le noeud R1, effectuer le téléchargement de la page d'accueil (index.html), en indiquant l'URL avec une adresse IPv6. Le rfc2732 indique qu'un URL pour contenir une adresse IPv6 doit l'encadrer par les caractères crochets ([ ]). Indiquer la syntaxe de la commande utilisée.

vyos@vyos:~$ wget http://[ADDR6]

Avec ADDR6, l'adresse routable du serveur web qui est localisé sur le noeud PC-2.

En fait, il est assez fastidieux pour un utilisateur de manipuler des adresses IPv6. Il est en effet bien plus aisé d'utiliser le service de noms. Ce service se charge de traduire (on parle de résoudre) le nom en adresse IPv6. C'est l'application, ici le coté client qui se charge d'invoquer le service de noms.

Nota : Le service de nommage DNS et de son focntionnement seront détaillés dans la séquence 3 de ce cours.

Refaire le téléchargement de la page d'accueil du serveur web en spécifiant non plus une adresse dans l'URL mais le nom du serveur web qui est : www.tp. Indiquer la syntaxe de la commande wget pour réaliser ce transfert en IPv6.

vyos@vyos:~$ wget http://nom 

avec nom le nom du serveur web.

Dans ce dernier cas, vous pouvez remarquer que l'utilisation de communications au moyen d'IPv6 est ici similaire à la situation de l'Internet que vous connaissez. IPv6 reste complétement transparent à l'utilisateur. Nous verrons dans la dernière séquence de ce cours que les choses se compliquent lorsque des éléments de l'Internet sont encore en IPv4.

Etape 4 : Echanges en multi-diffusion (multicast)

Nous n'allons pas ici étudier le système de communication en multicast. Cela demande toute une "tuyauterie" qui dépasse le cadre de ce cours. Nous proposons juste de montrer l'utilisation de communications en multicast.

Nous allons commencer par déterminer les adresses multicasts attribuées aux interfaces d'un noeud. Dans le cas d'un hôte comme celui de PC-1, vous allez afficher les adresses attribuées à l'interface Ethernet de cette machine. Ceci s'effectue par la commande:

apprenant@MOOCIPv6:~$ ip -6 maddr show 

Vous pouvez constater que ce noeud possède 2 adresses IPv6 multicast :

  • l'adresse ff02::1 représente l'adresse multicast tous les neouds du lien (All Nodes) de portée locale au lien. Tous les noeuds d'un lien recoivent sur cette adresse.
  • l'adresse ff02::1:ff01:101 représente l'adresse multicast de sollicitation du noeud (sollicited-node address). Le préfixe réservé de cette adresse est ff02::1:ff00:0/104. Les 24 bits manquants sont extraits des bits de poids faible de l'adresse unicast du noeud.

Faites la commande d'affichage des adresses multicasts, sur le routeur R1:

vyos@vyos:~$ show ipv6 groups  

Vous allez voir que le routeur s'est vu attribué une adresse multicast supplémentaire sur l'interface eth0. Quel est le nom de cette adresse et quelle est son usage ?

Pour vous aider à répondre à cette question, outre le cours, vous pouvez consulter le registre des adresses IPv6 multicast IPv6 Multicast Address Space Registry

Nous allons voir maintenant si les noeuds répondent à une sollicitation sur l'adresse multicast. Pour cela nous allons utiliser la commande ping6 qui sert à effectuer un test d'accessibilité à savoir si une adresse IPv6 donnée est bien attribuée sur le réseau autrement dit qu'il existe une interface avec l'adresse IP en question. ping6 envoi un message particulier de sollicitation à l'adresse identifiant une interface réseau. Si cette interface est active et accessible, elle recevra le message émis et renverra une réponse à l'émetteur. Ces réponses sont reçues par la commande ping6 et les affiche sur le terminal.


Depuis PC-1, commençons par un test avec l'adresse "All Nodes":

apprenant@MOOCIPv6:~$ ping6 -c 1 ff02::1%eth0

Le résultat vous montre que 2 réponses ont été obtenues pour une seule sollicitation d'émise. Les adresses sources sont des adresses lien-local. Vous reconnaitrez les adresses sources de PC-1 et de R1 sur le lien Net 1.

Bien que le caractère multicast va être moins évident à montrer avec l'adresse multicast "All Routers" vu qu'il n'y a qu'un seul routeur sur le lien Net 1, vous pouvez néanmoins faire un test d'accessibilité de la manière suivante sur PC-1:

apprenant@MOOCIPv6:~$ ping6 ff02::2%eth0

Comme prévu, le routeur R1 répond à la sollicitation. Ces 2 adresses multicast vont servir à la découverte des noeuds ou de routeurs IPv6 sur un lien.

Maintenant nous allons montrer comment une application peut tirer profit des capacités multicast. A titre d'exemple, nous voulons qu'un contenu soit distribué à 2 noeuds. L'émetteur du contenu sera placé sur PC-1. En fait de contenu, il ne sera question que du texte que vous saisirez dans une commande de type netcat6. Les récepteurs seront placés sur R1 et R2. Nous allons utiliser l'adresse multicast temporaire de groupe d'identifiant ::1:1 et de portée locale au site. A l'aide du cours, donner l'adresse multicast utilisées par la suite

 

Commençons par activer les récepteurs.

Sur R1, exécuter la commande suivante:

vyos@vyos:~$ mnc -l -p 4500 -i eth0 ff15::1:1

Sur R2, exécuter la commande suivante:

vyos@vyos:~$ mnc -l -p 4500 -i eth1 ff15::1:1

Vous pouvez vérifier que le routeur R2 peut recevoir des paquets sur cette adresse multicast à l'aide de la commande:

vyos@vyos:~$ show ipv6 groups

Vous devez voir s'afficher l’adresse multicast ff15::1:1. Ce qui indique que le noeud R2 est en écoute sur cette adresse.


Le lancement de l'émetteur sur PC-1 s'effectue par la commande

apprenant@MOOCIPv6:~$ mnc -p 4500 ff15::1:1

Lorsque vous saisissez des caractères et les valider dans la console de de PC-1, vous devez les voir s'afficher à la fois sur R1 et sur R2. Le contenu que vous avez entré à été émis une seule fois mais a été reçu par les noeuds qui s'étaient mis à l'écoute sur l'adresse multicast dédiée à cette communication.

Cette étape a été une première initiation à la communication en multicast. Si vous voulez en savoir plus sur le fonctionnement du multicast IP, il existe une littérature abondante, nous vous renvoyons aux références citées à la fin de l'activité "adresses Multicast" de ce cours.


Arrêt/Pause du simulateur

Au besoin vous pouvez aussi figer l'exécution des équipements avec le bouton Pause "Suspend All devices", voire arrêter les équipements avec le bouton Stop "Stop All devices".

Faire CTRL+S si vous souhaitez sauvegarder l'état des équipements. Pour quitter proprement GNS3, faire CTRL+Q ou faire, avec le menu déroulant File et l'action Quit.

Conclusion

Par cette première séquence du MOOC IPv6, vous avez pu découvrir l'usage de l'Internet en IPv6 et vous familiariser avec le format des adresses IPv6. Si le format de ses nouvelles adresses change quelque peu les habitudes prise avec l'adressage IPv4. Il n'en est rien pour l'utilisateur du réseau. L'usage de l'Internet en IPv6 lui est transparent. Nous verrons par la suite que la présence d'IPv4 dans l'Internet vient compliquer cette transparence.

Personal tools