| Accueil | Format | Adresses | B.A.-BA | Liens | |||||||||

Les Titres:
.Adresses
IPv6.
Matériel et schéma du réseau
Principe
1- Contrôler si IPv6 est déjà chargé
2- Vérifier si les modules IPv6 sont présents
3- Charger les modules IPv6
4- Vérifier si les modules IPv6 sont chargés
5- Contrôler par dmesg
6- Visualiser les adresses IPv6 de l'interface réseau
7- Vérifier le fichier protocols
8- Renseigner le fichier hosts
9- Tester la machine distante
10- Tester sa machine en local
11- Analyse du ping6 avec tcpdump
Comment découvrir IPv6
sur votre Tux, si ce n'est par la pratique ?
Cette page vous propose une prise en main des balbutiements d'IPv6. N'ayez
crainte, vous ne casserez rien, car vous ne chargerez que des modules, vous
évitant ainsi une recompilation du noyau.
Le réseau est simple (voir schéma), il est composé deux machines. Afin de
tester IPv6, un ping est réalisé pour voir si la station distante est joignable.
Matériel utilisé:
Deux PC GNU/Linux raccordés par un hub:
Un PC GNU/Linux nommé "mdk", la distribution utilisée est une Mandrake 9.0 .
Un second PC GNU/Linux nommé "knoppix", la distribution utilisée est Knoppix 3.1 .
Schéma:



Nous allons procéder par plusieurs étapes mais avant tout, il est supposé que les deux machines fonctionnent en IPv4.
1- Contrôler si IPv6 est déjà chargé. (mdk & knoppix)
2- Vérifier si les modules IPv6 sont présents. (mdk & knoppix)
3- Charger les modules IPv6. (mdk & knoppix)
4- Vérifier si les modules IPv6 sont chargés. (mdk & knoppix)
5- Contrôler par dmesg. (mdk)
6- Visualiser les adresses IPv6 de l'interface réseau.
7- Vérifier le fichier protocols. (mdk & knoppix)
8- Renseigner le fichier hosts. (mdk)
9- Tester la machine distante (ping mdk -> knoppix)
10- Tester sa machine en local (ping mdk -> localhost)
11- Analyse du ping6 avec tcpdump. (mdk)
Ci-dessous, ne figurent que les commandes passées sur la machine "mdk". Bien évidemment, les mêmes commandes d'installation doivent être saisies sur les deux machines, la seconde machine étant "knoppix".


1- Contrôler si IPv6 est déjà chargé.
[root@mdk nono]# dmesg |grep IPv6
[root@mdk nono]#
Ici, ce n'est pas le cas sinon nous aurions eu deux lignes mentionnant IPv6.
2- Vérifier la présence des modules ipv6 chargeables:
Normalement sur les distributions
récentes de GNU/Linux, les paquetages IPv6 sont livrés. Puisqu'ici il ne
s'agit que d'éffectuer un test, nous allons simplement installer IPv6 en
modules. Cela nous évite une compilation du noyau.
Commençons par vérifier la présence de ces modules.
[root@mdk nono]# modprobe -l |grep ipv6
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/ipv6.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6_tables.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6t_LOG.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6t_MARK.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6t_limit.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6t_mac.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6t_mark.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6t_multiport.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6t_owner.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6table_filter.o.gz
/lib/modules/2.4.19-16mdk/kernel/net/ipv6/netfilter/ip6table_mangle.o.gz
[root@mdk nono]#


[root@mdk nono]# modprobe ipv6
[root@mdk nono]#
4- Vérifier si les modules sont chargés:
[root@mdk nono]# lsmod |grep ipv6
ipv6 140692 -1
[root@mdk nono]#
5- Contrôler la présence des deux premières lignes dans dmesg:
[root@mdk nono]# dmesg |grep IPv6
IPv6 v0.8 for NET4.0
IPv6 over IPv4 tunneling driver
eth0: no IPv6 routers present
[root@mdk nono]#
La troisième ligne "eth0: no IPv6 routers present" est normale si vous ne disposez par de routeur IPv6 sur votre réseau. La configuration automatique pour obtenir le préfixe du réseau ne peut pas avoir lieu sans routeur IPv6.


6- Visualiser les adresses IPv6 de l'interface réseau:
Beaucoup
plus simple qu'en IPv4, l'adresse IPv6 de la machine est générée automatiquement
sans aucune intervention de votre part.
La commande ifconfig affiche les adresses d'nterface. La troisième ligne
donne l'adresse IP de la machine mdk et la douzième l'adresse de boucle.
Relevez l'adresse IPv6 (3ème ligne), et inscrivez là dans le fichier hosts
de la station knoppix.
Ensuite, faites un ifconfig sur knoppix, relevez son adresse IPv6 et inscrivez
là dans le fichier host de la machine mdk (voir la prochaine étape).
[root@mdk nono]# ifconfig -a
eth0 Link encap:Ethernet HWbabaprat 00:50:04:0E:17:93
inet babaprat:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 babaprat: fe80::250:4ff:fe0e:1793/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:736 errors:0 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:192014 (187.5 Kb) TX bytes:366 (366.0 b)
Interrupt:10 Base babapratess:0xdc00
lo Link encap:Local Loopback
inet babaprat:127.0.0.1 Mask:255.0.0.0>
inet6 babaprat: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:3025 errors:0 dropped:0 overruns:0 frame:0
TX packets:3025 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:529419 (517.0 Kb) TX bytes:529419 (517.0 Kb)
sit0 Link encap:IPv6-in-IPv4
NOARP MTU:1480 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)


