Difference between revisions of "MOOC:Compagnon Act26"

From Livre IPv6

(Etape 2: Routage et acheminement d'un paquet)
(Etape 3: Fonction de fragmentation)
 
(80 intermediate revisions by 4 users not shown)
Line 1: Line 1:
=Activité 26 : Etudiez le fonctionnement du protocole d’IPv6=
+
__NOTOC__
 +
=Activité 26 : Etudiez le fonctionnement du protocole IPv6=
 
Après avoir vu comment un réseau en IPv6 s'utilise dans la première activité pratique, dans cette seconde activité pratique, nous allons voir comment il fonctionne. Vous pourrez ainsi constater que les principes de son fonctionnement sont très similaire à ceux d'IPv4. Nos objectifs sont ici :  
 
Après avoir vu comment un réseau en IPv6 s'utilise dans la première activité pratique, dans cette seconde activité pratique, nous allons voir comment il fonctionne. Vous pourrez ainsi constater que les principes de son fonctionnement sont très similaire à ceux d'IPv4. Nos objectifs sont ici :  
 
* mettre en oeuvre une capture de paquets IPv6,
 
* mettre en oeuvre une capture de paquets IPv6,
Line 7: Line 8:
  
 
Les différentes étapes dans cette activité vont vous permettre d'observer les communications locales au lien et des communications impliquant plusieurs liens.
 
Les différentes étapes dans cette activité vont vous permettre d'observer les communications locales au lien et des communications impliquant plusieurs liens.
Le réseau de la plateforme est similaire à celui de l'activité précédente comme le montre la figure 1. Il 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.  
+
Le réseau de la plateforme est similaire à celui de l'activité précédente comme le montre la figure 1. Il comporte 5 noeuds et repose uniquement sur IPv6.  Un serveur web et un serveur DNS sont installés et configurés sur l'hôte appelé SRV-3.  
 
<center>
 
<center>
[[image:2015_10_20_TP2_screenshot1.png|thumb|center|400px|Figure 1: Topologie du réseau étudié.]]
+
[[image:MoocSession5 act26 topolo 20190605.png|thumb|center|400px|Figure 1: Topologie du réseau étudié.]]
 
</center>
 
</center>
 
  
 
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.  
 
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.  
  
 
==Etape 0: Démarrage de la plateforme==
 
==Etape 0: Démarrage de la plateforme==
Démarrer la machine virtuelle '''"MOOC_IPv6_Lab_Session3"'''. Une fois que la machine virtuelle Debian a démarré, vous voyez, sur le bureau, des dossiers prêts pour les travaux pratiques des séquences 1 à 4.
+
Démarrer la machine virtuelle '''"MOOCIPv6_S7"'''. Une fois que la machine virtuelle a démarré, vous voyez, sur le bureau, des dossiers prêts pour les 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.
 
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.
 
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.
  
Double-cliquer sur le dossier '''"MOOC_IPV6_TP2"''', puis sur l'icône ''' "TP2_Etape0" '''
+
Double cliquer sur le lien intitulé "moocipv6.gns3"<!-- (icône symbolisé par un caméléon)-->, présent dans la partie haute du bureau de votre machine virtuelle.
 +
 
 +
Vous devez restaurer le Snapshot ''(Activité-26)'' depuis '''''Edit > Manage snapshots''''' ce qui rechargera les configurations initiales des équipements.
  
Attendre que la fenêtre <tt>TP_IPv6.gns3 -GNS3</tt> 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.
+
Attendre que la fenêtre <tt>moocipv6-GNS3</tt> 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.
  
 
<center>
 
<center>
[[image:GNS3_TP2_001.jpg|thumb|center|600px|Figure 2: Ecran de GNS3]]
+
[[image:MoocSession5 act26 topolo 20190605.png |thumb|center|600px|Figure 2: Ecran de GNS3]]
 
</center>
 
</center>
  
Line 33: Line 35:
 
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''.  
 
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 :
+
Une fois que vous aurez bien identifié les numéros d'interfaces des liaisons, nous pouvons constater ceci : Ce réseau est constitué de 4 liens.
* PC1 - SW2 - R1 :  les interfaces eth0 de PC1 et R1 sont reliées à travers le commutateur Ethernet SW2.
+
* lien PC-1 - R1 :  les interfaces eth0 de PC-1 et R1 sont reliées à travers le réseau Net1 ;
* R1 - SW1 - R2 : les interfaces eth1 de R1 et R2 sont reliées à travers un commutateur Ethernet SW1.
+
* lien R1 - R2 : les interfaces eth1 de R1 et R2 sont reliées à travers le réseau Net0 ;
* PC2 - SW3 - R2 : les interfaces eth0 de PC2 et R2 sont reliées à travers un commutateur Ethernet SW3.
+
* lien PC-2  - R2 : les interfaces eth0 de PC-2 et R2 sont reliées à travers le réseau Net2.
 +
* lien SRV-- R2 : les interfaces eth0 de SRV-3 et eth3 de R2 sont reliées à travers le réseau Net3.
  
 
===Activation des équipements===
 
===Activation des équipements===
Line 48: Line 51:
 
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 4, votre plateforme de réseau est dorénavant opérationnelle.
 
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 4, votre plateforme de réseau est dorénavant opérationnelle.
 
<center>
 
<center>
[[image:GNS3_TP2_002.jpg|thumb|center|600px|Figure 3:  Ecran GNS3 avec les interfaces CLI.]]
+
[[image:MoocSession5_act26_gns3_cli_20190605.png|thumb|center|600px|Figure 3:  Ecran GNS3 avec les interfaces CLI.]]
 
</center>
 
</center>
  
Line 55: Line 58:
 
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"''.  
 
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 <tt>CTRL+S</tt> si vous souhaitez sauvegarder l'état des équipements. Pour quitter proprement GNS3, faire <tt>CTRL+Q</tt> ou faire, avec le menu déroulant ''File'', l'action ''Quit''.
+
L'état des équipements est sauvegardé en quittant. Pour quitter proprement GNS3, faire <tt>CTRL+Q</tt> ou faire, avec le menu déroulant ''File'' et l'action ''Quit''.
  
== Etape 1: Format d'un paquet ==
+
== Etape 1: Capture et analyse d'un flux IPv6 ==
  
Nous allons procéder à un échange en UDP entre un client sur PC-1 et un serveur positionné sur R1.
 
  
Pour ouvrir une session sur le routeur R1, les identifiants/mots de passe  sont '''vyos'''/'''vyos'''. (Aucun echo de caractère n'est proposé lorsqu'on saisi le mot de passe).
+
Nous allons capturer le trafic d'une connexion SSH vers R1 depuis PC-1, ensuite nous pourrons analyser les échanges.
  
Récupérer l'adresse ULA de l'interface eth0 de R1. Elle servira par la suite au  client à joindre le serveur.
+
Pour étudier ce qui circule sur le support, nous allons mettre en oeuvre une capture  de réseau. La plateforme dispose de l'analyseur de protocoles Wireshark. Pour effectuer une capture, il est possible de l'utiliser sur les points de connexions symbolisés par un point vert sur la topologie.
vyos@vyos:~$ '''show interfaces ethernet eth0'''
+
  
Puis nous allons activer un serveur sur le noeud R1. Ceci s'effectue par la commande <tt>nc6</tt> (''netcat6''). Le serveur est en écoute sur le port 4500. Le numéro de port est arbitraire. Il sert à indiquer au protocole UDP de faire suivre les données reçues sur ce port à la commande <tt>nc6</tt>.
+
En survolant avec votre pointeur un de ces points, faire un clic-droit et choisir "Start Capture".
vyos@vyos:~$ '''nc6 -l -v -n -u -p 4500'''
+
Il est également possible de lancer une capture,en pointant dans la fenêtre en haut à droite "Topology Summary", puis appuyez sur le + d'un élément réseau.  
  
Pour vous loguer sur l'hôte PC-1, les identifiants/mots de passe  sont '''apprenant'''/''''''. (Pas de mot de passe).
+
Choisissez une interface : elle passe en rouge sur la fenêtre centrale. Ensuite, avec un clic-droit, vous pouvez lancer une capture sur ce lien en choisissant "Start capture".
 
+
<center>
Vérifiez la configuration réseau
+
[[image:MoocSession5_act26_gns3_topology_summary_20190605.png|thumb|center|600px|Figure 4:  Préparation d'une capture avec Wireshark.]]</center>
apprenant@MOOCIPv6:~$ '''ifconfig'''
+
 
+
Il nous reste maintenant à démarrer la version cliente de <tt>nc6</tt> sur PC-1:
+
apprenant@MOOCIPv6:~$ '''nc6 -n -v -u ''ADDR6-ULA'' 4500'''
+
en remplaçant ''ADDR6-ULA'' par l'adresse du serveur que vous avez noté en affichant les adresses de l'interface eth0 de R1.
+
 
+
Pour étudier ce qui circule sur le support, nous allons mettre en oeuvre une capture  de réseau. La plateforme dispose de l'analyseur de protocoles Wireshark. Pour effectuer une capture, il est possible de l'utiliser sur les points de connexions symbolisés par un point vert sur la topologie.
+
 
+
Pour lancer une capture, allez dans la fenêtre à droite '''"Topology Summary"''', puis appuyez sur le + d'un élément réseau. Choisissez une interface : elle passe en rouge sur la fenêtre centrale. Ensuite, avec un clic-droit, vous pouvez lancer une capture sur ce lien en choisissant '''"Start capture"'''.
+
  
 
L'arrêt des captures est possible, toujours depuis cette fenêtre "Topology Summary", en choisissant '''"Stop all captures"'''.
 
L'arrêt des captures est possible, toujours depuis cette fenêtre "Topology Summary", en choisissant '''"Stop all captures"'''.
  
 
Vous pouvez  réaliser ainsi une capture des paquets circulant sur un lien lors d'une communication entre un client et un serveur.
 
Vous pouvez  réaliser ainsi une capture des paquets circulant sur un lien lors d'une communication entre un client et un serveur.
 
 
Le déroulement des actions est le suivant:
 
Le déroulement des actions est le suivant:
* Activer Wireshark sur VyOS-Router-1 avec le lien e0<->1SW2.
+
* Activer Wireshark sur le lien PC-1 eth0<->eth0 R1, puis clic-droit et choisissez '''"Start capture"'''.
Allez dans la fenêtre '''"Topology Summary"''' puis appuyez sur le + de '''VyOS-Router-1'''. Cliquez sur le lien '''e0<->1SW2''' puis clic-droit et choisissez '''"Start capture"'''.
+
<center>
* Transférer des données depuis PC-1
+
[[image:MoocSession5_act26_gns3_capture_20190605.png  |thumb|center|400px|Figure 5:  Lancement d'une capture.]]</center>
Dans le client actif sur PC-1, entrer des caractères puis valider les pour les envoyer au serveur.
+
* Arrêter le transfert par la combinaison <tt>CTRL+C</tt>.
+
* Prenez soin d'arrêter la capture avant d'aller explorer le résultat de l'analyse : dans la fenêtre '''"Topology Summary"''', sous '''VyOS-Router-1''', cliquez sur le lien '''e0<->1SW2''' puis clic-droit et choisissez '''"Stop capture"'''.
+
  
Dans la séquence des paquets, retrouver celui qui comporte un message UDP à destination du port 4500.
+
Vous pouvez laisser la capture en route le temps que l'on initialise une connexion.
 +
 
 +
Choisissez l'onglet PC-1, puis tapez les commandes suivantes:
 +
root@PC-1:~#''' ifconfig eth0'''
 +
root@PC-1:~# '''ssh vyos@fd75:e4d9:cb77:1::1'''
 +
Welcome to VyOS
 +
vyos@fd75:e4d9:cb77:1::1's password:<tt>'''vyos'''</tt>
 +
The programs included with the Debian GNU/Linux system are free software;
 +
the exact distribution terms for each program are described in the
 +
individual files in /usr/share/doc/*/copyright.
 +
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
 +
permitted by applicable law.
 +
Last login: Sat Jun 1 14:24:36 2019 from fd75:e4d9:cb77:1:583d:54ff:fec1:1e7b
 +
vyos@r1:~$''' sh ver'''
 +
vyos@r1:~$ '''exit'''
 +
logout Connection to fd75:e4d9:cb77:1::1 closed.
 +
root@PC-1:~#
 +
A ce stade, vous pouvez arrêter la capture, soit depuis cette fenêtre "Topology Summary", en choisissant "Stop all captures".
 +
soit en surlignant le lien sur la topologie, clic-droit et "Stop capture".
 +
En prenant en main, Wireshark, nous retrouvons la séquence des paquets correspondant à notre connexion, retrouvez en un parmi ceux qui comportent un message TCP à destination du port 22.
 +
 
 +
<center>
 +
[[image:MoocSession5 act26 fragmentation 20190604.png  |thumb|center|600px|Figure 6:  Analyse d'une capture.]]</center>
  
 
Vous pouvez explorer les différents champs de l'en-tête du paquet IPv6 pour répondre aux questions suivantes:
 
Vous pouvez explorer les différents champs de l'en-tête du paquet IPv6 pour répondre aux questions suivantes:
Line 103: Line 113:
  
 
Enfin pour terminer cette analyse de cette capture du paquet IPv6, vous pouvez également explorer les différents champs de la trame Ethernet encapsulant le paquet IPv6.
 
Enfin pour terminer cette analyse de cette capture du paquet IPv6, vous pouvez également explorer les différents champs de la trame Ethernet encapsulant le paquet IPv6.
Vous devriez voir la valeur du champ EtherType à 0x86dd indiquant que la trame Ethernet contient un paquet IPv6.
+
Vous devriez voir la valeur du champ EtherType à 0x86dd indiquant que la trame Ethernet contient un paquet IPv6.
 
+
=== Etats  de la communication ===
+
 
+
Lorsqu'il y a un noeud qui a des processus qui communiquent. Il y a des états qui se créent. Nous pouvons consulter ses états par la commande <tt>netstat</tt> sur un PC.
+
A titre d'exemple, démarrer un serveur TCP avec <tt>nc6</tt>  sur R1:
+
vyos@vyos:~$ '''nc6 -l -v -n -p 4500'''
+
puis sur PC-1, démarrer un client en arrière plan (à l'aide du caractère "&" en fin de ligne):
+
apprenant@MOOCIPv6:~$ '''nc6 -n -v ''ADDR6-ULA'' 4500 & '''
+
 
+
Sur le client vous pouvez maintenant vérifier qu'il existe bien une connexion d'établie:
+
apprenant@MOOCIPv6:~$ '''netstat -nt'''
+
 
+
Une connexion existe avec le serveur sur le port 4500. Vous pouvez aussi vérifier le numéro de port du coté du client.
+
  
 
== Etape 2: Routage et acheminement d'un paquet ==
 
== Etape 2: Routage et acheminement d'un paquet ==
 
Les échanges sont possibles entre noeuds  en passant par des routeurs si ces derniers sont capables de déterminer la route pour joindre la destination. A cet effet, les routeurs possèdent une table de routage qui contient les informations nécessaires pour acheminer un paquet vers sa destination.
 
Les échanges sont possibles entre noeuds  en passant par des routeurs si ces derniers sont capables de déterminer la route pour joindre la destination. A cet effet, les routeurs possèdent une table de routage qui contient les informations nécessaires pour acheminer un paquet vers sa destination.
 +
 +
'''Observation d'une table de routage'''
  
 
La consultation de la table de routage de R1 s'effectue par la commande
 
La consultation de la table de routage de R1 s'effectue par la commande
  vyos@vyos:~$ '''show ipv6 route'''
+
  vyos@r1:~$ '''show ipv6 route'''
  
La table de routage de PC-2 est obtenue par la commande
+
ou bien
  apprenant@MOOCIPv6:~$ '''route -A inet6'''
+
  vyos@r1:~$ '''vtysh'''
 +
r1# '''sh ipv6 route'''
 +
r1# '''exit'''
 +
vyos@r1:~$
  
Vous remarquerez qu'il y a deux routes pour une remise directe. Il s'agit des routes dont la destination partage le même préfixe que la source sur 64 bits. Enfin une troisième route passe par eth0, il s'agit de la route par défaut notée "::/0". Cette route indique une remise indirecte.
+
La table de routage de PC-2 est obtenue soit par la commande
 +
root@PC-2::c2:~# '''ip -6 route show'''
  
Si nous voulons faire apparaitre la route prise pour aller de PC-2 à R1, nous disposons de la commande <tt>traceroute6</tt>:
+
ou la commande  
apprenant@MOOCIPv6:~$ '''traceroute6 -n  fd75:e4d9:cb77::1'''
+
Naturellement vous reconnaissez l'adresse IPv6 de R2 puis celle de R1. Cet affichage indique la route prise pour joindre R1 mais également que R1 est accessible par l'adresse alloué à eth1.
+
  
=== Analyse de la route pour aller au serveur web ===
+
root@PC-2::c2 '''netstat -6 -nr'''
L'hôte sur le PC-1 comporte un client web. Ce dernier souhaite consulter les pages héberger sur le serveur web. Sur le terminal de PC-1, entrer la commande de téléchargement :
+
apprenant@MOOCIPv6:~$ wget http://[fd75:e4d9:cb77:2::c8]
+
  
Oups, vous devez voir  rien arriver. Nous avons ici un problème de connectivité entre PC-1 et PC-2. Voyons voir d'où viens le problème.
+
'''Nota''' : ''pour améliorer la lisibilité de la table de routage de PC2, vous serez peut être amené à agrandir la fenêtre de la console avant de lancer la commande précédente, de manière à afficher une entrée de la table de routage par ligne.''
  
Commençons par vérifier que la source et la destination ont bien une adresse IPv6, sur PC-1 et PC-2 faire l'affichage des adresses alloués sur l'interface eth0:
+
Vous remarquerez qu'il y a deux routes pour une remise directe. Il s'agit des routes dont la destination partage le même préfixe que la source sur 64 bits. Enfin une troisième route passe par eth0, il s'agit de la route par défaut notée <tt>::/0</tt> ou <tt>default</tt>. Cette route indique une remise indirecte.
apprenant@MOOCIPv6:~$ ifconfig eth0
+
  
Au niveau des adresses tout est normal. Voyons maintenant au niveau de la route, commençons par afficher la route pour atteindre PC-2 depuis PC-1:
+
Si nous voulons faire apparaitre la route prise pour aller de PC-2 à R1, nous disposons de la commande <tt>traceroute6</tt>:
  apprenant@MOOCIPv6:~$ '''traceroute6 -n fd75:e4d9:cb77:2::c8'''
+
  root@PC-2:~$ '''traceroute6 -n fd75:e4d9:cb77::1'''
 +
Naturellement vous reconnaissez l'adresse IPv6 de R2 puis celle de R1. Cet affichage indique la route prise pour joindre R1 mais également que R1 est accessible par l'adresse alloué à eth1.
  
Le résultat montre que la route s'arrête après le routeur R1. Recommençons le test mais depuis PC-2 cette fois-ci pour atteindre PC-1
+
=== Analyse de la route pour atteindre le serveur web ===
  apprenant@MOOCIPv6:~$ '''traceroute6 -n fd75:e4d9:cb77:1:200:abff:fefd:7d00'''
+
L'hôte sur le PC-1 comporte l'utilitaire  web <tt>cURL</tt> (''client URL Request Library''). Ce dernier permet de consulter les pages hébergées sur le serveur web SRV-3. Sur le terminal de PC-1, entrer la commande de téléchargement :
Cette fois-ci, le résultat montre  que la route s'arrête après R2. Il y a donc une  erreur entre les routeurs R1 et R2.
+
  root@PC-1:~# '''curl  -6 http://[fd75:e4d9:cb77:3::c3]'''
  
 +
Oups, vous devez voir  rien arriver.
 +
Vous pouvez interrompre l'attente avec la combinaison de touches (CTRL+C).
 +
. '''CTRL+C'''
  
une analyse de problème de routage dû à une route manquante. Objectif passer  progressivement de l’observation à l’action
+
Nous avons ici un problème de connectivité entre PC-1 et SRV-3. Voyons voir d'où viens le problème.
  
Actions
+
Commençons par vérifier que la source et la destination ont bien une adresse IPv6, sur PC-1 et SRV-3 faire l'affichage des adresses alloués sur l'interface eth0:
* L'apprenant effectue un échange UDP par netcat entre 2 hôtes
+
sur PC-1
* L'apprenant effectue un échange WEB entre PC1 et PC2
+
root@PC-1:~# '''ip -6 addr show eth0'''
* Il doit identifier quel est le problème. La page web ne s'affiche pas. On lui propose une démarche pour arriver à identifier le problème
+
** Vérifier l'accessibilité par ping (voir que PC1 et PC2 ne se ping pas)
+
** Il affiche la route à l'aide de traceroute de PC1 puis de PC2. Vérifier le routage par traceroute (voir que le problème se situe entre R1 et R2)
+
** Observer les messages échangés par wireshark lors de ces tests. Il effectue une écoute sur net0 pour voir si les paquets du traceroute circulent. Il soit voir les paquets arriver sur R2 Mais R2 n'envoie pas de paquet vers  R1. (ping de PC1 arrive jusqu’à PC2, mais que le retour s’arrête à R2)
+
** Il consulte la table de routage de R2 pour expliquer le pb. Il constate qu'il manque la route pour joindre net1. En déduire que R2 ne sais pas router les paquets jusqu’à PC1
+
** Il ajoute une route dans R2 et vérifie que le web fonctionne.
+
* IL souligne la présence de la route par défaut sur les hôtes PC1 et PC2
+
* Il capture un paquet sur chaque lien pour voir l'encapsulation désencapsulation du paquet dans la trame.
+
* Il examine les paquets désassemblés et analyse l'evolution du champ hop limit
+
* il affiche l'etat des interfaces et les états de la communication
+
  
== Etape 3: Fonction de fragmentation ==
+
sur SRV-3
Actions
+
root@SRV-3:~# '''ip -6 addr show eth0'''
* L'apprenant change la MTU sur le lien R1-R2
+
* L'apprenant effectue un test d'accessibilité est effectué entre PC1 et PC2 en changeant la taille des paquets
+
* Il capture le trafic généré par ses tests d'accessibilté.
+
* Il analyse l'extension de fragmentation d'IPv6
+
* Il détermine le noeud en charge de la fragmentation en capturant le trafic sur le lien PC1-R1
+
  
 +
Si au niveau des adresses tout est normal. Regardons, si PC-1 et SRV-3 ont bien tous les deux une route par défaut:
 +
root@PC-1:~# '''route -A inet6 -n'''
  
 +
root@SRV-3:~# '''route -A inet6 -n'''
  
Notre plateforme dispose de l'analyseur de protocoles Wireshark. Il est possible de l'utiliser sur les points de connexions symbolisés par un point vert sur la topologie pour lancer une capture.
+
Un affichage comportant la ligne ci-dessous indique qu'il y a une route par défaut. L'adresse du ''Next Hop'' doit être l'adresse IPv6 du routeur local.
 +
::/0              fd75:e4d9:cb77:1::1    UG  1024  1  0 eth0   
  
Pour lancer une capture, allez dans la fenêtre à droite '''"Topology Summary"''', puis appuyez sur le + d'un élément réseau. Choisissez une interface : elle passe en rouge sur la fenêtre centrale. Ensuite, avec un clic-droit, vous pouvez lancer une capture sur ce lien en choisissant '''"Start capture"'''.
+
Voyons maintenant au niveau de la route, commençons par afficher la route pour atteindre SRV-3 depuis PC-1:
 +
root@PC-1:~# '''traceroute6 -n fd75:e4d9:cb77:3::c3'''
 +
traceroute to fd75:e4d9:cb77:3::c3 (fd75:e4d9:cb77:3::c3), 30 hops max, 80 byte packets
 +
  1  fd75:e4d9:cb77:1::1 (fd75:e4d9:cb77:1::1)  1.119 ms  3.771 ms  3.865 ms
 +
  2  * * *
 +
  3  * * *
 +
  4  * * *
 +
  .
 +
  .
 +
  .
 +
30  * * *
 +
root@PC-1:~#
 +
 
  
L'arrêt des captures est possible, toujours depuis cette fenêtre "Topology Summary", en choisissant '''"Stop all captures"'''.
+
Le résultat montre que la route s'arrête après le routeur R1. Recommençons le test mais depuis SRV-3 cette fois-ci pour atteindre PC-1
 +
root@SRV-3:~# '''traceroute6 -n fd75:e4d9:cb77:1::c1'''
 +
traceroute to fd75:e4d9:cb77:1::c1 (fd75:e4d9:cb77:1::c1), 30 hops max, 80 byte packets
 +
1  fd75:e4d9:cb77:3::3 (fd75:e4d9:cb77:3::3)  4.657 ms !N  6.011 ms !N  6.400 ms !N
 +
root@SRV-3:~#
  
Vous pouvez, par exemple, réaliser une capture des paquets circulant entre R1 et R2 alors que vous lancez un test de connectivité entre PC1 et PC2.
+
Cette fois-ci, le résultat montre  que la route s'arrête après R2. Il y a donc une erreur entre les routeurs R1 et R2.
  
* Lancez Wireshark sur VyOS-Router-2 avec le lien e1<->2SW1.
+
Regardons ce qui circule sur le lien d'infrastructure. Pour cela démarrons une capture de réseau  sur un  point de connexion symbolisé par un point vert sur la topologie. Nous retiendrons l'interface eth1 du routeur R2 ou R1.
Allez dans la fenêtre '''"Topology Summary"''' puis appuyez sur le + de '''VyOS-Router-2'''. Cliquez sur le lien '''e1<->2SW1''' puis clic-droit et choisissez '''"Start capture"'''.
+
  
* Ping de PC1 -> PC2
+
<!--
Depuis le shell de  PC1, lancer un ping vers PC2.
+
Lancez Wireshark sur VyOS-Router-2 avec le lien e1<->2SW1.
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fd75:e4d9:cb77:0002::c2'''
+
 
+
Prenez soin d'arrêter la capture avant d'aller explorer le résultat de l'analyse : dans la fenêtre '''"Topology Summary"''', sous '''VyOS-Router-2''', cliquez sur le lien '''e1<->2SW1''' puis clic-droit et choisissez '''"Stop capture"'''.
+
 
+
Vous pouvez explorer les différents champs des paquets IPv6 et, par exemple, découvrir que la valeur du champ ''Hop Limit'' est à 63.
+
 
+
* Ping de PC1 -> PC2
+
Relancez la capture : lancez Wireshark sur VyOS-Router-2 avec le lien e1<->2SW1.
+
 
Allez dans la fenêtre '''"Topology Summary"''' puis appuyez sur le + de '''VyOS-Router-2'''. Cliquez sur le lien '''e1<->2SW1''' puis clic-droit et choisissez '''"Start capture"'''.
 
Allez dans la fenêtre '''"Topology Summary"''' puis appuyez sur le + de '''VyOS-Router-2'''. Cliquez sur le lien '''e1<->2SW1''' puis clic-droit et choisissez '''"Start capture"'''.
 +
-->
 +
Après avoir surligné le lien d'interconnexion entre R1 et R2, faire un clic droit et lancer la capture wireshark avec ''Start capture''
  
Depuis le shell de  PC1, essayez de joindre PC2.
+
Depuis le terminal de  PC-1, lancer un traceroute vers SRV-3.
  apprenant@MOOCIPv6:~$ '''ping -6 -c 1 -s 3000 fd75:e4d9:cb77:0002::c2'''
+
  root@PC-1:~# '''traceroute6 -n fd75:e4d9:cb77:3::c3'''
 +
traceroute to fd75:e4d9:cb77:3::c3 (fd75:e4d9:cb77:3::c3), 30 hops max, 80 byte packets
 +
  1 fd75:e4d9:cb77:1::1 (fd75:e4d9:cb77:1::1)  1.119 ms  3.771 ms  3.865 ms
 +
  2  * * *
 +
  3  * * *
 +
  4  * * *
 +
  .
 +
  .
 +
  .
 +
'''CTRL+C'''
 +
root@PC-1:~#
  
Prenez soin d'arrêter la capture avant d'aller explorer le résultat de l'analyse : dans la fenêtre '''"Topology Summary"''', sous '''VyOS-Router-2''' cliquez sur le lien '''e1<->2SW1''' puis clic-droit et choisissez '''"Stop capture"'''.
+
Prenez soin d'arrêter la capture avant d'aller explorer le résultat de l'analyse, pour cela en revenant sur la présentation Topologie, surligner la loupe qui est présente sur le lient d'interconnexion, puis clic-droit et chosissez '''Stop capture'''.
  
Reprenez la même procédure que précédemment, et concentrez-vous sur le champ ''Next Header'' ainsi que sur le codage de l'extension Fragmentation.
+
Vous pouvez maintenant analyser les messages échangés sur le lien R1-R2. Première remarque, le message de requête émis par la commande traceroute sur PC-1 arrive bien jusqu'à R2. Seconde remarque, on ne voit pas sur la capture une réponse émise  suite à la reqùête. En somme, le routeur R2 reçoit un paquet IPv6 mais n'émet pas de paquet à destination de PC-1.
<center>
+
Regardons alors le contenu de la table de routage de R2:
[[image:A26_TP2_Capture.jpg|thumb|center|665px|TP2 - Capture Fragmentation]]
+
</center>
+
Pouvez-vous expliquer pourquoi il faut 3 paquets IPv6 pour transporter les  requêtes ICMPv6 Request et Reply  de 3000 octets ?
+
Quelle est la taille des données transportées dans chaque paquet ?
+
Quelle est la taille de l'entête IPv6 dans ce cas ?
+
  
 +
vyos@r2:~$ '''show ipv6 route'''
 +
Codes: K - kernel route, C - connected, S - static, R - RIPng,
 +
        O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
 +
        v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
 +
        f - OpenFabric,
 +
        > - selected route, * - FIB route
 +
 +
C>* fd75:e4d9:cb77::/64 is directly connected, eth1, 02:48:50
 +
C>* fd75:e4d9:cb77:2::/64 is directly connected, eth0, 02:48:51
 +
C>* fd75:e4d9:cb77:3::/64 is directly connected, eth3, 02:48:49
 +
C * fe80::/64 is directly connected, eth3, 02:48:49
 +
C * fe80::/64 is directly connected, eth1, 02:48:50
 +
C * fe80::/64 is directly connected, eth0, 02:48:51
 +
C>* fe80::/64 is directly connected, eth2, 02:48:53
 +
vyos@r2:~$
  
 +
Le préfixe de l'adresse de PC-1 est fd75:e4d9:cb77:1::/64. On constate qu'il manque la route pour joindre le réseau Net 1 de préfixe fd75:e4d9:cb77:1::/64. La configuration de R2 est incomplète, il manque une route et c'est donc la raison du dysfonctionnement constaté. Corrigeons ce défaut en ajoutant la route manquante dans R2:
  
 +
vyos@r2:~$ '''vtysh'''
 +
 +
Hello, this is FRRouting (version 7.0).
 +
Copyright 1996-2005 Kunihiro Ishiguro, et al.
 +
 +
r2# '''conf t'''
 +
r2(config)# '''ipv6 route fd75:e4d9:cb77:1::/64 fd75:e4d9:cb77::1 eth1'''
 +
r2(config)# '''end'''
 +
r2# '''copy run start'''
 +
Note: this version of vtysh never writes vtysh.conf
 +
Building Configuration...
 +
Warning: /etc/frr/frr.conf.sav unlink failed
 +
Integrated configuration saved to /etc/frr/frr.conf
 +
[OK]
 +
r2# '''show ipv6 route'''
 +
Codes: K - kernel route, C - connected, S - static, R - RIPng,
 +
        O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
 +
        v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
 +
        f - OpenFabric,
 +
        > - selected route, * - FIB route
 +
 +
C>* fd75:e4d9:cb77::/64 is directly connected, eth1, 03:03:51
 +
'''S>* fd75:e4d9:cb77:1::/64 [1/0] via fd75:e4d9:cb77::1, eth1, 00:00:25'''
 +
C>* fd75:e4d9:cb77:2::/64 is directly connected, eth0, 03:03:52
 +
C>* fd75:e4d9:cb77:3::/64 is directly connected, eth3, 03:03:50
 +
C * fe80::/64 is directly connected, eth3, 03:03:50
 +
C * fe80::/64 is directly connected, eth1, 03:03:51
 +
C * fe80::/64 is directly connected, eth0, 03:03:52
 +
C>* fe80::/64 is directly connected, eth2, 03:03:54
 +
r2#
  
 +
Une route statique vers le réseau Net1 est maintenant visible dans la table de routage.
 +
Vérifions maintenant si le client sur PC-1 arrive à joindre le serveur web sur SRV-3 :
  
 +
root@PC-1:~# '''traceroute6 fd75:e4d9:cb77:3::c3'''
 +
traceroute to fd75:e4d9:cb77:3::c3 (fd75:e4d9:cb77:3::c3), 30 hops max, 80 byte packets
 +
  1  fd75:e4d9:cb77:1::1 (fd75:e4d9:cb77:1::1)  8.846 ms  16.619 ms  17.164 ms
 +
  2  fd75:e4d9:cb77::2 (fd75:e4d9:cb77::2)  24.339 ms  25.307 ms  31.630 ms
 +
  3  fd75:e4d9:cb77:3::c3 (fd75:e4d9:cb77:3::c3)  32.021 ms  32.742 ms  33.043 ms
 +
root@PC-1:~#
  
= Compost=
+
Maintenant que le routage fonctionne, testons le service web :
Suivre les instructions suivantes:
+
# Après avoir arrêté le simulateur, double cliquez sur le dossier "Mooc_IPV6_TP1" , puis sur l'icône "TP1_Etape1_Adresses_ULA"
+
# Attendre que la fenêtre TP_IPv6.gns3 -GNS3 apparaisse à l'écran, 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.
+
# Il est possible d'afficher les numéros des interfaces des équipements représentés sur la maquette, appuyez sur le bouton carré '''"a b c" ''' situé juste en dessous du menu déroulant Device.
+
# Si tout est correct, vous pouvez lancer le simulateur GNS3, grâce au bouton triangulaire vert démarrer "Start/Resume all devices".
+
# Dans la fenêtre centrale les témoins verts des liens indiquent que la simulation démarre, et également à droite la fenêtre "Topology Summary" les témoins des équipements réseaux passent au vert.
+
# Lorsque le simulateur GNS3 est lancé, il faut cliquez sur le bouton symbolisé &gt; _ "Console connect to all devices" à gauche du bouton triangulaire vert, juste en dessous du menu déroulant ''Annotate''.
+
# Les fenêtres de ligne de commande (''Command Line Interface'' (CLI)) 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épend des capacités de votre machine, il faut compter quelques  minutes.
+
  
 
+
root@PC-1:~# '''curl -6 http://[fd75:e4d9:cb77:3::c3]'''
 
+
=== Testez la connectivité depuis chaque PC===
+
 
+
Faites quelques tests de connectivité depuis PC1 avec la commande ping6.
+
 
+
Vers l'interface eth0 de R1
+
'''ping6 fd75:e4d9:cb77:1::ffff'''
+
 
   
 
   
Vers l'interface eth1 de R1
+
.
  '''ping6 fd75:e4d9:cb77::1'''
+
.  code source html de la page d'accueil
 +
  .
 +
 +
root@PC-1:~#
  
Vers l'interface eth0 de R2
+
Cela marche, le code source de la page HTML d'index est téléchargé. Nous avons bien corrigé le défaut.
'''ping6 fd75:e4d9:cb77:2::ffff'''
+
<!--
+
Observer bien que le champ ttl=63 dans les réponses reçues.
+
-->
+
  
Vers l'interface eth0 de PC2
+
== Etape 3: Fonction de fragmentation ==
'''ping6 fd75:e4d9:cb77:2::c2'''
+
<!--
+
Observer bien que le champ ttl=62 dans les réponses reçues.
+
-->
+
  
 +
Nous allons terminer cette activité pratique en illustrant  la fonction de fragmentation d'IPv6. Le cours rappelle que la fragmentation est faite par la source quand un paquet IPv6 a une taille supérieure à la taille que peut contenir une trame autrement dit quand le paquet IPv6 a une taille supérieure à la MTU du lien en sortie.
  
Quelle(s) destination(s) avez vous réussie(s) à joindre avec la commande ping ?
+
Au moyen de la commande ping6 entre PC-1 et PC-2, nous allons demander à émettre un paquet d'une longueur de 2000 octets.
&nbsp;
+
Pour les besoins de l'exercice, nous demandons à réduire la MTU à 1280 octets à l'interface eth1 de R1. Passer en mode configuration, et effectuer les modifications:
  
=== Pour les hôtes PC1 et PC2 ===
+
vyos@r1:~$ '''configure'''
 +
[edit]
 +
vyos@r1# '''set interfaces ethernet eth1 mtu 1280'''
 +
[edit]
 +
vyos@r1# '''commit;save'''
 +
Saving configuration to '/config/config.boot'...
 +
Done
 +
[edit]
 +
vyos@r1#
  
Pour vous loguer sur les stations PC1 et PC2, les identifiant/mot de passe  sont '''apprenant'''/'''''' (pas de mot de passe).
+
<!-- Une capture de paquets IPv6 est démarrée sur le lien de Net 1.
 +
Lancez Wireshark sur VyOS-Router-1 avec le lien e0<->1SW2.
 +
Allez dans la fenêtre '''"Topology Summary"''' puis appuyez sur le + de '''VyOS-Router-2'''. Cliquez sur le lien '''e0<->1SW2''' puis clic-droit et choisissez '''"Start capture"'''. -->
 +
Lancer une capture de paquets IPv6, en surlignant le lien d'interconnexion entre R1 et R2 puis clic-droit et choisir ''Start capture''.
  
Vérifiez la configuration réseau.
+
'''Testez la connectivité entre PC-1 et PC-2'''
apprenant@MOOCIPv6:~$ '''ifconfig'''
+
apprenant@MOOCIPv6:~$ '''route -A inet6'''
+
  
 +
Depuis le terminal de  PC-1, essayez de joindre PC-2.
  
Activez l'interface eth0.
+
root@PC-1::c1:~# '''ping6 -c 3 -n -s 2000 -M want fd75:e4d9:cb77:2::c2'''
  apprenant@MOOCIPv6:~$ '''sudo ifconfig eth0 up'''
+
PING fd75:e4d9:cb77:2::c2(fd75:e4d9:cb77:2::c2) 2000 data bytes
 +
2008 bytes from fd75:e4d9:cb77:2::c2: icmp_seq=1 ttl=62 time=9.49 ms
 +
  2008 bytes from fd75:e4d9:cb77:2::c2: icmp_seq=2 ttl=62 time=3.82 ms
 +
2008 bytes from fd75:e4d9:cb77:2::c2: icmp_seq=3 ttl=62 time=29.6 ms
 +
 +
--- fd75:e4d9:cb77:2::c2 ping statistics ---
 +
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
 +
rtt min/avg/max/mdev = 3.829/14.330/29.671/11.091 ms
 +
root@PC-1::c1:~#
 +
<!-- Prenez soin d'arrêter la capture avant d'aller explorer le résultat de l'analyse : dans la fenêtre '''"Topology Summary"''', sous '''VyOS-Router-1''' cliquez sur le lien '''e0<->1SW2''' puis clic-droit et choisissez '''"Stop capture"'''. -->
  
Vérifiez la configuration réseau.
+
Prenez soin d'arrêter la capture avant d'aller explorer le résultat de l'analyse , pour cela en revenant sur la présentation de la topologie, surlignez l'icône loupe qui est présent sur le lien d'interconnexion puis clic-droit et choisissez ''Stop capture''.
apprenant@MOOCIPv6:~$ '''ifconfig'''
+
apprenant@MOOCIPv6:~$ '''route -A inet6'''
+
  
Vous devez apercevoir qu'une adresse IPv6 lien-local (fe80:...) a été attribuée à l'interface de chaque PC.
+
'''Analyse de la fragmentation'''
  
 +
Vous pouvez maintenant analyser les messages échangés sur le lien R1-R2.
  
Configurez l'adresse globale sur le PC1.
+
Analysez les paquets capturés, et concentrez-vous sur le champ ''Next Header'' ainsi que sur le codage de l'extension Fragmentation.
apprenant@MOOCIPv6:~$ '''sudo ifconfig eth0 fd75:e4d9:cb77:1::c1/64'''
+
<center>
 +
[[image:MoocSession5_act26_fragmentation_20190604.png|thumb|center|400px|Figure 7: Capture Fragmentation]]
 +
</center>
 +
Pouvez-vous expliquer pourquoi il faut 2 paquets IPv6 pour transporter le message de requête ICMPv6 ?
  
Configurez l'adresse globale sur le PC2.
+
Quelle est la taille des données transportées dans chaque paquet ?
apprenant@MOOCIPv6:~$ '''sudo ifconfig eth0 fd75:e4d9:cb77:2::c2/64'''
+
  
=== Testez la connectivité ===
+
Quelle est la taille de l'entête IPv6 dans ce cas ?
  
Après avoir repéré les adresses réseaux des routeurs et des PC, vous devez pouvoir vérifier que la connectivité est opérationnelle.
+
=== 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"''.  
* PC1 - R1
+
Depuis le shell de  PC1, essayez de joindre R1.
+
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fd75:e4d9:cb77:1::ffff'''
+
'''Nota''' : ''comme on utilise des adresses routables, et non pas des adresses lien-local (LLA), on ne spécifie pas l'interface de sortie ; cette dernière est indiquée automatiquement dans la table de routage.''
+
 
+
* PC2 - R2
+
Depuis le shell de  PC2, essayez de joindre R2.
+
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fd75:e4d9:cb77:2::ffff'''
+
 
+
*  R1 - R2, puis R1 - PC1
+
Depuis le routeur R1, essayez de joindre PC1 et R2.
+
vyos# '''ping ipv6 fd75:e4d9:cb77:0001::c1'''
+
vyos# '''ping ipv6 fd75:e4d9:cb77:0000::2'''
+
'''Nota''' : ''comme on utilise des adresses routables, et non pas des adresses lien-local (LLA), on ne spécifie pas l'interface de sortie ; cette dernière est indiquée automatiquement dans la table de routage.''
+
 
+
* R2 - R1 puis R2 - PC2
+
Depuis le routeur R2, essayez de joindre PC2 et R1.
+
vyos# '''ping ipv6 fd75:e4d9:cb77:0002::c2'''
+
vyos# '''ping ipv6 fd75:e4d9:cb77:0000::1'''
+
 
+
En principe, cela doit fonctionner en local. Par contre, si on essaie de joindre des adresses au-delà des routeurs, vous devez être en échec tant que le routage n'est pas activé ; ce que nous devons faire dans la prochaine étape.
+
 
+
 
+
 
+
 
+
* PC1 - R1
+
Depuis le shell de  PC1, essayez de joindre les adresses de R1.
+
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fd75:e4d9:cb77:0001::ffff'''
+
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fd75:e4d9:cb77:0::1'''
+
 
+
* PC2 - R2
+
Depuis le shell de  PC2, essayez de joindre R2.
+
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fd75:e4d9:cb77:0002::ffff'''
+
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fd75:e4d9:cb77:0::2'''
+
 
+
 
+
 
+
* R2 - R1 puis R2 - PC1
+
Depuis le routeur R2, essayez de joindre R1 et PC1.
+
vyos# '''ping ipv6 fd75:e4d9:cb77:0000::1'''
+
vyos# '''traceroute ipv6 fd75:e4d9:cb77:0001::c1'''
+
 
+
* PC1 - PC2
+
Depuis le shell de  PC1, essayez de joindre PC2.
+
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fd75:e4d9:cb77:2::c2'''
+
 
+
 
+
 
+
 
+
apprenant@MOOCIPv6:~$ '''sudo route -A inet6 add ::/0 gw fd75:e4d9:cb77:1::ffff'''
+
 
+
Vérifiez la configuration réseau.
+
apprenant@MOOCIPv6:~$ '''route -A inet6'''
+
* La route par défaut (destination ::/0) doit être visible maintenant.
+
'''Nota''' : ''pour améliorer la lisibilité de la table de routage de PC1, vous serez peut être amené à agrandir la fenêtre de la console avant de lancer la commande précédente, de manière à afficher une entrée de la table de routage par ligne.''
+
 
+
Configuration du routage sur PC2 : ajout d'une route par défaut vers R2.
+
apprenant@MOOCIPv6:~$ '''sudo route -A inet6 add ::/0 gw fd75:e4d9:cb77:2::ffff'''
+
 
+
Vérifiez la configuration réseau.
+
apprenant@MOOCIPv6:~$ '''route -A inet6'''
+
* La route par défaut (destination ::/0) doit être visible maintenant.
+
'''Nota''' : ''pour améliorer la lisibilité de la table de routage de PC1, vous serez peut être amené à agrandir la fenêtre de la console avant de lancer la commande précédente, de manière à afficher une entrée de la table de routage par ligne.''
+
 
+
 
+
Configuration du routage sur PC1 : ajout d'une route par défaut vers R1.
+
Depuis les PC, essayez de joindre les routeurs.
+
apprenant@MOOCIPv6:~$ '''ping -6 -c 5 fe80::...%eth0'''
+
 
+
 
+
'''Nota''' : ''lorsque 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.
+
 
+
Depuis les routeurs, essayez de joindre les PC.
+
vyos@vyos:~$ '''vtysh'''
+
vyos# '''ping ipv6 fe80::...%eth0'''
+
  
'''Nota''' : pour stopper la commande ping : Ctrl+C (appui simultané sur les touches ''Ctrl'' et ''C''.
+
L'état des équipements est sauvegardé en quittant. Pour quitter proprement GNS3, faire <tt>CTRL+Q</tt> ou faire, avec le menu déroulant ''File'' et l'action ''Quit''.
  
 
==Conclusion==
 
==Conclusion==
Line 371: Line 356:
 
* Enfin après avoir mis en oeuvre une configuration simplifiée  
 
* Enfin après avoir mis en oeuvre une configuration simplifiée  
  
Dorénavent vous êtes aptes à approfondir d'autres mécanismes importants pour faciliter l'intégration du protocole dans toutes les infrastructures où IPv6 sera utile d'être déployer. C'est bien ce que vous allez découvrir dans les prochaines séquences.
+
Dorénavant vous êtes aptes à approfondir d'autres mécanismes importants pour faciliter l'intégration du protocole dans toutes les infrastructures où IPv6 sera utile d'être déployer. C'est bien ce que vous allez découvrir dans les prochaines séquences.

Latest revision as of 10:37, 10 January 2024

Activité 26 : Etudiez le fonctionnement du protocole IPv6

Après avoir vu comment un réseau en IPv6 s'utilise dans la première activité pratique, dans cette seconde activité pratique, nous allons voir comment il fonctionne. Vous pourrez ainsi constater que les principes de son fonctionnement sont très similaire à ceux d'IPv4. Nos objectifs sont ici :

  • mettre en oeuvre une capture de paquets IPv6,
  • analyser le format des paquets IPv6,
  • découvrir le routage des paquets dans un réseau IPv6,
  • observer la fragmentation d'un paquet IPv6

Les différentes étapes dans cette activité vont vous permettre d'observer les communications locales au lien et des communications impliquant plusieurs liens. Le réseau de la plateforme est similaire à celui de l'activité précédente comme le montre la figure 1. Il comporte 5 noeuds et repose uniquement sur IPv6. Un serveur web et un serveur DNS sont installés et configurés sur l'hôte appelé SRV-3.

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.

Etape 0: Démarrage de la plateforme

Démarrer la machine virtuelle "MOOCIPv6_S7". Une fois que la machine virtuelle a démarré, vous voyez, sur le bureau, des dossiers prêts pour les 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.

Double cliquer sur le lien intitulé "moocipv6.gns3", présent dans la partie haute du bureau de votre machine virtuelle.

Vous devez restaurer le Snapshot (Activité-26) depuis Edit > Manage snapshots ce qui rechargera les configurations initiales des équipements.

Attendre que la fenêtre moocipv6-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 liaisons, nous pouvons constater ceci : Ce réseau est constitué de 4 liens.

  • lien PC-1 - R1 : les interfaces eth0 de PC-1 et R1 sont reliées à travers le réseau Net1 ;
  • lien R1 - R2 : les interfaces eth1 de R1 et R2 sont reliées à travers le réseau Net0 ;
  • lien PC-2 - R2 : les interfaces eth0 de PC-2 et R2 sont reliées à travers le réseau Net2.
  • lien SRV-3 - R2 : les interfaces eth0 de SRV-3 et eth3 de R2 sont reliées à travers le réseau Net3.

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 tous 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 4, 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".

L'état des équipements est sauvegardé en quittant. Pour quitter proprement GNS3, faire CTRL+Q ou faire, avec le menu déroulant File et l'action Quit.

Etape 1: Capture et analyse d'un flux IPv6

Nous allons capturer le trafic d'une connexion SSH vers R1 depuis PC-1, ensuite nous pourrons analyser les échanges.

Pour étudier ce qui circule sur le support, nous allons mettre en oeuvre une capture de réseau. La plateforme dispose de l'analyseur de protocoles Wireshark. Pour effectuer une capture, il est possible de l'utiliser sur les points de connexions symbolisés par un point vert sur la topologie.

En survolant avec votre pointeur un de ces points, faire un clic-droit et choisir "Start Capture". Il est également possible de lancer une capture,en pointant dans la fenêtre en haut à droite "Topology Summary", puis appuyez sur le + d'un élément réseau.

Choisissez une interface : elle passe en rouge sur la fenêtre centrale. Ensuite, avec un clic-droit, vous pouvez lancer une capture sur ce lien en choisissant "Start capture".

Figure 4: Préparation d'une capture avec Wireshark.

L'arrêt des captures est possible, toujours depuis cette fenêtre "Topology Summary", en choisissant "Stop all captures".

Vous pouvez réaliser ainsi une capture des paquets circulant sur un lien lors d'une communication entre un client et un serveur. Le déroulement des actions est le suivant:

  • Activer Wireshark sur le lien PC-1 eth0<->eth0 R1, puis clic-droit et choisissez "Start capture".
Figure 5: Lancement d'une capture.

Vous pouvez laisser la capture en route le temps que l'on initialise une connexion.

Choisissez l'onglet PC-1, puis tapez les commandes suivantes:

root@PC-1:~# ifconfig eth0
root@PC-1:~# ssh vyos@fd75:e4d9:cb77:1::1
Welcome to VyOS
vyos@fd75:e4d9:cb77:1::1's password:vyos 
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sat Jun 1 14:24:36 2019 from fd75:e4d9:cb77:1:583d:54ff:fec1:1e7b
vyos@r1:~$ sh ver
vyos@r1:~$ exit
logout Connection to fd75:e4d9:cb77:1::1 closed. 
root@PC-1:~# 

A ce stade, vous pouvez arrêter la capture, soit depuis cette fenêtre "Topology Summary", en choisissant "Stop all captures". soit en surlignant le lien sur la topologie, clic-droit et "Stop capture". En prenant en main, Wireshark, nous retrouvons la séquence des paquets correspondant à notre connexion, retrouvez en un parmi ceux qui comportent un message TCP à destination du port 22.

Figure 6: Analyse d'une capture.

Vous pouvez explorer les différents champs de l'en-tête du paquet IPv6 pour répondre aux questions suivantes:

  • Quelle est la valeur du champ Hop Limit ?
  • Quel est le type de l'adresse source utilisée ?
  • Quelle est la valeur du champ Next Header ?
  • Quelle est la longueur des données utiles du paquet ?

Enfin pour terminer cette analyse de cette capture du paquet IPv6, vous pouvez également explorer les différents champs de la trame Ethernet encapsulant le paquet IPv6. Vous devriez voir la valeur du champ EtherType à 0x86dd indiquant que la trame Ethernet contient un paquet IPv6.

Etape 2: Routage et acheminement d'un paquet

Les échanges sont possibles entre noeuds en passant par des routeurs si ces derniers sont capables de déterminer la route pour joindre la destination. A cet effet, les routeurs possèdent une table de routage qui contient les informations nécessaires pour acheminer un paquet vers sa destination.

Observation d'une table de routage

La consultation de la table de routage de R1 s'effectue par la commande

vyos@r1:~$ show ipv6 route

ou bien

vyos@r1:~$ vtysh
r1# sh ipv6 route
r1# exit
vyos@r1:~$

La table de routage de PC-2 est obtenue soit par la commande

root@PC-2::c2:~# ip -6 route show

ou la commande

root@PC-2::c2 netstat -6 -nr

Nota : pour améliorer la lisibilité de la table de routage de PC2, vous serez peut être amené à agrandir la fenêtre de la console avant de lancer la commande précédente, de manière à afficher une entrée de la table de routage par ligne.

Vous remarquerez qu'il y a deux routes pour une remise directe. Il s'agit des routes dont la destination partage le même préfixe que la source sur 64 bits. Enfin une troisième route passe par eth0, il s'agit de la route par défaut notée ::/0 ou default. Cette route indique une remise indirecte.

Si nous voulons faire apparaitre la route prise pour aller de PC-2 à R1, nous disposons de la commande traceroute6:

root@PC-2:~$ traceroute6 -n  fd75:e4d9:cb77::1

Naturellement vous reconnaissez l'adresse IPv6 de R2 puis celle de R1. Cet affichage indique la route prise pour joindre R1 mais également que R1 est accessible par l'adresse alloué à eth1.

Analyse de la route pour atteindre le serveur web

L'hôte sur le PC-1 comporte l'utilitaire web cURL (client URL Request Library). Ce dernier permet de consulter les pages hébergées sur le serveur web SRV-3. Sur le terminal de PC-1, entrer la commande de téléchargement :

root@PC-1:~# curl  -6 http://[fd75:e4d9:cb77:3::c3]

Oups, vous devez voir rien arriver. Vous pouvez interrompre l'attente avec la combinaison de touches (CTRL+C).

. CTRL+C

Nous avons ici un problème de connectivité entre PC-1 et SRV-3. Voyons voir d'où viens le problème.

Commençons par vérifier que la source et la destination ont bien une adresse IPv6, sur PC-1 et SRV-3 faire l'affichage des adresses alloués sur l'interface eth0: sur PC-1

root@PC-1:~# ip -6 addr show eth0

sur SRV-3

root@SRV-3:~# ip -6 addr show eth0

Si au niveau des adresses tout est normal. Regardons, si PC-1 et SRV-3 ont bien tous les deux une route par défaut:

root@PC-1:~# route -A inet6 -n
root@SRV-3:~# route -A inet6 -n

Un affichage comportant la ligne ci-dessous indique qu'il y a une route par défaut. L'adresse du Next Hop doit être l'adresse IPv6 du routeur local.

::/0              fd75:e4d9:cb77:1::1    UG  1024   1   0 eth0    

Voyons maintenant au niveau de la route, commençons par afficher la route pour atteindre SRV-3 depuis PC-1:

root@PC-1:~# traceroute6 -n fd75:e4d9:cb77:3::c3
traceroute to fd75:e4d9:cb77:3::c3 (fd75:e4d9:cb77:3::c3), 30 hops max, 80 byte packets
 1  fd75:e4d9:cb77:1::1 (fd75:e4d9:cb77:1::1)  1.119 ms  3.771 ms  3.865 ms
 2  * * *
 3  * * *
 4  * * *
 .
 .
 .
30  * * *
root@PC-1:~#
  

Le résultat montre que la route s'arrête après le routeur R1. Recommençons le test mais depuis SRV-3 cette fois-ci pour atteindre PC-1

root@SRV-3:~# traceroute6 -n fd75:e4d9:cb77:1::c1
traceroute to fd75:e4d9:cb77:1::c1 (fd75:e4d9:cb77:1::c1), 30 hops max, 80 byte packets
1  fd75:e4d9:cb77:3::3 (fd75:e4d9:cb77:3::3)  4.657 ms !N  6.011 ms !N  6.400 ms !N
root@SRV-3:~#

Cette fois-ci, le résultat montre que la route s'arrête après R2. Il y a donc une erreur entre les routeurs R1 et R2.

Regardons ce qui circule sur le lien d'infrastructure. Pour cela démarrons une capture de réseau sur un point de connexion symbolisé par un point vert sur la topologie. Nous retiendrons l'interface eth1 du routeur R2 ou R1.

Après avoir surligné le lien d'interconnexion entre R1 et R2, faire un clic droit et lancer la capture wireshark avec Start capture

Depuis le terminal de PC-1, lancer un traceroute vers SRV-3.

root@PC-1:~# traceroute6 -n fd75:e4d9:cb77:3::c3
traceroute to fd75:e4d9:cb77:3::c3 (fd75:e4d9:cb77:3::c3), 30 hops max, 80 byte packets
 1  fd75:e4d9:cb77:1::1 (fd75:e4d9:cb77:1::1)  1.119 ms  3.771 ms  3.865 ms
 2  * * *
 3  * * *
 4  * * *
 .
 .
 .
CTRL+C
root@PC-1:~#

Prenez soin d'arrêter la capture avant d'aller explorer le résultat de l'analyse, pour cela en revenant sur la présentation Topologie, surligner la loupe qui est présente sur le lient d'interconnexion, puis clic-droit et chosissez Stop capture.

Vous pouvez maintenant analyser les messages échangés sur le lien R1-R2. Première remarque, le message de requête émis par la commande traceroute sur PC-1 arrive bien jusqu'à R2. Seconde remarque, on ne voit pas sur la capture une réponse émise suite à la reqùête. En somme, le routeur R2 reçoit un paquet IPv6 mais n'émet pas de paquet à destination de PC-1. Regardons alors le contenu de la table de routage de R2:

vyos@r2:~$ show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route

C>* fd75:e4d9:cb77::/64 is directly connected, eth1, 02:48:50
C>* fd75:e4d9:cb77:2::/64 is directly connected, eth0, 02:48:51
C>* fd75:e4d9:cb77:3::/64 is directly connected, eth3, 02:48:49
C * fe80::/64 is directly connected, eth3, 02:48:49
C * fe80::/64 is directly connected, eth1, 02:48:50
C * fe80::/64 is directly connected, eth0, 02:48:51
C>* fe80::/64 is directly connected, eth2, 02:48:53
vyos@r2:~$

Le préfixe de l'adresse de PC-1 est fd75:e4d9:cb77:1::/64. On constate qu'il manque la route pour joindre le réseau Net 1 de préfixe fd75:e4d9:cb77:1::/64. La configuration de R2 est incomplète, il manque une route et c'est donc la raison du dysfonctionnement constaté. Corrigeons ce défaut en ajoutant la route manquante dans R2:

vyos@r2:~$ vtysh

Hello, this is FRRouting (version 7.0).
Copyright 1996-2005 Kunihiro Ishiguro, et al.

r2# conf t
r2(config)# ipv6 route fd75:e4d9:cb77:1::/64 fd75:e4d9:cb77::1 eth1
r2(config)# end
r2# copy run start
Note: this version of vtysh never writes vtysh.conf
Building Configuration...
Warning: /etc/frr/frr.conf.sav unlink failed
Integrated configuration saved to /etc/frr/frr.conf
[OK]
r2# show ipv6 route
Codes: K - kernel route, C - connected, S - static, R - RIPng,
       O - OSPFv3, I - IS-IS, B - BGP, N - NHRP, T - Table,
       v - VNC, V - VNC-Direct, A - Babel, D - SHARP, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route

C>* fd75:e4d9:cb77::/64 is directly connected, eth1, 03:03:51
S>* fd75:e4d9:cb77:1::/64 [1/0] via fd75:e4d9:cb77::1, eth1, 00:00:25
C>* fd75:e4d9:cb77:2::/64 is directly connected, eth0, 03:03:52
C>* fd75:e4d9:cb77:3::/64 is directly connected, eth3, 03:03:50
C * fe80::/64 is directly connected, eth3, 03:03:50
C * fe80::/64 is directly connected, eth1, 03:03:51
C * fe80::/64 is directly connected, eth0, 03:03:52
C>* fe80::/64 is directly connected, eth2, 03:03:54
r2# 

Une route statique vers le réseau Net1 est maintenant visible dans la table de routage. Vérifions maintenant si le client sur PC-1 arrive à joindre le serveur web sur SRV-3 :

root@PC-1:~# traceroute6 fd75:e4d9:cb77:3::c3 
traceroute to fd75:e4d9:cb77:3::c3 (fd75:e4d9:cb77:3::c3), 30 hops max, 80 byte packets
 1  fd75:e4d9:cb77:1::1 (fd75:e4d9:cb77:1::1)  8.846 ms  16.619 ms  17.164 ms
 2  fd75:e4d9:cb77::2 (fd75:e4d9:cb77::2)  24.339 ms  25.307 ms  31.630 ms
 3  fd75:e4d9:cb77:3::c3 (fd75:e4d9:cb77:3::c3)  32.021 ms  32.742 ms  33.043 ms
root@PC-1:~#

Maintenant que le routage fonctionne, testons le service web :

root@PC-1:~# curl -6 http://[fd75:e4d9:cb77:3::c3]

.
.  code source html de la page d'accueil
.

root@PC-1:~# 

Cela marche, le code source de la page HTML d'index est téléchargé. Nous avons bien corrigé le défaut.

Etape 3: Fonction de fragmentation

Nous allons terminer cette activité pratique en illustrant la fonction de fragmentation d'IPv6. Le cours rappelle que la fragmentation est faite par la source quand un paquet IPv6 a une taille supérieure à la taille que peut contenir une trame autrement dit quand le paquet IPv6 a une taille supérieure à la MTU du lien en sortie.

Au moyen de la commande ping6 entre PC-1 et PC-2, nous allons demander à émettre un paquet d'une longueur de 2000 octets. Pour les besoins de l'exercice, nous demandons à réduire la MTU à 1280 octets à l'interface eth1 de R1. Passer en mode configuration, et effectuer les modifications:

vyos@r1:~$ configure
[edit]
vyos@r1# set interfaces ethernet eth1 mtu 1280
[edit]
vyos@r1# commit;save
Saving configuration to '/config/config.boot'...
Done
[edit]
vyos@r1#

Lancer une capture de paquets IPv6, en surlignant le lien d'interconnexion entre R1 et R2 puis clic-droit et choisir Start capture.

Testez la connectivité entre PC-1 et PC-2

Depuis le terminal de PC-1, essayez de joindre PC-2.

root@PC-1::c1:~# ping6 -c 3 -n -s 2000 -M want fd75:e4d9:cb77:2::c2
PING fd75:e4d9:cb77:2::c2(fd75:e4d9:cb77:2::c2) 2000 data bytes
2008 bytes from fd75:e4d9:cb77:2::c2: icmp_seq=1 ttl=62 time=9.49 ms
2008 bytes from fd75:e4d9:cb77:2::c2: icmp_seq=2 ttl=62 time=3.82 ms
2008 bytes from fd75:e4d9:cb77:2::c2: icmp_seq=3 ttl=62 time=29.6 ms

--- fd75:e4d9:cb77:2::c2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 3.829/14.330/29.671/11.091 ms
root@PC-1::c1:~#

Prenez soin d'arrêter la capture avant d'aller explorer le résultat de l'analyse , pour cela en revenant sur la présentation de la topologie, surlignez l'icône loupe qui est présent sur le lien d'interconnexion puis clic-droit et choisissez Stop capture.

Analyse de la fragmentation

Vous pouvez maintenant analyser les messages échangés sur le lien R1-R2.

Analysez les paquets capturés, et concentrez-vous sur le champ Next Header ainsi que sur le codage de l'extension Fragmentation.

Figure 7: Capture Fragmentation

Pouvez-vous expliquer pourquoi il faut 2 paquets IPv6 pour transporter le message de requête ICMPv6 ?

Quelle est la taille des données transportées dans chaque paquet ?

Quelle est la taille de l'entête IPv6 dans ce cas ?

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".

L'état des équipements est sauvegardé en quittant. Pour quitter proprement GNS3, faire CTRL+Q ou faire, avec le menu déroulant File et l'action Quit.

Conclusion

Grâce à cette deuxième séquence du Mooc IPv6 vous avez découvert et appréhendé différents aspects du protocole:

  • Après avoir passé en revue le format de l’en-tête des paquets IPv6,
  • Vous avez compris l'importance des mécanismes d’encapsulation,
  • Vous avez intégré les principes de routage,
  • Vous avez appréhendé les extensions de l’en-tête IPv6
  • Enfin après avoir mis en oeuvre une configuration simplifiée

Dorénavant vous êtes aptes à approfondir d'autres mécanismes importants pour faciliter l'intégration du protocole dans toutes les infrastructures où IPv6 sera utile d'être déployer. C'est bien ce que vous allez découvrir dans les prochaines séquences.

Personal tools