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 nontunnel) : 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 disablesur 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) etip tcp adjust-mssévitent une fragmentation silencieuse qui casse certains flux applicatifs. network-iddifférent entre hub et spoke : NHRP ne forme jamais de mapping, sans message d'erreur explicite côté IOS — toujours vérifiershow ip nhrpen 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 avecshow 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 ?