7- Vérifier le fichier protocols:
De nouveaux protocoles ont été défini avec IPv6. C'est le
cas d'ICMPv6. Pour que notre IPv6 fonctionne il faut aussi l'incontournable
protocole ICMPv6. Sans lui, pas de sollicitation ni découverte des voisins
et donc pas de résolution d'adresse (IPv6 -> Mac) possible, et bien sûr
encore moins de ping6 (echo-requet/echo-reply).
Il faut par conséquent vérifier si ces nouveaux protocoles sont bien mentionnés
dans le fichier services et notamment la ligne concernant ICMPv6 (en rouge).
#hopopt 0 HOPOPT # hop-by-hop options for ipv6
ipv6 41 IPv6 # IPv6
ipv6-route 43 IPv6-Route # Routing Header for IPv6
ipv6-frag 44 IPv6-Frag # Fragment Header for IPv6
ipv6-crypt 50 IPv6-Crypt # Encryption Header for IPv6
ipv6-auth 51 IPv6-Auth # Authentication Header for IPv6
ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6
ipv6-nonxt 59 IPv6-NoNxt # No Next Header for IPv6
ipv6-opts 60 IPv6-Opts # Destination Options for IPv6


Il n'est
pas obligatoire de compléter le fichier hosts pour l'IPv6. D'ailleurs, la
distribution Mandrake ne renseigne nullement ce fichier, contrairement à
la distribution Knoppix. Toutefois dans les manuels de référence, il est
conseillé de le faire avec les valeurs ci-dessous.
La première ligne concerne l'adresse de loopback IPv4, et doit déjà être présente
dans votre fichier. N'y toucher pas si IPv4 fonctionne sur votre machine.
Rajoutez les six lignes suivantes et éventuellement des lignes supplémentaires
pour les machines distantes à joindre en prenant modèle sur la huitième ligne.
127.0.0.1 localhost.localdomain localhost
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
fe80::250:4ff:fe0e:1793 knoppix


9- Tester la station distante "knoppix":
[root@mdk nono]# ping6 -I eth0 knoppix
PING knoppix(knoppix) from fe80::200:e8ff:fe65:df9a eth0: 56 data bytes
64 bytes from knoppix: icmp_seq=1 ttl=64 time=0.699 ms
64 bytes from knoppix: icmp_seq=2 ttl=64 time=0.337 ms
64 bytes from knoppix: icmp_seq=3 ttl=64 time=0.333 ms
64 bytes from knoppix: icmp_seq=4 ttl=64 time=0.335 ms
64 bytes from knoppix: icmp_seq=5 ttl=64 time=0.334 ms
--- knoppix ping statistics ---
5 packets transmitted, 5 received, 0% loss, time 4009ms
rtt min/avg/max/mdev = 0.333/0.407/0.699/0.147 ms
[root@mdk nono]#
ou
[root@mdk nono]# ping6 -I eth0 fe80::250:4ff:fe0e:1793
PING fe80::250:4ff:fe0e:1793(fe80::250:4ff:fe0e:1793) from fe80::200:e8ff:fe65:df9a eth0: 56 data bytes
64 bytes from fe80::250:4ff:fe0e:1793: icmp_seq=1 ttl=64 time=0.678 ms
64 bytes from fe80::250:4ff:fe0e:1793: icmp_seq=2 ttl=64 time=0.334 ms
64 bytes from fe80::250:4ff:fe0e:1793: icmp_seq=3 ttl=64 time=0.333 ms
--- fe80::250:4ff:fe0e:1793 ping statistics ---
3 packets transmitted, 3 received, 0% loss, time 2015ms
rtt min/avg/max/mdev = 0.333/0.448/0.678/0.163 ms
[root@mdk nono]#


