Après avoir préparé votre système pour IPv6, vous voudrez établir des communications en utilisant IPv6. Vous devriez d'abord apprendre comment examiner les paquets IPv6 avec un programme dit ”renifleur” (un sniffer). Cela est fortement conseillé, car cela peut aider à fournir très rapidement un diagnostic en cas de déboguage/dépannage.
Ce programme est normalement inclus dans le paquetage iputils. Il est conçu pour réaliser de simples tests du transport en émettant des paquets de requête d'écho (echo-request) ICMPv6 et en attendant les paquets de réponse en écho (echo-reply) ICMPv6.
Usage
# ping6 <hôteavecadresseipv6> # ping6 <adresseipv6> # ping6 [-I <périphérique>] <adresseipv6-lien-local> |
Exemple
# ping6 -c 1 ::1 PING ::1(::1) from ::1 : 56 data bytes 64 bytes from ::1: icmp_seq=0 hops=64 time=292 usec --- ::1 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip min/avg/max/mdev = 0.292/0.292/0.292/0.000 ms |
Info: ping6 a besoin d'un accès brut à la socket, il faut donc les permissions root. Par conséquent, s'il n'y a pas d'utilisateur root pouvant utiliser ping6, deux problèmes peuvent se poser ici:
ping6 n'est pas sur le chemin de l'utilisateur (probablement, car ping6 est généralement stocké dans /usr/sbin -> ajouter au chemin (pas vraiment recommandé)
ping6 ne s'exécute pas proprement, généralement, c'est qu'il y a des permissions root manquantes -> chmod u+s /usr/sbin/ping6
En spécifiant uniquement une adresse lien-local à ping IPv6, le noyau ne sait pas par quel périphérique (physique ou virtuel) il doit émettre le paquet - chaque périphérique a une adresse lien-local. Un essai aura pour résultat un message d'erreur:
# ping6 fe80::212:34ff:fe12:3456 connect: Invalid argument |
Dans ce cas vous devez en plus spécifier l'interface comme ci-dessous:
# ping6 -I eth0 -c 1 fe80::2e0:18ff:fe90:9205 PING fe80::212:23ff:fe12:3456(fe80::212:23ff:fe12:3456) from ¬ fe80::212:34ff:fe12:3478 eth0: 56 data bytes 64 bytes from fe80::212:23ff:fe12:3456: icmp_seq=0 hops=64 time=445 usec --- fe80::2e0:18ff:fe90:9205 ping statistics --- 1 packets transmitted, 1 packets received, 0% packet loss round-trip ¬ min/avg/max/mdev = 0.445/0.445/0.445/0.000 ms |
Un mécanisme intéressant pour détecter les hôtes IPv6 actifs sur un lien est de lancer ping6 sur l'adresse multicast lien-local tous-noeuds (all-node):
# ping6 -I eth0 ff02::1 PING ff02::1(ff02::1) from fe80:::2ab:cdff:feef:012356 eth0: 56 data bytes 64 bytes from ::1: icmp_seq=1 ttl=64 time=0.104 ms 64 bytes from fe80::212:34ff:fe12:3450: icmp_seq=1 ttl=64 time=0.549 ms (DUP!) |
A la différence d'IPv4, où les réponses à un ping sur l'adresse de diffusion (broadcast) peuvent être rendues indisponibles, en IPv6, ce comportement ne peut pas être actuellement rendu indisponible, sauf par un pare-feu IPv6 local.
Ce programme est normalement inclus dans le paquetage iputils. C'est un programme similaire au traceroute d'IPv4. En voici un exemple:
# traceroute6 www.6bone.net traceroute to 6bone.net (3ffe:b00:c18:1::10) from 3ffe:ffff:0000:f101::2, 30 ¬ hops max, 16 byte packets 1 localipv6gateway (3ffe:ffff:0000:f101::1) 1.354 ms 1.566 ms 0.407 ms 2 swi6T1-T0.ipv6.switch.ch (3ffe:2000:0:400::1) 90.431 ms 91.956 ms 92.377 ms 3 3ffe:2000:0:1::132 (3ffe:2000:0:1::132) 118.945 ms 107.982 ms 114.557 ms 4 3ffe:c00:8023:2b::2 (3ffe:c00:8023:2b::2) 968.468 ms 993.392 ms 973.441 ms 5 3ffe:2e00:e:c::3 (3ffe:2e00:e:c::3) 507.784 ms 505.549 ms 508.928 ms 6 www.6bone.net (3ffe:b00:c18:1::10) 1265.85 ms * 1304.74 ms |
Note: à la différence de certaines versions contemporaines du traceroute d'IPv4, qui peuvent utiliser les paquets de requête d'écho ICMPv4 aussi bien que les paquets UDP (défaut), l'actuel traceroute IPv6 ne peut qu'émettre des paquets UDP. Comme vous le savez peut-être, les paquets de requête d'écho ICMP sont mieux acceptés par les pare-feu ou les ACL sur les routeurs intermédiaires que les paquets UDP.
Ce programme est normalement inclus dans le paquetage iputils. C'est un programme comme traceroute6, il trace le chemin vers une destination donnée, découvrant la MTU le long de ce chemin. En voici un exemple:
# tracepath6 www.6bone.net 1?: [LOCALHOST] pmtu 1480 1: 3ffe:401::2c0:33ff:fe02:14 150.705ms 2: 3ffe:b00:c18::5 267.864ms 3: 3ffe:b00:c18::5 asymm 2 266.145ms pmtu 1280 3: 3ffe:3900:5::2 asymm 4 346.632ms 4: 3ffe:28ff:ffff:4::3 asymm 5 365.965ms 5: 3ffe:1cff:0:ee::2 asymm 4 534.704ms 6: 3ffe:3800::1:1 asymm 4 578.126ms !N Resume: pmtu 1280 |
Sur Linux, tcpdump est l'outil majeur pour la capture de paquets. Vous allez trouver ci-dessous quelques exemples. Le support IPv6 est normalement intégré aux éditions actuelles de la version 3.6.
tcpdump utilise des expressions pour filtrer les paquets, minimisant le bruit:
icmp6: filtre le trafic ICMPv6 natif
ip6: filtre le trafic IPv6 natif (incluant ICMPv6)
proto ipv6: filtre le trafic IPv6-in-IPv4 tunnelé
not port ssh: supprime l'affichage des paquets SSH, pour lancer tcpdump à partir d'une session distante SSH
Certaines options en ligne de commande sont très utiles pour capter et afficher plus d'information concernant les paquets, essentiellement intéressant pour approfondir l'information des paquets ICMPv6:
“-s 512”: augmente la quantité d'information capturée pour un paquet à 512 octets
“-vv”: sortie vraiment verbeuse
“-n”: ne pas résoudre les adresses en noms, utile si la résolution inversée ne fonctionne pas proprement
# tcpdump -t -n -i eth0 -s 512 -vv ip6 or proto ipv6 tcpdump: listening on eth0 3ffe:ffff:100:f101:2e0:18ff:fe90:9205 > 3ffe:ffff:100:f101::1: icmp6: echo ¬ request (len 64, hlim 64) 3ffe:ffff:100:f101::1 > 3ffe:ffff:100:f101:2e0:18ff:fe90:9205: icmp6: echo ¬ reply (len 64, hlim 64) |
1.2.3.4 et 5.6.7.8 sont les extrémités du tunnel (toutes les adresses sont des exemples)
# tcpdump -t -n -i ppp0 -s 512 -vv ip6 or proto ipv6 tcpdump: listening on ppp0 1.2.3.4 > 5.6.7.8: 2002:ffff:f5f8::1 > 3ffe:ffff:100::1: icmp6: echo request ¬ (len 64, hlim 64) (DF) (ttl 64, id 0, len 124) 5.6.7.8 > 1.2.3.4: 3ffe:ffff:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len ¬ 64, hlim 61) (ttl 23, id 29887, len 124) 1.2.3.4 > 5.6.7.8: 2002:ffff:f5f8::1 > 3ffe:ffff:100::1: icmp6: echo request ¬ (len 64, hlim 64) (DF) (ttl 64, id 0, len 124) 5.6.7.8 > 1.2.3.4: 3ffe:ffff:100::1 > 2002:ffff:f5f8::1: icmp6: echo reply (len ¬ 64, hlim 61) (ttl 23, id 29919, len 124) |
Précédent | Sommaire | Suivant |
Les outils de configuration réseau prêts pour IPv6 | Niveau supérieur | Les programmes prêts pour IPv6 |