mercredi 7 mai 2014

Configuration des protocoles de routage IPV6

Maintenant que vous maitrisez la théorie de base qui entoure l’IPv6, passons aux choses sérieuses.
Nous allons voir comment configurer une interface, comment configurer les différents protocoles de routages, mais aussi comment fonctionne le Ping en IPv6, comment fonctionne Neighbor Discovery (le remplaçant d’ARP), etc…

1)     Présentation de la topologie

 Pour ces manipulations, nous allons utiliser une topologie unique.
La voici :
Nous avons trois grands réseaux. Chacun d’eux utilisent un protocole de routage différent.
Entre R1, R2 et R3, nous utiliserons des routes statiques.
Mais avant cela, attardons nous sur la configuration basique, c’est-à-dire les adresses IPv6.

 2)     Configuration d’interface
 Commençons par le plus important : les interfaces !
 Cela peut paraitre simple, mais en fait il y a plus de choses à maitriser qu’en IPv4.
Nous avons vu qu’il y a trois types d’adresse :
  • La Local Link
  • La Global
  • La Site Local
La site Local n’étant plus utilisée, il nous reste les deux autres.
Laquelle allons-nous mettre sur nos interfaces ?
Les deux !
Et oui, chaque interface de notre routeur aura deux IPv6.
La Global pour les communications standards, et la Link Local pour la découverte de voisin, l’échange d’infos pour les protocoles de routage, etc…
 Commençons par configurer la Global (en utilisant les IP de la topologie) :
R1(config)#interface fastEthernet 0/0
R1(config-if)#ipv6 address 2001:12::1/64
R1(config-if)#no shutdown
 Pour voir le résultat 

L’IP Global est bien configurée.
Mais vous pouvez voir que l’IP Link Local est aussi configurée.
 En fait, elle est auto configurée.
Pour auto configurer son IP, une interface prend le préfix (ici FE80::64) et y ajoute l’identifiant de l’interface.
Pour obtenir son identifiant unique (EUI-64), l’interface effectue une manipulation à partir de son adresse MAC, afin d’obtenir une adresse de 64 bits.
 Pour bien comprendre le processus, voyons comment R1 a pu trouver son IP Link Local au format EUI-64.
Sur la capture précédente, vous pouvez voir le fameux préfix FE80:: /64
La deuxième moitié de l’adresse est calculé automatiquement par le routeur.
Pour cela il a besoin de l’adresse MAC de l’interface :

L’adresse MAC est donc : C200.0B60.0000 
Il va ensuite ajouter la valeur FFFE au milieu de l’adresse
Ce qui nous donne : C200.0BFF.FE60.0000
Dernière étape : inverser le 7ème bit
Voici le début de l’adresse en binaire (C2) : 11000010
En inversant le 7ème bit, nous obtenons, 11000000, soit C0
L’adresse devient alors C000.0BFF.FE60.0000 
En y ajoutant le préfix FE80 ::/64 l’adresse Link Local complète devient :
FE80:0000:0000:0000:C000:0BF:FE60:0000
Cela correspond bien à l’IP donné par le routeur :
Voici donc comment en IPv6 nous pouvons auto configurer une IP au format EUI-64.
Il faut donc un préfix de 64 bits, plus l’identifiant de l’interface (le EUI-64).
Il est possible d’auto configurer une IP Link Local, mais aussi une IP Global.
 Pour résumer, nous avons configuré une IP Global (sur R1 fa0/0) à la main, et l’IP Link Local s’est auto configuré.
Faisons donc l’inverse sur R2 !
Nous allons configurer l’IP Link Local à la main, et laisser R2 déterminer l’IP Global.
Commençons par l’IP Link Local
R2(config-if)#no shutdown
R2(config-if)#ipv6 address FE80::2 link-local
 Passons à l’IP Global
Étant donné que R2 ne peut pas deviner le préfix, il faut que R1 l’annonce.
Il faut donc passer les commandes suivantes sur R1 :
R1(config)#ipv6 unicast-routing
R1(config)#interface fastEthernet 0/0
R1(config-if)#ipv6 nd prefix 2001:12::/64
 Maintenant que R1 annonce le préfix, il ne reste plus qu’à dire à R2 de le récupérer :
R2(config-if)#ipv6 address autoconfig
 Et voici le résultat :
Libre à vous de choisir la technique de votre choix pour configurer les IP sur les autres routeurs / interfaces.
 Mais avant de passer à la suite, voyons ce qui se passe quand nous configurons une IPv6.
