lundi 5 janvier 2009
Obtention d'une adresse IPv6 auprès du routeur
Par haypo, lundi 5 janvier 2009 à 19:44 :: Informatique
En jouant avec les règles de filtrage IPv4 et IPv6 de Netfilter, je perd régulièrement ma connectivité IPv6. J'ai supprimé mes règles de filtrage et lancé sudo tcpdump -p -i any -s 0 -w snif.pcap 'ip6'
pour observer quels paquets sont envoyés au routeur pour obtenir une adresse IPv6. Pour renouveller mon adresse IPv6, j'ai démonté (sudo ifconfig eth0 down
) puis remonté (sudo ifconfig eth0 up
) mon interface réseau.
Questions
En 1,5 secondes, Linux envoie 3 paquets ICMPv6 en multicast :
- (t=0,0 sec) Multicast Listener Report Message v2 (type 143)
- De :: vers ff02::16:
- Avec « Changed to exclude: ff02::1:ffab:79ed »
- Annonce au routeur qu'on écoute sur le canal multicast « ff02::16: »
- (t=0,5 sec) Neighbor solicitation (type 135)
- De :: vers ff02::1:ffab:79ed:
- Avec « Target: fe80::216:76ff:feab:79ed »
- Vérifie auprès des voisins que mon adresse de lien (fe80::216:76ff:feab:79ed) est unique : qu'elle n'est utilisée par aucun autre équipement
- (t=1,5 sec) Router solicitation (type 133)
- De fe80::216:76ff:feab:79ed vers ff02::2:
- Demande au routeur les informations sur le réseau IPv6
Réponse
Le routeur (dans mon cas, une Freebox) répond en 10 ms par un message ICMPv6 « Router advertisement » (type 134), de fe80::207:cbff:fe3c:edd8 vers ff02::1. Les informations les plus importantes sont celles relatives au préfixe : longueur (64), préfixe (2a01:e35:8a04:25b0::), durée de vie/durée de vie préférée (86400 secondes = 1 jour). Le paquet contient également le MTU (1480 octets) et l'adresse MAC du routeur.
Création de l'adresse
Avec ses informations, mon ordinateur peut calculer sa propre adresse IPv6 publique à partir du préfixe (2a01:e35:8a04:25b0::/64) et de l'adresse MAC de mon interface réseau (00:16:76:AB:79:ED). L'adresse résultante est 2a01:e35:8a04:25b0:216:76ff:feab:79ed.
Enfin, un paquet ICMPv6 de type Neighbor solicitation est envoyé aux voisins pour vérifier que la nouvelle adresse (2a01:e35:8a04:25b0:216:76ff:feab:79ed) est bien unique.
Pour plus d'informations, lisez l'article Découverte de voisins.