440 lines
17 KiB
TeX
440 lines
17 KiB
TeX
\documentclass[a4paper,french,12pt]{article}
|
|
|
|
\title{Panorama des réseaux WAN\\TP2~: IPv6}
|
|
\author{Tunui Franken}
|
|
\date{Dernière compilation~: \today{} à \currenttime}
|
|
|
|
\usepackage{styles}
|
|
\usepackage{enumitem}
|
|
\usepackage{tikz}
|
|
\usetikzlibrary{shapes}
|
|
|
|
\begin{document}
|
|
|
|
\maketitle
|
|
\clearpage
|
|
\tableofcontents
|
|
|
|
\clearpage
|
|
|
|
\section{Introduction}
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Quelle est la taille d'un mot de l'en-tête IPv6~?
|
|
Combien de mots comporte l'en-tête d'un paquet IPv4 au minimum~?
|
|
Quelle est la taille d'un paquet IPv6~?
|
|
|
|
\emph{Un mot fait la moitié d'un \texttt{DWORD}, soit 16 bits}.
|
|
\emph{L'en-tête du paquet IPv4 fait 5 mots, et la taille du paquet IPv6 est de 1500 octets, avec un en-tête de 40 octets}.
|
|
|
|
\item Comment fait un n\oe{}ud, lorsqu'il reçoit une trame Ethernet, pour savoir si c'est un paquet IPv4 ou IPv6~?
|
|
|
|
\emph{Il doit regarder le champ \texttt{Version}, qui vaut 4 pour IPv4 et 6 pour IPv6.}
|
|
|
|
\item Décrire la différence du traitement de la fragmentation entre IPv4 et IPv6.
|
|
|
|
\emph{Avec IPv4, chaque routeur traversé peut fragmenter, alors qu'en IPv6, c'est la source qui fragmente, le paquet n'est ensuite plus fragmenté jusqu'à la destination.}
|
|
|
|
\item Expliquer le rôle des adresses IPv6 de type Local Link.
|
|
|
|
\emph{Les adresses de lien local ne sont pas routables (elles ne sortent pas des routeurs).}
|
|
\emph{Elles permettent de joindre les passerelles et de faire des demandes \texttt{unicast} sur le réseau local.}
|
|
\emph{La principale utilisation est l'autoconfiguration et le DHCP.}
|
|
\emph{On peut ajouter que comme les adresses sont réutilisables sur différents réseaux (car non routables), ceci permet d'utiliser des adresses simples à retenir pour les communications locales.}
|
|
|
|
\item À l'aide de PaquetTracer, connecter 2 machines~:
|
|
|
|
\begin{center}
|
|
\includegraphics[width=0.7\linewidth]{./img/pkt_ex1.png}
|
|
\end{center}
|
|
|
|
À partir de la machine M1, lancer la commande \texttt{ping fe80:\ldots} sur M2 (ping en link-local).
|
|
Modifier par la suite les adresses de lien local en mettant \texttt{fe80::1} pour M1 et \texttt{fe80::2} pour M2.
|
|
|
|
\end{enumerate}
|
|
|
|
\section{Configuration IPv6 sur routeur Cisco}
|
|
|
|
L'objectif est de réaliser la configuration suivante~:
|
|
|
|
\begin{center}
|
|
\includegraphics[width=\linewidth]{./img/pkt_ex2.png}
|
|
\end{center}
|
|
|
|
\subsection{Configuration statique}
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Quelle est la commande qui nous permet d'avoir des adresses link local~?
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Router(config-if)# ipv6 address x:x:x:x::x link-local
|
|
\end{lstlisting}
|
|
|
|
\item Réaliser la maquette ci-dessus en respectant les adresses IPv6 indiquées.
|
|
Vérifier à l'aide de la commande \texttt{show ipv6} la bonne prise en compte de votre configuration.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
R1(config)# int g0/0
|
|
R1(config-if)# ipv6 address 2001:828:105:1::1/64
|
|
R1(config-if)# no shut
|
|
R1(config)# int g0/1
|
|
R1(config-if)# ipv6 address 2001:828:105::1/64
|
|
R1(config-if)# no shut
|
|
R1(config-if)# do show ipv6 int brief
|
|
|
|
R2(config)# int g0/0
|
|
R2(config-if)# ipv6 address 2001:828:105:2::1/64
|
|
R2(config-if)# no shut
|
|
R2(config)# int g0/1
|
|
R2(config-if)# ipv6 address 2001:828:105::2/64
|
|
R2(config-if)# no shut
|
|
R2(config-if)# do show ipv6 int brief
|
|
\end{lstlisting}
|
|
|
|
\begin{center}
|
|
\includegraphics[width=\linewidth]{./img/pc-ipv6-ex2.png}
|
|
\end{center}
|
|
|
|
\item Par défaut, pas de routage IPv6, il faut l'activer.
|
|
Quelle est la commande qui permet de le faire~?
|
|
Afficher ensuite la table de routage.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
R1(config)# ipv6 unicast routing
|
|
R1(config)# do show ipv6 route
|
|
\end{lstlisting}
|
|
|
|
\item Ajouter les routes nécessaires pour que tous les équipements puissent communiquer.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
R1(config)# ipv6 route 2001:828:105:2::/64 2001:828:105::2
|
|
R2(config)# ipv6 route 2001:828:105:1::/64 2001:828:105::1
|
|
\end{lstlisting}
|
|
|
|
\end{enumerate}
|
|
|
|
\subsection{EUI-64 --- Extended Unique Identifier}
|
|
|
|
L'IEEE a défini un identificateur global de 64 bits (format EUI-64) pour les réseaux IEEE 1394 qui vise une utilisation dans le domaine de la domotique.
|
|
Les 2 bits \texttt{u} (7\up{e} bit du premier octet) et \texttt{g} (8\up{e} bit du premier octet) ont une signification spéciale~:
|
|
|
|
\begin{itemize}
|
|
\item \texttt{u} vaut 0 si l'identifiant EUI-64 est universel.
|
|
\item \texttt{g} indique si l'adresse est individuelle ($g = 0$), c'est-à-dire désigne un seul équipement sur le réseau, ou de groupe ($g = 1$), par exemple une adresse multicast.
|
|
\end{itemize}
|
|
|
|
L'dientifiant d'interface dans IPv6 à 64 bits est dérivé de l'EUI-64 en inversant le bit \texttt{u}.
|
|
En effet, pour la construction des adresses IPv6, on a préféré utiliser 1 pour marquer l'unicité mondiale.
|
|
Cette inversion de la sémantique du bit permet de garder la valeur 0 pour une numérotation manuelle, autorisant à numéroter simplement les interfaces locales à partir de 1.
|
|
|
|
Voici un schéma qui décrit comment déduire l'\texttt{interface ID} à partir d'une adresse MAC~:
|
|
|
|
\begin{center}
|
|
\includegraphics[width=0.8\linewidth]{./img/eui-mac.png}
|
|
\end{center}
|
|
|
|
\begin{enumerate}\setcounter{enumi}{4}
|
|
|
|
\item Configurer l'adresse IPv6 d'un routeur Cisco en utilisant le standard EUI-64.
|
|
Vérifier la bonne prise en compte de votre configuration.
|
|
|
|
\emph{On commence par chercher l'adresse MAC de notre interface à configurer~:}
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
R1#show int g0/1 | include address
|
|
Hardware is CN Gigabit Ethernet, address is 0060.708b.2402 (bia 0060.708b.2402)
|
|
\end{lstlisting}
|
|
|
|
\emph{On a donc deux 6 groupes de deux nombres hexadécimaux~: \texttt{00 60 70 8b 24 02}.}
|
|
|
|
\emph{On peut maintenant inverser le bit \texttt{u} dans le premier octet~:}
|
|
|
|
\emph{$00 \rightarrow 00000000 \rightarrow 00000010 \rightarrow 02$.}
|
|
|
|
\emph{Après avoir inséré les octets \texttt{FF} et \texttt{FE} au milieu de l'adresse MAC, on obtient alors l'adresse IPv6 suivante~:}
|
|
\emph{\texttt{02:60:70:ff:fe:8b:24:02}.}
|
|
\emph{Affectons-là à l'interface du routeur~:}
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
R1(config-if)# ipv6 address 02:60:70:ff:fe:8b:24:02/64
|
|
R1(config-if)# do show ipv6 int brief
|
|
GigabitEthernet0/0 [up/up]
|
|
FE80::260:70FF:FE8B:2401
|
|
2001:828:105:1::1
|
|
GigabitEthernet0/1 [up/up]
|
|
FE80::260:70FF:FE8B:2402
|
|
2:60:70:FF:FE:8B:24:2
|
|
\end{lstlisting}
|
|
|
|
\end{enumerate}
|
|
|
|
\section{Auto-configuration}
|
|
|
|
Soit la maquette suivante~:
|
|
|
|
\begin{center}
|
|
\includegraphics[width=0.7\linewidth]{./img/ex3.png}
|
|
\end{center}
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Configurer l'adresse IPv6 du routeur R2 statiquement.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
R2(config-if)# ipv6 address 2001:2:3:4::2/64
|
|
\end{lstlisting}
|
|
|
|
\item Activer le mode debug des messages Neighbor Discovery de IPv6 sur R1 et R2.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
R1# debug ipv6 nd
|
|
R2# debug ipv6 nd
|
|
\end{lstlisting}
|
|
|
|
\item Configurer maintenant R1 pour qu'il obtienne une adresse IPv6 automatiquement.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
R1(config)# int g0/0/0
|
|
R1(config-if)# no shut
|
|
R1(config-if)# ipv6 address autoconfig
|
|
\end{lstlisting}
|
|
|
|
\item Analyser les messages affichés.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: (GigabitEthernet0/0/0) IPv6 Opr Disabled
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: Finished with ND context on (GigabitEthernet0/0/0) [6]
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: Free ND context on (GigabitEthernet0/0/0) [6]
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: (Null0) L3 going down
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: (Null0) L3 down
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: [default] Delete all routers on Null0
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: (Null0, FE80::1) Linklocal Down
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: (Null0) IPv6 Opr Dis
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: Finished with ND context on Null0[1]
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: Free ND context on Null0[1]
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: Module shutdown.
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: Shutdown OL prefix database
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: Cleanup OL prefix database
|
|
*Mar 1 00:18:09.337: ICMPv6-ND: Destroyed ND RA Desc Chunk pool
|
|
|
|
R1# show ipv6 int b
|
|
GigabitEthernet0/0/0 [up/up]
|
|
FE80::201:43FF:FEE4:2A01
|
|
\end{lstlisting}
|
|
|
|
\end{enumerate}
|
|
|
|
\section{Tunnel statique}
|
|
|
|
Soit la topologie suivante~:
|
|
|
|
\begin{center}
|
|
\includegraphics[width=0.7\linewidth]{./img/ex4.png}
|
|
\end{center}
|
|
|
|
Nous voulons connecter le routeur Futura avec le routeur Destiny en IPv6 sans pour autant configurer IPv6 sur Cryo.
|
|
Effectuer cette configuration en utilisant les tunnels statiques.
|
|
|
|
\paragraph{Étapes à suivre}
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Configuration des adresses IP
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura(config)# int g0/0/0
|
|
Futura(config-if)# ip address 192.168.12.1 255.255.255.0
|
|
Futura(config-if)# no shutdown
|
|
Futura(config)# int loopback 0
|
|
Futura(config-if)# ipv6 address 2001::1/128
|
|
Futura(config-if)# no shutdown
|
|
|
|
Cryo(config)# int g0/0/0
|
|
Cryo(config-if)# ip address 192.168.12.2 255.255.255.0
|
|
Cryo(config-if)# no shutdown
|
|
Cryo(config-if)# int g0/0/1
|
|
Cryo(config-if)# ip address 192.168.23.2 255.255.255.0
|
|
Cryo(config-if)# no shutdown
|
|
|
|
Destiny(config)# int g0/0/0
|
|
Destiny(config-if)# ip address 192.168.23.3 255.255.255.0
|
|
Destiny(config-if)# no shutdown
|
|
Destiny(config)# int loopback 0
|
|
Destiny(config-if)# ipv6 address 2001::3/128
|
|
Destiny(config-if)# no shutdown
|
|
\end{lstlisting}
|
|
|
|
\item Configuration du routage IPv4 et création des loopback IPv4 pour la stabilité des tunnels.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura(config)# int loopback 0
|
|
Futura(config-int)# ip address 1.1.1.1 255.255.255.0
|
|
Futura(config-int)# exit
|
|
Futura(config)# router eigrp 123
|
|
Futura(config-router)# no auto-summary
|
|
Futura(config-router)# network 192.168.12.0
|
|
Futura(config-router)# network 1.1.1.0
|
|
|
|
Cryo(config)# int loopback 0
|
|
Cryo(config-int)# ip address 2.2.2.2 255.255.255.0
|
|
Cryo(config-int)# exit
|
|
Cryo(config)# router eigrp 123
|
|
Cryo(config-router)# no auto-summary
|
|
Cryo(config-router)# network 192.168.12.0
|
|
Cryo(config-router)# network 192.168.23.0
|
|
Cryo(config-router)# network 2.2.2.0
|
|
|
|
Destiny(config)# int loopback 0
|
|
Destiny(config-int)# ip address 3.3.3.3 255.255.255.0
|
|
Destiny(config-int)# exit
|
|
Destiny(config)# router eigrp 123
|
|
Destiny(config-router)# no auto-summary
|
|
Destiny(config-router)# network 192.168.23.0
|
|
Destiny(config-router)# network 3.3.3.0
|
|
\end{lstlisting}
|
|
|
|
\item Créer les interfaces tunnel.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura(config)# int tunnel 0
|
|
Futura(config-int)# tunnel source loopback 0
|
|
Futura(config-int)# tunnel destination 3.3.3.3
|
|
Futura(config-int)# tunnel mode ipv6ip
|
|
|
|
Destiny(config)# int tunnel 0
|
|
Destiny(config-int)# tunnel source loopback 0
|
|
Destiny(config-int)# tunnel destination 1.1.1.1
|
|
Destiny(config-int)# tunnel mode ipv6ip
|
|
\end{lstlisting}
|
|
|
|
\item Vérification de l'établissement du tunnel~:
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura# show interfaces tunnel 0
|
|
Tunnel0 is up, line protocol is up (connected)
|
|
Destiny# show interfaces tunnel 0
|
|
Tunnel0 is up, line protocol is up (connected)
|
|
\end{lstlisting}
|
|
|
|
\item Activation du routage IPv6 sur \texttt{loopback 0} et \texttt{tunnel 0} sur Futura et Destiny.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura(config)# ipv6 unicast-routing
|
|
Futura(config)# ipv6 router rip RIPNG
|
|
Futura(config-rtr)# exit
|
|
Futura(config)# int loopback 0
|
|
Futura(config-if)# ipv6 rip RIPNG enable
|
|
Futura(config-if)# exit
|
|
Futura(config)# int tunnel 0
|
|
Futura(config-if)# ipv6 enable
|
|
Futura(config-if)# ipv6 rip RIPNG enable
|
|
|
|
Destiny(config)# ipv6 unicast-routing
|
|
Destiny(config)# ipv6 router rip RIPNG
|
|
Destiny(config-rtr)# exit
|
|
Destiny(config)# int loopback 0
|
|
Destiny(config-if)# ipv6 rip RIPNG enable
|
|
Destiny(config-if)# exit
|
|
Destiny(config)# int tunnel 0
|
|
Destiny(config-if)# ipv6 enable
|
|
Destiny(config-if)# ipv6 rip RIPNG enable
|
|
\end{lstlisting}
|
|
|
|
\item Vérification de la route~: la route IPv6 vers 2001::3 doit apparaître.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura# show ipv6 route
|
|
R 2001::3/128 [120/2]
|
|
via FE80::2D0:58FF:FEE1:40E1, Tunnel0
|
|
\end{lstlisting}
|
|
|
|
\item Faire un ping à partir de Futura, conclusion.
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura#ping 2001::3
|
|
Type escape sequence to abort.
|
|
Sending 5, 100-byte ICMP Echos to 2001::3, timeout is 2 seconds:
|
|
!!!!!
|
|
Success rate is 100 percent (5/5), round-trip min/avg/max = 0/0/0 ms
|
|
\end{lstlisting}
|
|
|
|
\emph{Le succès du ping montre une connexion en IPv6 entre Futura et Destiny.}
|
|
\emph{Comme aucun cable ne les relie, cette connexion passe forcément par Cryo, qui n'est configuré qu'en IPv4.}
|
|
|
|
\emph{Un premier routage IPv4 a été fait grâce à EIGRP pour que Futura et Destiny puissent se joindre en IPv4.}
|
|
\emph{Ensuite, un tunnel IPv6 $\rightarrow$ IPv4 a été monté, sur lequel a été déployé un routage IPv6 avec RIPNG\@.}
|
|
|
|
\emph{Ceci permet à Futura de router les paquets à destination de l'adresse IPv6 de Destiny par le tunnel.}
|
|
\emph{Grâce à ce tunnel, Cryo peut router ces paquets sans avoir pour autant implémenté IPv6.}
|
|
|
|
\end{enumerate}
|
|
|
|
\section{Tunnel dynamique}
|
|
|
|
Cette technique est applée dynamique parce que la détermination des adresses IPv4 de la destination du tunnel se fait dynamiquement.
|
|
L'inconvénient est que cette technique ne supporte pas les protocoles de routage internes.
|
|
Nous serons donc obligés d'utiliser soit le routage statique, soit BGP\@.
|
|
|
|
Il existe deux techniques~: \texttt{automatic 6to4} et \texttt{ISATAP}.
|
|
Le préfixe 2002::/16 est réservé à \texttt{6to4}.
|
|
Voici comment les adresses sont constituées~:
|
|
|
|
\begin{center}
|
|
\includegraphics[width=0.7\linewidth]{./img/6to4-prefix.png}
|
|
\end{center}
|
|
|
|
Une façon de les calculer automatiquement est la suivante~:
|
|
|
|
\begin{lstlisting}[gobble=4]
|
|
Destiny(config)# ipv6 general-prefix MYPREFIX 6to4 f0/0
|
|
Destiny# show ipv6 general-prefix
|
|
IPv6 Prefix MYPREFIX, acquired via 6to4
|
|
2002:c0a8:1703::/48
|
|
\end{lstlisting}
|
|
|
|
\begin{enumerate}
|
|
|
|
\item Calcul des préfixes IPv6~:
|
|
|
|
\emph{Sur les routeurs PacketTracer, le calcul automatique 6to4 n'existe pas.}
|
|
\emph{On va donc entrer les adresses en dur~:}
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura(config)# no int tunnel 0
|
|
Futura(config)# ipv6 general-prefix MYPREFIX 2002:c0a8:c01::/48
|
|
Destiny(config)# no int tunnel 0
|
|
Destiny(config)# ipv6 general-prefix MYPREFIX 2002:c0a8:1703::/48
|
|
\end{lstlisting}
|
|
|
|
\item Création du tunnel~:
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura(config)# int tunnel 0
|
|
Futura(config-if)# ipv6 address 2002:c0a8:c01::1/64
|
|
Futura(config-if)# tunnel source g0/0/0
|
|
Futura(config-if)# tunnel mode ipv6ip
|
|
|
|
Destiny(config)# int tunnel 0
|
|
Destiny(config-if)# ipv6 address 2002:c0a8:1703::3/64
|
|
Destiny(config-if)# tunnel source g0/0/0
|
|
Destiny(config-if)# tunnel mode ipv6ip
|
|
\end{lstlisting}
|
|
|
|
\item Configuration du routage statique~:
|
|
|
|
\begin{lstlisting}[gobble=12]
|
|
Futura(config)# ipv6 route 2001::3/128 2002:c0a8:1703::3
|
|
Futura(config)# ipv6 route 2002::/16 tunnel 0
|
|
Destiny(config)# ipv6 route 2001::1/128 2002:c0a8:c01::3
|
|
Destiny(config)# ipv6 route 2002::/16 tunnel 0
|
|
\end{lstlisting}
|
|
|
|
\emph{L'interface \texttt{tunnel 0} n'est pas proposée par PacketTracer.}
|
|
\emph{On ne va pas avoir l'équipement nécessaire pour continuer cet exercice.}
|
|
|
|
\end{enumerate}
|
|
|
|
|
|
\end{document}
|