Ceci est une ancienne révision du document !
Table des matières
ICMPv6, multicast, NDP...
ICMPv6
Ce protocole, qui ressemble beaucoup à l'ICMP du monde IPv4, a été enrichi de nouveaux messages, c'est lui qui sert à véhiculer les informations de configuration, dans le cas qui nous intéresse. En effet, nous n'allons maintenant plus tarder à voir que ce sont des messages ICMP qui contiennent les questions et les réponses que nous avons obtenues avec l'outil rdisc6
, exactement de la même manière que lors du démarrage de la pile IPv6 sur une interface réseau.
Multicast
Contrairement à IPv4, IPv6 n'utilise pas le broadcast au profit du multicast, plus restrictif. Certaines adresses multicast sont définies pour répondre à des requêtes bien précises, et les équipements du réseau qui sont sensés disposer des réponses à ces requêtes écoutent sur ces adresses multicast.
Comme nous les avons déjà rencontrées dans les pages précédentes:
ff02::2
est une adresse multicast destinée à recevoir des requêtes du type « router discovery (Sollicitation d'un routeur) ». Tous les routeurs accessibles dans le voisinage le seront par cette adresse multicast. C'est ce que fait notre commanderdisc6
sur la page précédente ;
ff02::1
est une autre adresse multicast, qui sert dans l'autre sens. Toutes les stations d'un réseau doivent être capables d'écouter sur cette adresse ce que les routeurs ont à leur dire.
NDP
« Neighbor Discovery Protocol (découverte des voisins) ». Ce protocole permet aux nœuds d'un résau de découvrir leur voisinage. Pour ce qui nous intéresse principalement ici, c'est grâce à lui qu'une station qui démarre découvre les routeurs qui lui sont accessibles et que ceux-ci lui communiquent les paramètres nécessaires à sa configuration IPv6. Car vous l'avez deviné, ce sont les routeurs qui transmettent ces informations que nous avons mises en évidence grâce à rdisc6.
NDP utilise des messages ICMPv6 et les adresses multicast ff02::1
et ff02::2
.
Capture du protocole
Nous allons lancer notre wireshark favori à l'écoute d'ICMPv6 sur enp1s0 et refaire un rdisc6 enp1s0
sur notre station expérimentale pour voir…
No. Source Destination Protocol Info 1 fe80::5054:ff:fe37:3649 ff02::2 ICMPv6 Router Solicitation 2 fe80::6aa3:78ff:fe86:ec02 fe80::5054:ff:fe37:3649 ICMPv6 Router Advertisement from 68:a3:78:86:ec:02
- Notre station (
fe80::5054:ff:fe37:3649
) envoie un « Router solicitation (sollicitation de routeurs) » sur l'adresse multicastff02::2
; - un routeur dont l'adresse lien-local est
fe80::6aa3:78ff:fe86:ec02
lui répond.
Analyse de l'échange
La question
Elle est assez simple, nous allons tronquer un peu le détail, pour ne garder que ce qu'il y a de plus intéressant :
Frame 1 (62 bytes on wire, 62 bytes captured) ... Ethernet II, Src: 00:1b:11:52:bf:ab (00:1b:11:52:bf:ab), Dst: 33:33:00:00:00:02 (33:33:00:00:00:02) Destination: 33:33:00:00:00:02 (33:33:00:00:00:02) Address: 33:33:00:00:00:02 (33:33:00:00:00:02) .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast) .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default) Source: 00:1b:11:52:bf:ab (00:1b:11:52:bf:ab) Address: 00:1b:11:52:bf:ab (00:1b:11:52:bf:ab) .... ...0 .... .... .... .... = IG bit: Individual address (unicast) .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) Type: IPv6 (0x86dd) Internet Protocol Version 6 ... Source: fe80::21b:11ff:fe52:bfab (fe80::21b:11ff:fe52:bfab) Destination: ff02::2 (ff02::2) Internet Control Message Protocol v6 Type: 133 (Router solicitation) Code: 0 Checksum: 0xab1e [correct]
Notez, sur la couche Ethernet, les adresses multicast utilisées.
Pour le reste, nous découvrons bien sur ICMPv6 un message de type 133
(Router solicitation).
La réponse
Ça va être un peu plus copieux ici.
Frame 2 (158 bytes on wire, 158 bytes captured) ... Ethernet II, Src: 00:07:cb:1f:0f:5a (00:07:cb:1f:0f:5a), Dst: 33:33:00:00:00:01 (33:33:00:00:00:01) Destination: 33:33:00:00:00:01 (33:33:00:00:00:01) Address: 33:33:00:00:00:01 (33:33:00:00:00:01) .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast) .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default) Source: 00:07:cb:1f:0f:5a (00:07:cb:1f:0f:5a) Address: 00:07:cb:1f:0f:5a (00:07:cb:1f:0f:5a) .... ...0 .... .... .... .... = IG bit: Individual address (unicast) .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default) Type: IPv6 (0x86dd) Internet Protocol Version 6 ... Source: fe80::207:cbff:fe1f:f5a (fe80::207:cbff:fe1f:f5a) Destination: ff02::1 (ff02::1) Internet Control Message Protocol v6 Type: 134 (Router advertisement) Code: 0 Checksum: 0xfc50 [correct] Cur hop limit: 64 Flags: 0x00 0... .... = Not managed .0.. .... = Not other ..0. .... = Not Home Agent ...0 0... = Router preference: Medium Router lifetime: 1800 Reachable time: 0 Retrans timer: 0 ICMPv6 Option (Prefix information) Type: Prefix information (3) Length: 32 Prefix length: 64 Flags: 0xc0 1... .... = Onlink .1.. .... = Auto ..0. .... = Not router address ...0 .... = Not site prefix Valid lifetime: 86400 Preferred lifetime: 86400 Prefix: 2a01:5d8:52f3:500d:: ICMPv6 Option (Recursive DNS Server) Type: Recursive DNS Server (25) Length: 40 Reserved Lifetime: 600 Recursive DNS Servers: 2a01:5d8:e0ff::2 (2a01:5d8:e0ff::2) Recursive DNS Servers: 2a01:5d8:e0ff::1 (2a01:5d8:e0ff::1) ICMPv6 Option (MTU) Type: MTU (5) Length: 8 MTU: 1480 ICMPv6 Option (Source link-layer address) Type: Source link-layer address (1) Length: 8 Link-layer address: 00:07:cb:1f:0f:5a
Tout est dit dans un seul paquet ICMP. Notez que ce message « Neighbor advertisement » est périodiquement émis par les routeurs, même s'il n' pas été sollicité par un nœud du réseau., ce qui permet si nécessaire de reconfigurer dynamiquement les hôtes.