10- Tester la machine en local "mdk":
Par adresse:
[root@mdk package]# ping6 ::1
PING ::1(::1) from ::1 : 56 data bytes
64 bytes from ::1: icmp_seq=1 ttl=64 time=0.057 ms
64 bytes from ::1: icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from ::1: icmp_seq=3 ttl=64 time=0.049 ms
--- ::1 ping statistics ---
3 packets transmitted, 3 received, 0% loss, time 2008ms
rtt min/avg/max/mdev = 0.049/0.052/0.057/0.009 ms
[root@mdk package]#
Le même résultat peut être obtenu avec la commande:
[root@mdk nono]# ping6 -I eth0 fe80::200:e8ff:fe65:df9a
Par nom:
[root@mdk package]# ping6 -I eth0 ip6-localhost
PING ip6-localhost(ip6-localhost) from ::1 eth0: 56 data bytes
64 bytes from ip6-localhost: icmp_seq=1 ttl=64 time=0.062 ms
64 bytes from ip6-localhost: icmp_seq=2 ttl=64 time=0.060 ms
--- ip6-localhost ping statistics ---
2 packets transmitted, 2 received, 0% loss, time 1000ms
rtt min/avg/max/mdev = 0.060/0.061/0.062/0.001 ms
[root@mdk package]#
Le même résultat peut être obtenu avec la commande:
[root@mdk package]# ping6 ip6-loopback


11- Analyse du ping6 par tcpdump:
Un petit peu d'analyse pour les curieux !
Avant de lancer le ping6 de la station mdk vers knoppix, lancez dans une
console l'analyseur de réseau tcpdump avec la commande:
[root@mdk nono]# tcpdump -i eth0 -nXe
Puis, dans une autre console, lancez le ping6 par la
commande suivante (nous l'avons déjà vu):
[root@mdk package]# ping6 -I eth0 knoppix
PING knoppix(knoppix) from fe80::200:e8ff:fe65:df9a eth0: 56 data bytes
64 bytes from knoppix: icmp_seq=1 ttl=64 time=0.678 ms
64 bytes from knoppix: icmp_seq=2 ttl=64 time=0.341 ms
Stoppez le ping6 par la combinaison de touches [Contrôle
C].
Revenir à tcpdump et l'arrêter aussi par la combinaison de touches [Contrôle
C].
tcpdumpavec l'option -n permet de ne pas avoir les conversions d'adresse IPv6 en nom de machine. L'option X permet l'affichage ASCII et l'option e permet l'affichage de l'en-tête de la trame ethernet (@macD, @macS, FT).
Le résultat de l'analyse est le suivant, quatre trame ont été émises (voir
schéma) suite à la commande ping.

[root@mdk nono]# tcpdump -i eth0 -nXe
tcpdump: listening on eth0
08:44:39.720942 0:0:e8:65:df:9a 33:33:ff:e:17:93 86dd 86: fe80::200:e8ff:fe65:df9a > ff02::1:ff0e:1793: icmp6: neighbor sol: who has fe80::250:4ff:fe0e:1793
0x0000 6000 0000 0020 3aff fe80 0000 0000 0000`.....:.........
0x0010 0200 e8ff fe65 df9a ff02 0000 0000 0000.....e..........
0x0020 0000 0001 ff0e 1793 8700 b709 0000 0000 ................
0x0030 fe80 0000 0000 0000 0250 04ff fe0e 1793 .........P......
0x0040 0101 0000 e865 df9a.....e..
08:44:39.721468 0:50:4:e:17:93 0:0:e8:65:df:9a 86dd 86: fe80::250:4ff:fe0e:1793 > fe80::200:e8ff:fe65:df9a: icmp6: neighbor adv: tgt is fe80::250:4ff:fe0e:1793
0x0000 6000 0000 0020 3aff fe80 0000 0000 0000 `.....:.........
0x0010 0250 04ff fe0e 1793 fe80 0000 0000 0000 .P..............
0x0020 0200 e8ff fe65 df9a 8800 fb4c 6000 0000 .....e.....L`...
0x0030 fe80 0000 0000 0000 0250 04ff fe0e 1793 .........P......
0x0040 0201 0050 040e 1793 ...P....
08:44:39.721514 0:0:e8:65:df:9a 0:50:4:e:17:93 86dd 118: fe80::200:e8ff:fe65:df9a > fe80::250:4ff:fe0e:1793: icmp6: echo request
0x0000 6000 0000 0040 3a40 fe80 0000 0000 0000 `....@:@........
0x0010 0200 e8ff fe65 df9a fe80 0000 0000 0000 .....e..........
0x0020 0250 04ff fe0e 1793 8000 a4ed 6839 0100 .P..........h9..
0x0030 6729 3a3e f7ff 0a00 0809 0a0b 0c0d 0e0f g):>............
0x0040 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f................
0x0050 2021 .!
08:44:39.721827 0:50:4:e:17:93 0:0:e8:65:df:9a 86dd 118: fe80::250:4ff:fe0e:1793 > fe80::200:e8ff:fe65:df9a: icmp6: echo reply
0x0000 6000 0000 0040 3a40 fe80 0000 0000 0000 `....@:@........
0x0010 0250 04ff fe0e 1793 fe80 0000 0000 0000 .P..............
0x0020 0200 e8ff fe65 df9a 8100 a3ed 6839 0100 .....e......h9..
0x0030 6729 3a3e f7ff 0a00 0809 0a0b 0c0d 0e0f g):>............
0x0040 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f................
0x0050 2021