Pour cela, plaçons-nous sur R2 s0/0 et activons le debug ND (Neighbor Discovery) :
R2(config)#interface serial 0/0
R2(config-if)#no shutdown
R2(config-if)#do debug ipv6 nd
ICMP Neighbor Discovery events debugging is on
 Ensuite, configurez l’IP puis observez les Log :
Quand une IP est configurée en IPv6, le routeur s’assure que l’IP est unique. Il fait cela pour l’IP Link Local et pour la Global.
Tout d’abord, le routeur envoie un NS – Neighbor Solicitation. Cela permet de vérifier si quelqu’un utilise déjà cette IP.
Si personne ne répond, le log DAD – Detection Address Double indique que l’IP est libre.
Enfin, le routeur envoie un NA – Neighbor Advertisement pour indiquer qu’il prend cette IP.
 Vous pouvez voir que le même processus est utilisé pour l’IP Global.
Quand vous avez fini, n’oubliez pas désactiver le débug
R2#undebug all
 Si toutes les IP sont configurées, vous pouvez passer à la suite.
 3)     Le Ping en IPv6
 Afin de tester les IP, quoi de mieux qu’un Ping
Pour lancer un Ping, la commande est presque là même :
Mais que se passe-t-il en coulisse ?
Que se passe-t-il quand on ne connait pas encore l’adresse MAC du voisin ?
En IPv4, il faut d’abord envoyer une requête ARP.
Et en IPv6 ?
Nous en avons déjà parlé. Le protocole ND – Neighbor Discovery est utilisé.
Concrètement, avant de pouvoir lancer un Ping, il faut connaitre l’adresse MAC de la destination.
Pour connaitre celle-ci, le routeur va envoyer une requête NS – Neighbor Solicitation en multicast, sur une adresse à laquelle la destination est abonnée.
 Prenons un exemple, ce sera bien plus simple.
Nous souhaitons faire un Ping de R1 vers R2.
R1 a pour IPv6 2001:12::1 et R2 2001:12::2
Nous allons donc envoyer un Ping vers 2001:12::2
C’est ici que NS entre en jeu.
Avant d’envoyer le Ping, R1 va envoyer un NS sur l’IP FF02::1:FF00:2
Cette IP est du type Local Link.
Vous pouvez voir que R2 y est abonné :

Mais comment R1 a deviné cette IP ?
Et bien simplement que cette IP respecte un schéma bien précis.
Elle est constituée du préfix FF02 ::/64 suivi de 0001:FFxx:xxxx (où les « x » correspondent aux 24 derniers bits de l’IP Global).
Donc pour résumer, R1 veut envoyer un Ping à R2 sur 2001:12::2
Il commence par envoyer un NS sur FF02::1:FF002
R2 va recevoir ce message, et va y répondre (NA – Neighbor Advertisement) car il y est abonné.
En répondant, il donne son adresse MAC à R1.
Après quoi, R1 peut envoyer un Ping à R2.
 Au passage, si deux routeurs ont les mêmes 24 derniers bits dans leur IP, ils recevront tous les deux le message NS. Par contre, seul le routeur concerné y répondra.
 Si vous souhaitez une petite démonstration, voici les étapes :
  • Vider la table de voisinage IPv6 : « clear ipv6 neighbors »
  • Lancer une capture WireShark : Clic droit sur le lien R1 -> R2, puis « Start Capturing »
  • Lancer le Ping : « ping ipv6 2001:12::2 repeat 1 »
  • Ouvrir WireShark : Clic Droit sur le lien, « Open WireShark »

Et voici les 4 étapes d’un Ping (seulement quand le routeur ne connait pas l’adresse MAC du voisin)
Une fois l’adresse connue, plus besoin de NS et NA.
 Il faut donc retenir
NS – Neighbor Solicitation : permet de déterminer l’adresse de niveau 2 d’un routeur voisin, ou de vérifier si l’adresse est utilisée.
NA – Neighbor Advertisement : permet de répondre à un NS, ou d’annoncer un changement d’adresse.
 4)     Configuration de routes statiques
 Il n’est pas nécessaire de tergiverser, les routes statiques n’ont rien de spécial.
Avant de pouvoir effectuer du routage IPv6, il faut entrer la commande suivant sur tous les routeurs
R1(config)#ipv6 unicast-routing
R2(config)#ipv6 unicast-routing
Etc…
Pour créer une route statique, rien de plus simple :
R2(config)#ipv6 route 2001:36::/64 serial 0/0
R2(config)#ipv6 route 2001:45::/64 2001:24::4
R2(config)#ipv6 route 2001:34::/64 serial 0/1
 Les commandes se passent d’explication !
 Faites de même pour R3 et R4 :
