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.
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 les adresses locales ne fonctionneront pas. L'environnement de test comprend quatre stations comme indiqué par le schéma du test de mobilité IPv6.
HA — station d'accueil : la station d'accueil se trouve dans le réseau domestique à l'adresse fec0:106:2700::2. Elle comprend une interface sans fil.
MN — station mobile : l'adresse de la station mobile dans le réseau domestique est fec0:106:2700::4. Quand la station mobile se déplace, elle engendre une nouvelle « adresse temporaire primaire ».
R — routeur : il s'agit du routeur entre le réseau domestique et Internet. Il inclut une interface réseau sans fil d'adresse fec0:106:2700::1 et une interface filaire d'adresse fec0:106:2300::2.
AR — routeur d'accès : le lien réseau entre AR et R constitue l'« internet » 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 fec0:106:2300::1 tandis qu'une interface sans fil occupe l'adresse fec0:106:1100::1.
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. Le point précédent est fondamental. Ainsi, lorsqu'AR n'est pas capable de joindre HA, il n'y a pas de mise à jour de raccordement.
De brèves instructions pour élaborer un réseau IPv6 sont présentées ci-dessous. L'excellent Guide pratique IPv6 pour Linux de Peter Bieringer contient davantage d'informations pour effectuer cette tâche.
Le chiffrement a été désactivé pour simplifier la présentation mais il est conseillé de toujours y avoir recours dans le cas de réseaux sans fil.
Il convient de noter que des réseaux sans fil distincts relèvent de ESSID différents.
MN : la station mobile est équipée d'une interface sans fil. Le renvoi doit être inhibé mais il faut activer autoconf et ra :
# 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
HA : 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. 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.
# 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
R : le routeur domestique comprend deux interfaces, une sans fil et une filaire. Le renvoi doit être activé dans le routeur domestique.
# 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
AR : 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é.
# 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
L'utilitaire sysctl évite d'avoir à accéder directement au système de fichiers sous proc.
Remarque : l'environnement de test s'appuie sur des routes statiques. Tous les hôtes doivent à présent pouvoir se contacter avec ping.
La dernière étape de la configuration est relative à MIPL et s'effectue dans le fichier network-mip6.conf. Avec une distribution de type Debian ou Slackware, ce fichier se trouve dans le répertoire /etc tandis qu'avec une distribution RedHat, il figure dans le répertoire /etc/sysconfig. Le contenu du fichier est en principe assez parlant.
HA : le fichier de configuration doit contenir les informations ci-dessous :
# 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
MN : le fichier de configuration doit contenir les informations ci-dessous :
# 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
On active ensuite la mobilité IP :
# /etc/init.d/mobile-ip6 start Starting Mobile IPv6 : OK
On vérifie que le HA a démarré correctement au moyen de la commande ifconfig. Si le tunnel ip6tnl1 apparaît, la mobilité IPv6 est active :
# 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-00UP 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
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)
Les modules mipv6 du noyau doivent également être chargés (MN) :
# 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] ...
Quand la station mobile arrive dans un nouveau réseau, elle configure une adresse lien-local avant de poursuivre. [RFC2462] (IPv6 Stateless Address Autoconfiguration) décrit la phase suivante :
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. 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. |
||
-- page 8 |
radvd intervient à ce moment là.
[RFC2462] fournit davantage de renseignements au sujet de l'autoconfiguration sans état des adresses IPv6.
On configure radvd au niveau de l'interface sans fil d'AR. Le fichier radvd.conf doit contenir :
# 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; }; };
On démarre alors radvd :
# /etc/init.d/radvd start
On peut à présent employer radvdump pour examiner les messages réellement envoyés par radvd :
# 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
Remarque : le recours à radvd pour HA conjugué à l'activation d'« autoconf » (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.
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 /etc/radvd.conf doit contenir :
# 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; }; };
De même que précédemment, radvdump permet de vérifier que des messages sont périodiquement envoyés par radvd :
# 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
# 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:Siteinet6 addr: fec0:106:2700::4/64 Scope:Site
inet6 addr: fe80::290:7dff:fef3:31a/64 Scope:Link
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