Objectifs : Mise en place d'une maquette DMVPN sur GNS3, avec l'utilisation du protocole GRE pour l'encapsulation et IPSEC pour le chiffrement.

Comme son nom l'indique, le Dynamic Multipoint VPN est capable d'établir des sessions VPN au besoin et à la volé. Il offre la possibilité de créer des VPNs sans avoir à pré-configurer chacun des possibles peers du routeur. Il suit le principe de Hub and Spoke, les tunnels entre les spokes peuvent être initiés dynamiquement sans ajout de configuration. Il devient donc très facile dans un environnement de production d'ajouter un nouveau Spoke sans toucher à la configuration des autres équipements.

Durant ce laboratoire nous mettrons en place le protocole NHRP (Next Hop Resolution Protocol) nécessaire au bon fonctionnement du DMVPN, puis l'encapsulation avec le protocol GRE et le chiffrement avec la couche IPSEC.

Création du lab DMVPN

Schéma de l’interconnexion Hub & Spoke
  • Interco WAN : 192.168.123.0/24
  • Interco tunnel : 172.16.123.0/24
  • adressage LAN : 10.0.x.0/24

On crée des interfaces loopbacks sur les routeurs pour imiter le LAN:

R1

int loopback 1
ip address 10.0.1.1 255.255.255.0

On assume que tous les routeurs sont interconnectés sur le même réseau (192.168.123.0/24).

On veut monter un tunnel GRE depuis le HUB vers les 2 routeurs (sur une même interface tunnel).

sur le HUB :

interface Tunnel1
 ip address 172.16.123.2 255.255.255.0
 no ip redirects
 ip nhrp map multicast dynamic
 ip nhrp network-id 1
 tunnel source 192.168.123.2
 tunnel mode gre multipoint
end

L'argument gre mutlipoint est ici très important puisqu'il permet de mettre en place plusieurs tunnels sur une même interface.

La configuration NHRP permettra au HUB d''envoyer les adresses IPs aux spokes lors de l'établissement des tunnels.

Sur R1 :

interface Tunnel1
 ip address 172.16.123.1 255.255.255.0
 no ip redirects
 ip nhrp map 172.16.123.2 192.168.123.2
 ip nhrp map multicast 192.168.123.2
 ip nhrp network-id 1
 ip nhrp nhs 172.16.123.2
 tunnel source 172.16.123.1
 tunnel mode gre multipoint
end

Sur R3 :

interface Tunnel1
 ip address 172.16.123.3 255.255.255.0
 no ip redirects
 ip nhrp map 172.16.123.2 192.168.123.2
 ip nhrp map multicast 192.168.123.2
 ip nhrp network-id 1
 ip nhrp nhs 172.16.123.2
 tunnel source 172.16.123.3
 tunnel mode gre multipoint
end

Nous devons ensuite mettre en place du routage dynamique pour que les  spokes puissent apprendre les réseaux des autres peers, ici nous utiliserons le protocole RIP sur tous les routeurs :

router rip
version 2
network 10.0.0.0
network 172.16.123.0
Attention ! Désactiver le split-horizon sur l'interface tunnel 1. On veut être capable d'annoncer des routes sur la même interface que celle d'origine.
interface tunnel 1
no ip split-horizon

DEBUG

R2#sh dmvpn 
Legend: Attrb --> S - Static, D - Dynamic, I - Incompletea
	N - NATed, L - Local, X - No Socket
	# Ent --> Number of NHRP entries with same NBMA peer

Tunnel1, Type:Hub, NHRP Peers:2, 
 # Ent  Peer NBMA Addr Peer Tunnel Add State  UpDn Tm Attrb
 ----- --------------- --------------- ----- -------- -----
     1   192.168.123.1    172.16.123.1    UP    never D    
     1   192.168.123.3    172.16.123.3    UP    never D    

Ajout de l'encapsulation IPSEC sur les tunnels :

IPSEC over GRE fonctionne selon le principe suivant :

  • Chacun des spokes possède une configuration IPSEC sur l'interface tunnel du HUB, chacun des spokes s'enregistre en tant que client auprès du serveur NHRP.
  • Quand un spoke souhaite envoyer un paquet à destination du réseau privé d'un autre spoke, il demande au serveur NHRP l'adresse IP (outside) du spoke en question.
  • Après avoir appris l'adresse IP du spoke de destination, il peut initier un tunnel IPSEC dynamique directement vers le spoke cible.
  • Le tunnel spoke-to-spoke est initié sur les interfaces multipoint GRE (mGRE)
  • Le lien spoke-to-spoke est établi sur demande dès lors qu'il y'a du trafic entre les deux routeurs, sans devoir transiter par le HUB.

Sur le HUB :

!--- Protocol (ISAKMP) policy pour les négotiations phase 1.---!
crypto isakmp policy 10
 authentication pre-share
 hash sha
!--- Ajout des pre-shared-keys dynamique pour tous les routeurs de destination !--- 
crypto isakmp key key_lab address 0.0.0.0 0.0.0.0
!
!
!--- Création de la police de phase 2 pour le chiffrement des données !----
crypto ipsec transform-set strong ah-sha-hmac esp-aes 
!
!--- Création d'un profil IPSEC qui sera appliqué dynamiquement sur les tunnels GRE over IPSEC !---
crypto ipsec profile cisco
 set security-association lifetime seconds 120
 set transform-set strong 
!
interface Tunnel1
 ip address 172.16.123.2 255.255.255.0
 no ip redirects
 ip nhrp authentication key_lab
 ip nhrp map multicast dynamic
 ip nhrp network-id 1
 no ip split-horizon
 tunnel source 192.168.123.2
 tunnel mode gre multipoint
 tunnel key 0
 tunnel protection ipsec profile cisco

Sur les spoke :

crypto isakmp policy 10
 authentication pre-share
crypto isakmp key key_lab address 0.0.0.0 0.0.0.0
!
!
crypto ipsec transform-set strong ah-sha-hmac esp-aes 
!
crypto ipsec profile cisco
 set security-association lifetime seconds 120
 set transform-set strong 
!
interface Tunnel1
 ip address 172.16.123.3 255.255.255.0
 no ip redirects
 ip nhrp authentication key_lab
 ip nhrp map 172.16.123.2 192.168.123.2
 ip nhrp map multicast 192.168.123.2
 ip nhrp network-id 1
 ip nhrp nhs 172.16.123.2
 tunnel source 192.168.123.3
 tunnel mode gre multipoint
 tunnel key 0
 tunnel protection ipsec profile cisco

Vérification :

R3#show crypto engine connection active
Crypto Engine Connections

   ID Interface  Type  Algorithm           Encrypt  Decrypt IP-Address
   13 Tu1        IPsec SHA+AES                   0        3 192.168.123.3
   14 Tu1        IPsec SHA+AES                   3        0 192.168.123.3
 1001 Tu1        IKE   SHA+DES                   0        0 192.168.123.3
R3#show crypto isakmp sa 
IPv4 Crypto ISAKMP SA
dst             src             state          conn-id slot status
192.168.123.3   192.168.123.1   QM_IDLE           1003    0 ACTIVE
192.168.123.2   192.168.123.3   QM_IDLE           1001    0 ACTIVE

Sources :