Aller au contenu principal

DMVPN — Cheat Sheet Cisco IOS

Configuration pratique de DMVPN Phase 3 (hub-and-spoke avec tunnels spoke-à-spoke dynamiques) sur Cisco IOS. Pour les concepts (DMVPN vs MPLS L3VPN), voir DMVPN et MPLS L3VPN : concepts et architecture.

Principe en une phrase

DMVPN combine mGRE (un seul tunnel logique multipoint au lieu d'un tunnel GRE point-à-point par site distant) et NHRP (Next Hop Resolution Protocol, l'« annuaire » qui associe l'IP publique réelle de chaque spoke à son IP privée dans le tunnel) pour permettre à un hub de gérer un nombre variable de sites distants sans reconfiguration, et — en Phase 2/3 — aux spokes de monter des tunnels directs entre eux à la demande.

Configuration du Hub

interface Tunnel0
ip address 172.16.0.1 255.255.255.0
no ip redirects
ip mtu 1400
ip nhrp authentication <ClePartageeSolide>
ip nhrp map multicast dynamic
ip nhrp network-id 100
tunnel source GigabitEthernet0/0
tunnel mode gre multipoint
tunnel protection ipsec profile DMVPN-IPSEC
  • tunnel mode gre multipoint : c'est le mGRE — un seul tunnel logique accepte plusieurs pairs, contrairement à un tunnel GRE classique limité à une seule destination.
  • ip nhrp map multicast dynamic : autorise le hub à répliquer le trafic multicast/broadcast (nécessaire pour les protocoles de routage dynamique dans le tunnel) vers chaque spoke enregistré dynamiquement.
  • ip nhrp network-id : identifiant NHRP local à l'interface — doit être identique entre hub et spokes du même réseau DMVPN.
  • tunnel protection ipsec profile : chiffre le tunnel GRE avec un profil IPsec (voir plus bas) — DMVPN sans cette ligne reste un simple mGRE non chiffré.

Configuration d'un Spoke

interface Tunnel0
ip address 172.16.0.2 255.255.255.0
no ip redirects
ip mtu 1400
ip nhrp authentication <ClePartageeSolide>
ip nhrp map 172.16.0.1 <IP_PUBLIQUE_HUB>
ip nhrp map multicast <IP_PUBLIQUE_HUB>
ip nhrp network-id 100
ip nhrp nhs 172.16.0.1
tunnel source GigabitEthernet0/0
tunnel mode gre multipoint
tunnel protection ipsec profile DMVPN-IPSEC
  • ip nhrp map <ip_tunnel> <ip_publique> : enregistrement statique vers le hub (seule adresse fixe et connue à l'avance) — les mappings spoke-à-spoke, eux, sont appris dynamiquement par NHRP en Phase 2/3.
  • ip nhrp nhs <ip_tunnel_hub> : désigne le hub comme NHS (Next Hop Server), le point de résolution NHRP central.

Protection IPsec du tunnel

crypto ikev2 proposal DMVPN-PROP
encryption aes-cbc-256
integrity sha256
group 14

crypto ikev2 policy DMVPN-POL
proposal DMVPN-PROP

crypto ikev2 keyring DMVPN-KEYRING
peer ANY
address 0.0.0.0 0.0.0.0
pre-shared-key <ClePartageeSolide>

crypto ikev2 profile DMVPN-IKEV2-PROFILE
match identity remote address 0.0.0.0
authentication local pre-share
authentication remote pre-share
keyring local DMVPN-KEYRING

crypto ipsec transform-set DMVPN-TSET esp-aes 256 esp-sha256-hmac
mode transport

crypto ipsec profile DMVPN-IPSEC
set transform-set DMVPN-TSET
set ikev2-profile DMVPN-IKEV2-PROFILE
  • match identity remote address 0.0.0.0 (wildcard) : accepte n'importe quel pair — indispensable côté hub puisque les spokes ont des IP publiques variées et pas toujours connues à l'avance.
  • mode transport (et non tunnel) : DMVPN encapsule déjà le trafic dans GRE, IPsec n'a donc besoin de protéger que ce GRE — le mode transport évite une double encapsulation IP superflue.

Routage dynamique dans le tunnel

router eigrp DMVPN
address-family ipv4 unicast autonomous-system 100
af-interface Tunnel0
split-horizon disable
exit-af-interface
network 172.16.0.0 0.0.0.255
exit-address-family
  • split-horizon disable sur l'interface tunnel du hub : sans cette ligne, le hub n'annoncerait pas à un spoke une route apprise d'un autre spoke (comportement normal du split-horizon, mais contre-productif dans une topologie hub-and-spoke où le hub doit justement relayer entre spokes).

Vérification

show dmvpn ! état des tunnels DMVPN : hub/spoke, IPsec actif, attr NHRP
show ip nhrp ! table NHRP : mappings IP tunnel ↔ IP publique
show ip nhrp nhs ! état de l'enregistrement auprès du NHS (hub)
show crypto ikev2 sa ! sessions IKEv2 sous-jacentes
show crypto session ! vue synthétique par pair

:::tip Lire show dmvpn La colonne Attrb indique D (Dynamic, appris) ou S (Static, configuré) ; en Phase 3, un tunnel spoke-à-spoke qui apparaît en D confirme que la résolution directe fonctionne, sans repasser par le hub. :::

:::warning Pièges fréquents

  • MTU/fragmentation : l'encapsulation GRE + IPsec ajoute un surcoût d'en-têtes non négligeable — ip mtu 1400 (ou moins) et ip tcp adjust-mss évitent une fragmentation silencieuse qui casse certains flux applicatifs.
  • network-id différent entre hub et spoke : NHRP ne forme jamais de mapping, sans message d'erreur explicite côté IOS — toujours vérifier show ip nhrp en premier en cas de tunnel qui ne monte pas.
  • Oublier tunnel protection ipsec profile : le tunnel DMVPN fonctionne (routage OK) mais tout le trafic passe en clair — à vérifier systématiquement avec show crypto session. :::

📝 Tester ses connaissances

1. Quelles deux briques DMVPN combine-t-il pour permettre à un hub de gérer un nombre variable de spokes sans reconfiguration ?

2. Que signifie concrètement `tunnel mode gre multipoint` ?

3. Pourquoi désactiver `split-horizon` sur l'interface tunnel du hub avec EIGRP ?

4. Que révèle un tunnel spoke-à-spoke marqué `D` (Dynamic) dans `show dmvpn` en Phase 3 ?