Mettre en place des VPN Dynamique (DMVPN)

Aujourd’hui je vais rapidement vous montrer comment mettre en place un système de VPN qui va monter dynamiquement les tunnels entre les équipements en fonction de la demande.

Pour cela nous allons utiliser la technologie DMVPN de chez CISCO.

Présentation rapide du DMVPN

Le DMVPN peut être mis en place sur un ensemble de routeurs interconnectés. L’un des routeurs endossera le rôle de « HUB » et les autres prendront le rôle de « SPOKE« .

Les modèles de déploiement

  • Hub-and-Spoke : Un DMVPN Hub-and-Spoke nécessite que chaque SPOKE possède une interface GRE point-à-point utilisé pour monter le tunnel vers le HUB. Tout le trafic entre les SPOKE doit passer par le HUB. Ce modèle permet une forte évolutivité de la configuration mais ne permet pas l’établissement d’un lien Spoke-to-Spoke.
  • Spoke-to-Spoke : Un DMVPN Spoke-to-Spoke nécessite que chaque SPOKE possède une interface mGRE (m = multipoint) dans laquelle va transiter les tunnels dynamique vers les autres SPOKE. Ce modèle fournit une forte évolutivité de la configuration pour l’ensemble des périphériques et permet l’établissement de liens Spoke-to-Spoke.

Les bénéfices du DMVPN

  • Réduction de la configuration sur le routeur HUB : Un VPN IPSec traditionnel nécessite la configuration des caractéristiques de la crypto map, de l’ACL crypto ainsi que l’interface tunnel GRE pour chaque SPOKE distant. Avec DMVPN, il suffit de créer une seule interface mGRE ainsi qu’une seule politique IPSec. Il n’y a pas besoin d’ACL crypto sur le routeur HUB. Ainsi lorsque l’on ajoute un nouveau SPOKE, la configuration du routeur HUB est très peu impactée.
  • Initiation IPSec automatique : GRE se base sur le protocole NHRP (Next Hop Resolution Protocol) pour configurer et déterminer les adresses de destination des autres pairs. Cela permet à IPSec de se lancer et de créer dynamiquement un tunnel GRE point-à-point ainsi que de commencer à négocier les sessions IPSec sans configuration traditionnelle.
  • Support des routeurs configurés avec des Spoke en adressage dynamique : Un VPN IPSec Hub-and-Spoke traditionnel nécessite que les hôtes aient une adresse IP statique. DMVPN permet aux SPOKE de posséder une adresse IP dynamique car il utilise le protocole NHRP pour déterminer l’adresse IP de l’interface du SPOKE distant via le routeur HUB.

Mise en place du DMVPN

Voici tout d’abord à quoi ressemble notre maquette qui nous permettra de mettre en place du DMVPN Spoke-to-Spoke :

Topologie d'exemple DMVPN

Etape 0 : Quelques précisions avant de commencer

Pour que tout fonctionne correctement il faut :

  • Que la politique IKE (crypto isakmp policy) soit identique sur chacun des routeurs.
  • Que la politique IPSec (crypto ipsec transform-set) soit identique sur chacun des routeurs.
  • Que le protocole de routage OSPF soit configuré de façon cohérente, c’est à dire que le réseau WAN (172.16.0.0/24) soit déclaré dans une area différente des réseaux LAN (192.168.x.0/24) et du réseau utilisé pour les tunnels VPN (10.0.0.0/24). En effet, si cette condition n’est pas remplie, vos tunnels VPN risquent d’avoir une connexion instable.

Etape 1 : Configuration initiale

HUB Rouen :

interface FastEthernet0/0
ip address 172.16.0.254 255.255.255.0
no cdp enable
!
interface FastEthernet0/1
ip address 192.168.0.254 255.255.255.0
!
interface Loopback0
ip address 10.0.100.254 255.255.255.255

SPOKE Paris :

interface FastEthernet0/0
ip address 172.16.0.1 255.255.255.0
no cdp enable
!
interface FastEthernet0/1
ip address 192.168.1.254 255.255.255.0
!
interface Loopback0
ip address 10.0.100.1 255.255.255.255

SPOKE Lyon :

interface FastEthernet0/0
ip address 172.16.0.2 255.255.255.0
no cdp enable
!
interface FastEthernet0/1
ip address 192.168.2.254 255.255.255.0
!
interface Loopback0
ip address 10.0.100.2 255.255.255.255

Etape 2 : Configuration du HUB Rouen