R3(config)#ipv6 route 2001:12::/64 serial 1/0
R3(config)#ipv6 route 2001:45::/64 serial 0/1
R3(config)#ipv6 route 2001:24::/64 serial 0/1
 R4(config)#ipv6 route 2001:12::/64 serial 0/0
R4(config)#ipv6 route 2001:36::/64 serial 0/1
R4(config)#ipv6 route 2001:23::/64 serial 0/0
 Très simple n’est-ce pas ?
 5)     Configuration de RIPng
 RIPng est la version IPv6 de RIP v2.
Il fonctionne de la même manière, possède les mêmes attributs, etc…
Les MAJ sont envoyées en multicast sur l’IP FF02 ::9 en UDP (port 521)
Pour ce qui est de l’authentification, elle n’est plus gérée par RIP, mais directement par IPv6.
 L’activation de RIP se fait directement sur les interfaces :
R1(config)#interface fastEthernet 0/0
R1(config-if)#ipv6 rip IPV6LAB enable
 R2(config)#interface fastEthernet 0/0
R2(config-if)#ipv6 rip IPV6LAB enable
R2(config)#interface serial 0/0
R2(config-if)#ipv6 rip IPV6LAB enable
R2(config)#interface serial 0/1
R2(config-if)#ipv6 rip IPV6LAB enable
 R2(config)#ipv6 router rip IPV6LAB
R2(config-rtr)#redistribute static
 Voyons si cela a fonctionné :
En effet, R1 connait toutes les routes !
Un petit Ping pour tester :
La commande « Debug ipv6 rip » permet d’observer le fonctionnement des MAJ RIPng :
Vous pouvez constater que ce sont les IP Link Local qui sont utilisées pour l’envoie de MAJ.
Quant à la version du protocole, il ne s’agit pas de RIP v1, mais de RIPng v1.
 6)     Configuration d’OSPF V3
 La version 3 d’OSPF apporte quelques changements par rapport à la version 2.
Nous laisserons la théorie de côté pour cette fois.
Concentrons-nous sur la pratique, qui elle n’a rien de difficile.
R5(config)#ipv6 router ospf 1
R5(config-rtr)#router-id 5.5.5.5
 R5(config)#interface fastEthernet 0/0
R5(config-if)#ipv6 ospf 1 area 0
 R4(config)#ipv6 router ospf 1
R4(config-rtr)#router-id 4.4.4.4
R4(config-rtr)#redistribute static
R4(config-rtr)#passive-interface serial 0/0
R4(config-rtr)#passive-interface serial 0/1
 R4(config)#interface fastEthernet 0/0
R4(config-if)#ipv6 ospf 1 area 0
R4(config)#interface serial 0/0
R4(config-if)#ipv6 ospf 1 area 0
R4(config)#interface serial 0/1
R4(config-if)#ipv6 ospf 1 area 0
 Voyons la table de routage
Pour le reste, les commandes sont très semblables à la version 2.
 7)     Configuration d’EIGRP en IPv6
 Finissons par une configuration basique d’EIGRP en IPv6.
Voyons quelques commandes de bases pour le mettre en place.
 Premièrement, il faut activer le processus EIGRP :
R3(config)#ipv6 router eigrp 1
R3(config-rtr)#eigrp router-id 3.3.3.3 (l’ID est obligatoire si aucune IPV4 n’est configurée sur le routeur)
R3(config-rtr)#passive-interface serial 1/0
R3(config-rtr)#passive-interface serial 1/1
R3(config-rtr)#redistribute static
R3(config)#interface serial 1/0
R3(config-if)#ipv6 eigrp 1
R3(config)#interface serial 1/1
R3(config-if)#ipv6 eigrp 1
R3(config)#interface fastEthernet 0/0
R3(config-if)#ipv6 eigrp 1

R6(config)#ipv6 router eigrp 1
R6(config-rtr)#eigrp router-id 6.6.6.6
R6(config)#interface fastEthernet 0/0
R6(config-if)#ipv6 eigrp 1
 Constatons le résultat :

8)     Conclusion

 Et voilà, nous sommes arrivés au terme de notre configuration basique d’IPv6 !
Nous avons vu comment configurer des IP, des routes statiques, des protocoles de routage, etc…

Même si il ne s’agit là que d’un aperçu de ce qu’il est possible de faire, cela constitue une bonne base pour la suite.
Vous aurez pu constater que même si les commandes changent un peu, le principe reste le même.