<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>4. Environnement de test</title> <link rel="stylesheet" href="style.css" type="text/css"> <meta name="generator" content="DocBook XSL Stylesheets V1.66.1"> <link rel="start" href="index.html" title="Guide pratique de la mobilité IPv6 avec Linux"> <link rel="up" href="index.html" title="Guide pratique de la mobilité IPv6 avec Linux"> <link rel="prev" href="ar01s03.html" title="3. La mobilité IPv6 avec Linux"> <link rel="next" href="ar01s05.html" title="5. Quelques tests"> </head> <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"> <div class="navheader"> <table width="100%" summary="Navigation header"> <tr><th colspan="3" align="center">4. Environnement de test</th></tr> <tr> <td width="20%" align="left"> <a accesskey="p" href="ar01s03.html">Précédent</a> </td> <th width="60%" align="center"> </th> <td width="20%" align="right"> <a accesskey="n" href="ar01s05.html">Suivant</a> </td> </tr> </table> <hr> </div> <div class="sect1" lang="fr"> <div class="titlepage"><div><div><h2 class="title" style="clear: both"> <a name="testbed"></a>4. Environnement de test</h2></div></div></div> <p> On dispose à présent d'un noyau opérationnel modifié pour MIPL, d'utilitaires et de scripts de démarrage automatique. Si une anomalie se produit, il est conseillé de reprendre les sections précédentes très attentivement. </p> <div class="sect2" lang="fr"> <div class="titlepage"><div><div><h3 class="title"> <a name="testcase"></a>4.1. Scénario de test</h3></div></div></div> <p> Les adresses employées pour le scénario de test sont de type site-local. On peut également employer des adresses globales mais il faut noter que <span class="emphasis"><em>les adresses locales ne fonctionneront pas</em></span>. L'environnement de test comprend quatre stations comme indiqué par le schéma du <a href="ar01s04.html#mipv6testbed">test de mobilité IPv6</a>. </p> <div class="orderedlist"><ol type="1"> <li><p> <span class="emphasis"><em>HA — station d'accueil :</em></span> la station d'accueil se trouve dans le réseau domestique à l'adresse <b class="userinput"><tt>fec0:106:2700::2</tt></b>. Elle comprend une interface sans fil. </p></li> <li><p> <span class="emphasis"><em>MN — station mobile :</em></span> l'adresse de la station mobile dans le réseau domestique est <b class="userinput"><tt>fec0:106:2700::4</tt></b>. Quand la station mobile se déplace, elle engendre une nouvelle « <span class="quote">adresse temporaire primaire</span> ». </p></li> <li><p> <span class="emphasis"><em>R — routeur :</em></span> il s'agit du routeur entre le réseau domestique et Internet. Il inclut une interface réseau sans fil d'adresse <b class="userinput"><tt>fec0:106:2700::1</tt></b> et une interface filaire d'adresse <b class="userinput"><tt>fec0:106:2300::2</tt></b>. </p></li> <li><p> <span class="emphasis"><em>AR — routeur d'accès :</em></span> le lien réseau entre AR et R constitue l'« <span class="quote">internet</span> » du banc de test. Dans le cadre du test, il se limite à deux adresses IP aux extrémités d'un câble croisé mais il peut s'agir de n'importe quel type de réseau. Le routeur d'accès est équipé de deux interfaces. Une interface filaire se trouve à l'adresse <b class="userinput"><tt>fec0:106:2300::1</tt></b> tandis qu'une interface sans fil occupe l'adresse <b class="userinput"><tt>fec0:106:1100::1</tt></b>. </p></li> </ol></div> <div class="mediaobject" align="center"> <a name="mipv6testbed"></a><table border="0" summary="manufactured viewport for HTML img" cellspacing="0" cellpadding="0" width="550"><tr><td align="center"><img src="images/Mobile-IPv6-HOWTO/mipv6-testbed.png" align="middle" width="550" alt="Environnement de test de mobilité IPv6"></td></tr></table> <div class="caption"><p>Environnement de test de mobilité IPv6</p></div> </div> </div> <div class="sect2" lang="fr"> <div class="titlepage"><div><div><h3 class="title"> <a name="stepbystep"></a>4.2. Description des étapes de la configuration</h3></div></div></div> <div class="sect3" lang="fr"> <div class="titlepage"><div><div><h4 class="title"> <a name="fullyipv6"></a>4.2.1. Mise en place d'un réseau IPv6 fonctionnel</h4></div></div></div> <p> Avant de procéder au test de la mobilité IPv6, un réseau IPv6 fonctionnel est nécessaire. Toutes les stations doivent être en mesure de s'atteindre les unes les autres au moyen de l'utilitaire ping. <span class="emphasis"><em>Le point précédent est fondamental.</em></span> Ainsi, lorsqu'AR n'est pas capable de joindre HA, il n'y a pas de mise à jour de raccordement. </p> <p> De brèves instructions pour élaborer un réseau IPv6 sont présentées ci-dessous. L'excellent <a href="http://www.traduc.org/docs/howto/lecture/Linux+IPv6-HOWTO.html" target="_top">Guide pratique IPv6 pour Linux</a> de Peter Bieringer contient davantage d'informations pour effectuer cette tâche. </p> <p> Le chiffrement a été désactivé pour simplifier la présentation mais il est conseillé de <span class="emphasis"><em>toujours</em></span> y avoir recours dans le cas de réseaux sans fil. </p> <p> <span class="emphasis"><em> Il convient de noter que des réseaux sans fil distincts relèvent de ESSID différents. </em></span> </p> <div class="orderedlist"><ol type="1"> <li> <p> <span class="emphasis"><em>MN :</em></span> la station mobile est équipée d'une interface sans fil. Le renvoi doit être inhibé mais il faut activer autoconf et ra : </p> <pre class="screen"> # iwconfig eth0 mode ad-hoc essid homenet enc off # ifconfig eth0 inet6 add fec0:10:2700::4/64 # echo "0" > /proc/sys/net/ipv6/conf/eth0/forwarding # echo "1" > /proc/sys/net/ipv6/conf/eth0/autoconf # echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_ra # echo "1" > /proc/sys/net/ipv6/conf/eth0/accept_redirects # /etc/init.d/mobile-ip6 start </pre> </li> <li> <p> <span class="emphasis"><em>HA :</em></span> la station d'accueil comprend une interface sans fil. Le renvoi doit être activé puisque des trames reçues depuis l'interface physique sont transmises via l'interface virtuelle de tunnel. <span class="emphasis"><em> Remarque : une route par défaut est nécessaire sans quoi le HA aura des difficultés pour contacter la station mobile MN dans le réseau distant. Une solution consiste à employer HA en tant que routeur du réseau domestique. </em></span> </p> <pre class="screen"> # iwconfig eth0 mode ad-hoc essid homenet enc off # ifconfig eth0 inet6 add fec0:106:2700::2/64 # echo "1" > /proc/sys/net/ipv6/conf/eth0/forwarding # echo "0" > /proc/sys/net/ipv6/conf/eth0/autoconf # echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_ra # echo "0" > /proc/sys/net/ipv6/conf/eth0/accept_redirects # ip route add ::/0 via fec0:106:2700::1 # /etc/init.d/mobile-ip6 start </pre> </li> <li> <p> <span class="emphasis"><em>R :</em></span> le routeur domestique comprend deux interfaces, une sans fil et une filaire. Le renvoi doit être activé dans le routeur domestique. </p> <pre class="screen"> # ifconfig eth0 inet6 add fec0:106:2300::2/64 # iwconfig eth1 mode ad-hoc essid homenet enc off # ifconfig eth1 inet6 add fec0:106:2700::1/64 # echo "1" > /proc/sys/net/ipv6/conf/all/forwarding # echo "0" > /proc/sys/net/ipv6/conf/all/autoconf # echo "0" > /proc/sys/net/ipv6/conf/all/accept_ra # echo "0" > /proc/sys/net/ipv6/conf/all/accept_redirects # ip route add fec0:106:1100::/64 via fec0:106:2300::1 </pre> </li> <li> <p> <span class="emphasis"><em>AR :</em></span> le routeur d'accès qui appartient à un réseau distant comprend également deux interfaces (filaire et sans fil). Là encore, le renvoi des trames doit être activé. </p> <pre class="screen"> # ifconfig eth0 inet6 add fec0:106:2300::1/64 # iwconfig eth1 mode ad-hoc essid visitnet enc off # ifconfig eth1 inet6 add fec0:106:1100::1/64 # echo "1" > /proc/sys/net/ipv6/conf/all/forwarding # echo "0" > /proc/sys/net/ipv6/conf/all/autoconf # echo "0" > /proc/sys/net/ipv6/conf/all/accept_ra # echo "0" > /proc/sys/net/ipv6/conf/all/accept_redirects # ip route add fec0:106:2700::/64 via fec0:106:2300::2 </pre> </li> </ol></div> <p> L'utilitaire <span class="emphasis"><em>sysctl</em></span> évite d'avoir à accéder directement au système de fichiers sous proc. </p> <p> Remarque : l'environnement de test s'appuie sur des routes statiques. Tous les hôtes doivent à présent pouvoir se contacter avec ping. </p> </div> <div class="sect3" lang="fr"> <div class="titlepage"><div><div><h4 class="title"> <a name="confmipv6"></a>4.2.2. Configuration de la mobilité IPv6</h4></div></div></div> <p> La dernière étape de la configuration est relative à MIPL et s'effectue dans le fichier <tt class="filename">network-mip6.conf</tt>. Avec une distribution de type Debian ou Slackware, ce fichier se trouve dans le répertoire <tt class="filename">/etc</tt> tandis qu'avec une distribution RedHat, il figure dans le répertoire <tt class="filename">/etc/sysconfig</tt>. Le contenu du fichier est en principe assez parlant. </p> <div class="orderedlist"><ol type="1"> <li> <p> <span class="emphasis"><em>HA :</em></span> le fichier de configuration doit contenir les informations ci-dessous : </p> <pre class="screen"> # cat /etc/network-mip6.conf # Fichier de configuration de la station d'accueil FUNCTIONALITY=ha DEBUGLEVEL=1 MIN_TUNNEL_NR=1 MAX_TUNNEL_NR=5 TUNNEL_SITELOCAL=yes </pre> </li> <li> <p> <span class="emphasis"><em>MN :</em></span> le fichier de configuration doit contenir les informations ci-dessous : </p> <pre class="screen"> # cat /etc/network-mip6.conf # Fichier de configuration de la station mobile FUNCTIONALITY=mn DEBUGLEVEL=1 TUNNEL_SITELOCAL=yes MIN_TUNNEL_NR=1 MAX_TUNNEL_NR=3 HOMEDEV=mip6mnha1 HOMEADDRESS=fec0:106:2700::4/64 # adresse d'origine de la station mobile HOMEAGENT=fec0:106:2700::2/64 # adresse de la station d'accueil </pre> </li> <li> <p> On active ensuite la mobilité IP : </p> <pre class="screen"> # /etc/init.d/mobile-ip6 start Starting Mobile IPv6 : OK </pre> </li> </ol></div> <p> On vérifie que le HA a démarré correctement au moyen de la commande <b class="userinput"><tt>ifconfig</tt></b>. Si le tunnel <tt class="varname">ip6tnl1</tt> apparaît, la mobilité IPv6 est active : </p> <pre class="screen"> # ifconfig eth1 Link encap:Ethernet HWaddr 00:02:2D:2D:DE:79 inet6 addr: fec0:106:2700::2/64 Scope:Site inet6 addr: fe80::202:2dff:fe2d:de79/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:618 errors:6 dropped:6 overruns:0 frame:6 TX packets:1485 errors:22 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:87914 (85.8 KiB) TX bytes:252596 (246.6 KiB) Interrupt:3 Base address:0x100 ip6tnl1 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 <a name="tunnel1"></a><img src="images/callouts/1.png" alt="1" border="0"> UP POINTOPOINT RUNNING NOARP MTU:1460 Metric:1 RX packets:6 errors:0 dropped:0 overruns:0 frame:0 TX packets:6 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:576 (576.0 b) TX bytes:624 (624.0 b) ip6tnl2 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 <a name="tunnel2"></a><img src="images/callouts/2.png" alt="2" border="0"> UP RUNNING NOARP MTU:1460 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:560 (560.0 b) TX bytes:560 (560.0 b) </pre> <div class="calloutlist"><table border="0" summary="Callout list"> <tr> <td width="5%" valign="top" align="left"> <a href="#tunnel1"><img src="images/callouts/1.png" alt="1" border="0"></a> </td> <td valign="top" align="left"><p>Le tunnel est actif et prêt à établir des connexions.</p></td> </tr> <tr> <td width="5%" valign="top" align="left"> <a href="#tunnel2"><img src="images/callouts/2.png" alt="2" border="0"></a> </td> <td valign="top" align="left"><p>Un autre tunnel actif.</p></td> </tr> </table></div> <p> Les modules mipv6 du noyau doivent également être chargés (MN) : </p> <pre class="screen"> # lsmod Module Size Used by Not tainted mip6_mn 59888 0 (unused) ipv6_tunnel 11448 1 [mip6_mn] mip6_base 40728 0 [mip6_mn] ipv6 179764 -1 [mip6_mn ipv6_tunnel mip6_base] ... </pre> </div> <div class="sect3" lang="fr"> <div class="titlepage"><div><div><h4 class="title"> <a name="ARradvd"></a>4.2.3. Configuration de radvd au niveau du routeur d'accès (AR)</h4></div></div></div> <p> Quand la station mobile arrive dans un nouveau réseau, elle configure une adresse lien-local avant de poursuivre. <a href="http://www.ietf.org/rfc/rfc2462.txt" target="_top">[RFC2462]</a> (IPv6 Stateless Address Autoconfiguration) décrit la phase suivante : </p> <div class="blockquote"><table border="0" width="100%" cellspacing="0" cellpadding="0" class="blockquote" summary="Block quote"> <tr> <td width="10%" valign="top"> </td> <td width="80%" valign="top"> <p> La phase suivante de l'autoconfiguration implique d'obtenir une annonce de routeur ou bien de déterminer qu'aucun routeur n'est disponible. Si des routeurs se manifestent, ils vont envoyer des annonces qui précisent le type d'autoconfiguration que le système hôte doit effectuer. En l'absence de routeur, une autoconfiguration à état connu est nécessaire. </p> <p> Les routeurs émettent périodiquement des annonces mais le délai d'attente entre annonces est en général bien supérieur à la durée qu'une station ne souhaite consacrer à son autoconfiguration. Pour recevoir rapidement une annonce, une station émet une ou plusieurs sollicitations à destination du groupe de multidiffusion (multicast) de l'ensemble des routeurs. </p> </td> <td width="10%" valign="top"> </td> </tr> <tr> <td width="10%" valign="top"> </td> <td colspan="2" align="right" valign="top">--<span class="attribution"> page 8 </span> </td> </tr> </table></div> <p> <a href="http://v6web.litech.org/radvd/" target="_top">radvd</a> intervient à ce moment là. </p> <p> <a href="http://www.ietf.org/rfc/rfc2462.txt" target="_top">[RFC2462]</a> fournit davantage de renseignements au sujet de l'autoconfiguration sans état des adresses IPv6. </p> <p> On configure radvd au niveau de l'interface sans fil d'AR. Le fichier <tt class="filename">radvd.conf</tt> doit contenir : </p> <pre class="screen"> # cat /etc/radvd.conf interface eth1 { AdvSendAdvert on; AdvIntervalOpt on; MinRtrAdvInterval 3; MaxRtrAdvInterval 10; AdvHomeAgentFlag off; prefix fec0:106:1100::/64 { AdvOnLink on; AdvAutonomous on; AdvRouterAddr on; }; }; </pre> <p>On démarre alors radvd :</p> <pre class="screen"> # /etc/init.d/radvd start </pre> <p> On peut à présent employer <b class="userinput"><tt>radvdump</tt></b> pour examiner les messages réellement envoyés par radvd : </p> <pre class="screen"> # radvdump Router advertisement from fe80::202:2dff:fe54:d1b2 (hoplimit 255) Received by interface eth1 # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump AdvCurHopLimit: 64 AdvManagedFlag: off AdvOtherConfigFlag: off AdvHomeAgentFlag: off AdvReachableTime: 0 AdvRetransTimer: 0 Prefix fec0:106:1100::/64 AdvValidLifetime: 2592000 AdvPreferredLifetime: 604800 AdvOnLink: on AdvAutonomous: on AdvRouterAddr: off AdvSourceLLAddress: 00 02 2D 54 D1 B2 </pre> <p> <span class="emphasis"><em> Remarque : le recours à radvd pour HA conjugué à l'activation d'« <span class="quote">autoconf</span> » (via proc) conduit à l'apparition d'une adresse IPv6 (superflue) générée automatiquement au niveau de MN en plus de son adresse statique. </em></span> </p> </div> <div class="sect3" lang="fr"> <div class="titlepage"><div><div><h4 class="title"> <a name="radvdar"></a>4.2.4. Configuration de radvd au niveau de la station d'accueil</h4></div></div></div> <p> Pour que la station mobile MN sache quand elle est de retour dans son réseau domestique, la station d'accueil HA doit également envoyer des annonces de routeurs. On active donc également RADVD au niveau de la station d'accueil. Le fichier <tt class="filename">/etc/radvd.conf</tt> doit contenir : </p> <pre class="screen"> # cat /etc/radvd.conf interface eth0 { AdvSendAdvert on; MaxRtrAdvInterval 3; MinRtrAdvInterval 1; AdvIntervalOpt off; AdvHomeAgentFlag on; HomeAgentLifetime 10000; HomeAgentPreference 20; AdvHomeAgentInfo on; prefix fec0:106:2700::2/64 { AdvRouterAddr on; AdvOnLink on; AdvAutonomous on; AdvPreferredLifetime 10000; AdvValidLifetime 12000; }; }; </pre> <p> De même que précédemment, <b class="userinput"><tt>radvdump</tt></b> permet de vérifier que des messages sont périodiquement envoyés par radvd : </p> <pre class="screen"> # radvdump Router advertisement from fe80::202:2dff:fe54:d11e (hoplimit 255) Received by interface eth0 # Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump AdvCurHopLimit: 64 AdvManagedFlag: off AdvOtherConfigFlag: off AdvHomeAgentFlag: on AdvReachableTime: 0 AdvRetransTimer: 0 Prefix fec0:106:2700::2/64 AdvValidLifetime: 12000 AdvPreferredLifetime: 10000 AdvOnLink: on AdvAutonomous: on AdvRouterAddr: on AdvSourceLLAddress: 00 02 2D 54 D1 1E AdvHomeAgentInfo: HomeAgentPreference: 20 HomeAgentLifetime: 1000 </pre> <pre class="screen"> # ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:90:7D:F3:03:1A inet6 addr: fec0:106:2700:0:290:7dff:fef3:31a/64 Scope:Site <a name="newaddress"></a><img src="images/callouts/1.png" alt="1" border="0"> inet6 addr: fec0:106:2700::4/64 Scope:Site <a name="staticadr"></a><img src="images/callouts/2.png" alt="2" border="0"> inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link <a name="linkaddrs"></a><img src="images/callouts/3.png" alt="3" border="0"> UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:513 errors:89 dropped:89 overruns:0 frame:85 TX packets:140 errors:41 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:56084 (54.7 Kb) TX bytes:19212 (18.7 Kb) Interrupt:3 Base address:0x100 </pre> <div class="calloutlist"><table border="0" summary="Callout list"> <tr> <td width="5%" valign="top" align="left"> <a href="#newaddress"><img src="images/callouts/1.png" alt="1" border="0"></a> </td> <td valign="top" align="left"><p> Une nouvelle adresse autogénérée (superflue). Comme <b class="userinput"><tt>autoconf</tt></b> est activé par le positionnement de <b class="userinput"><tt>/proc/sys/net/ipv6/conf/eth0/autoconf</tt></b> à <b class="userinput"><tt>1</tt></b>, la station mobile MN génère une nouvelle adresse avec le préfixe de la station d'accueil HA et sa propre adresse MAC. L'auteur ne connaît pas de méthode pour éviter l'apparition d'une telle adresse. </p></td> </tr> <tr> <td width="5%" valign="top" align="left"> <a href="#staticadr"><img src="images/callouts/2.png" alt="2" border="0"></a> </td> <td valign="top" align="left"><p>L'adresse statique IPv6 d'origine.</p></td> </tr> <tr> <td width="5%" valign="top" align="left"> <a href="#linkaddrs"><img src="images/callouts/3.png" alt="3" border="0"></a> </td> <td valign="top" align="left"><p>L'adresse lien-local créée au démarrage.</p></td> </tr> </table></div> </div> </div> </div> <div class="navfooter"> <hr> <table width="100%" summary="Navigation footer"> <tr> <td width="40%" align="left"> <a accesskey="p" href="ar01s03.html">Précédent</a> </td> <td width="20%" align="center"><a accesskey="u" href="index.html">Niveau supérieur</a></td> <td width="40%" align="right"> <a accesskey="n" href="ar01s05.html">Suivant</a> </td> </tr> <tr> <td width="40%" align="left" valign="top">3. La mobilité IPv6 avec Linux </td> <td width="20%" align="center"><a accesskey="h" href="index.html">Sommaire</a></td> <td width="40%" align="right" valign="top"> 5. Quelques tests</td> </tr> </table> </div> </body> </html>