crypto isakmp policy 10
 authentication pre-share
 hash md5
 group 5
 lifetime 3600
 encryption 3des
!
crypto isakmp key cisco123 address 172.16.0.0 255.255.255.0
!
crypto ipsec transform-set AES-SHA1 esp-aes esp-sha-hmac 
!
crypto ipsec profile DMVPN-PROFILE
 set transform-set AES-SHA1
!
interface Tunnel0
 ip address 10.0.0.254 255.255.255.0
 no ip redirects
 ip mtu 1440
 ip tcp adjust-mss 1360
 ip nhrp map multicast dynamic
 ip nhrp network-id 1
 ip nhrp authentication azerty30
 tunnel key 0
 tunnel source fastethernet 0/0
 tunnel mode gre multipoint
 tunnel protection ipsec profile DMVPN-PROFILE
 ip ospf network broadcast
 ip ospf priority 255
!
router ospf 1
 router-id 10.0.100.254
 network 172.16.0.0 0.0.0.255 area 0
 network 10.0.0.0 0.0.0.255 area 1
 network 192.168.0.0 0.0.0.255 area 1

Etape 3 : Configuration du SPOKE Paris

crypto isakmp policy 10
 authentication pre-share
 hash md5
 group 5
 lifetime 3600
 encryption 3des
!
crypto isakmp key cisco123 address 172.16.0.0 255.255.255.0
!
crypto ipsec transform-set AES-SHA1 esp-aes esp-sha-hmac 
!
crypto ipsec profile DMVPN-PROFILE
 set transform-set AES-SHA1 
!
interface Tunnel0
 ip address 10.0.0.1 255.255.255.0
 no ip redirects
 ip mtu 1440
 ip tcp adjust-mss 1360
 ip nhrp map 10.0.0.254 172.16.0.254
 ip nhrp map multicast 172.16.0.254
 ip nhrp network-id 1
 ip nhrp authentication azerty30
 tunnel key 0
 ip nhrp nhs 10.0.0.254
 tunnel source fastethernet 0/0
 tunnel mode gre multipoint
 tunnel protection ipsec profile DMVPN-PROFILE
 ip ospf network broadcast
 ip ospf priority 0
!
router ospf 1
 router-id 10.0.100.1
 network 172.16.0.0 0.0.0.255 area 0
 network 10.0.0.0 0.0.0.255 area 1
 network 192.168.1.0 0.0.0.255 area 1

Etape 4 : Configuration du SPOKE Lyon

crypto isakmp policy 10
 authentication pre-share
 hash md5
 group 5
 lifetime 3600
 encryption 3des
!
crypto isakmp key cisco123 address 172.16.0.0 255.255.255.0
!
crypto ipsec transform-set AES-SHA1 esp-aes esp-sha-hmac 
!
crypto ipsec profile DMVPN-PROFILE
 set transform-set AES-SHA1 
!
interface Tunnel0
 ip address 10.0.0.2 255.255.255.0
 no ip redirects
 ip mtu 1440
 ip tcp adjust-mss 1360
 ip nhrp map 10.0.0.254 172.16.0.254
 ip nhrp map multicast 172.16.0.254
 ip nhrp network-id 1
 ip nhrp authentication azerty30
 tunnel key 0
 ip nhrp nhs 10.0.0.254
 tunnel source fastethernet 0/0
 tunnel mode gre multipoint
 tunnel protection ipsec profile DMVPN-PROFILE
 ip ospf network broadcast
 ip ospf priority 0
!
router ospf 1
 router-id 10.0.100.2
 network 172.16.0.0 0.0.0.255 area 0
 network 10.0.0.0 0.0.0.255 area 1
 network 192.168.2.0 0.0.0.255 area 1

Etape finale : Vérifications

Pour vérifier que tout fonctionne correctement, vous pouvez effectuer des captures de paquets par le biais du logiciel Wireshark, ce qui vous permettra d’apercevoir des paquets ESP (Encapsulating Security Payload) transitant entre les différents routeurs pour les communications Lan-to-Lan.

Les commandes suivantes pourront vous permettre de déboguer vos équipements en cas de problèmes :

  • Vérifier l’état de l’IKE entre le HUB et les SPOKE en utilisant la commande « show isakmp crypto sa » et la commande « ping« .
  • Vérifier le bon fonctionnement du NHRP, du GRE et de l’IPSec en utilisant la commande « debug dmvpn detail all« .
  • Vérifier le routage au travers du DMVPN en utilisant la commande « sh ip route« .