Command Center

Search for a vulnerability, tool, or protocol...

Networking

NDP — Neighbor Discovery Protocol

Le protocole NDP (ICMPv6) remplace ARP en IPv6 : résolution d'adresses, découverte de routeurs, autoconfiguration SLAAC et détection de doublons.

1 mars 2026Peran4 min de lecture
#ipv6#ndp#icmpv6#layer3#arp#slaac

Introduction

NDP (Neighbor Discovery Protocol) est défini dans la RFC 4861. Il s'appuie sur ICMPv6 et remplace plusieurs fonctions d'IPv4 : ARP, ICMP Router Discovery et ICMP Redirect. NDP utilise des messages ICMPv6 et les adresses multicast pour fonctionner, sans broadcast.

Points Clés

  • NDP repose entièrement sur ICMPv6 (pas d'ARP en IPv6).
  • Toutes les opérations NDP utilisent des adresses multicast (jamais de broadcast).
  • Cinq types de messages NDP couvrent toutes les fonctions de découverte.
  • SLAAC (Stateless Address Autoconfiguration) permet à un hôte de configurer automatiquement son adresse sans DHCP.
  • DAD (Duplicate Address Detection) vérifie l'unicité d'une adresse avant de l'utiliser.
  • La table de voisinage est l'équivalent IPv6 de la table ARP.

Les 5 Messages NDP (ICMPv6)

MessageType ICMPv6Rôle
RS — Router Solicitation133Hôte → sollicite les routeurs présents
RA — Router Advertisement134Routeur → annonce préfixe, MTU, passerelle
NS — Neighbor Solicitation135Résolution d'adresse (comme ARP Request)
NA — Neighbor Advertisement136Réponse à NS (comme ARP Reply)
Redirect137Routeur → informe d'un meilleur prochain saut

Processus de Résolution d'Adresse (NS/NA)

Hôte A veut joindre 2001:DB8::2
 
1. A envoie NS  Multicast Solicited-Node : FF02::1:FF00:0002
   "Qui possède 2001:DB8::2 ? Mon adresse MAC est XX:XX"
 
2. B répond  NA  Unicast vers A
   "C'est moi ! MAC = YY:YY"
 
3. A met à jour sa table de voisinage (NEI table)

Processus SLAAC (Autoconfiguration Sans État)

slaac-process.txttext
1. L'hôte génère une adresse Link-Local : FE80::/10 + EUI-64 ou aléatoire 2. L'hôte effectue le DAD sur cette adresse link-local 3. L'hôte envoie un RS (Router Solicitation) vers FF02::2 4. Le routeur répond avec un RA contenant : - Préfixe réseau (ex: 2001:DB8:1::/64) - Durée de validité du préfixe - Adresse du routeur (passerelle par défaut) - Flags M et O (gestion DHCPv6) 5. L'hôte combine préfixe + Interface ID (EUI-64) → Adresse unicast globale complète 6. L'hôte effectue le DAD sur la nouvelle adresse globale

DAD — Détection de Doublons

Avant d'utiliser toute adresse, un hôte envoie un NS avec comme source :: (adresse non spécifiée) vers l'adresse Solicited-Node correspondante. Si personne ne répond → l'adresse est unique → elle est assignée.

dad-process.txttext
Hôte X veut utiliser 2001:DB8:1::A8BB:CCFF:FEDD:EEFF
 
NS source :: dest FF02::1:FFDD:EEFF
"Y'a-t-il déjà quelqu'un avec cette adresse ?"
 
[Attente ~1 seconde]
 Pas de réponse l'adresse est valide
→ Réponse NA → DAD échec → adresse non utilisable (conflit)
 

Configuration du Router Advertisement (Cisco)

ndp-ra-config.shcisco-ios
 
! Activer le routage IPv6 (prérequis pour envoyer des RA)
Router(config)# ipv6 unicast-routing
 
! Configurer l'intervalle des RA (défaut : 200 secondes)
Router(config-if)# ipv6 nd ra-interval 60
 
! Supprimer les RA (mode "silent" / no-RA)
Router(config-if)# ipv6 nd ra suppress
 
! Forcer l'utilisation de DHCPv6 avec stateful (flag M=1)
Router(config-if)# ipv6 nd managed-config-flag
 
! Indiquer que des infos supplémentaires sont dans DHCPv6 (flag O=1)
Router(config-if)# ipv6 nd other-config-flag
 
! Définir une adresse de routeur par défaut dans RA
Router(config-if)# ipv6 address FE80::1 link-local
 

Vérification NDP

ndp-verification.shcisco-ios
 
! Table de voisinage (équivalent de "show arp")
Router# show ipv6 neighbors
 
! Statut des interfaces avec NDP
Router# show ipv6 interface GigabitEthernet0/0
 
! Déboguer les messages NDP en temps réel
Router# debug ipv6 nd
 
Flux NDP : SLAAC complet
Live
 
[Hôte] [Routeur]
│── RS FF02::2 ─────────────>
<── RA (préfixe, gateway) ─────│

│── NS (DAD) → FF02::1:FF.. ──>│ (pas de réponse)

[Adresse configurée automatiquement]
 

Liens Connexes