Configuration du DMVPN sur des routeurs Cisco 2951

Configuration du DMVPN sur des routeurs Cisco 2951

 

Le but de cet article est de montrer comment configurer DMVPN sur des routeurs Cisco.

Introduction

DMVPN: Dynamic Multiple Virtual Private Network.

Le DMVPN permet de déployer rapidement un grand nombre de sites de manière sécurisée et évolutive. DMVPN correspond en fait à un ensemble de technologies telles qu’IPsec, mGRE et NHRP qui, combinées, facilitent le déploiement de réseaux privés virtuels IPsec.

 

Dans notre cas, l’atout majeur du DMVPN est sa facilité dans le déploiement. Une fois établie, la configuration des routeurs Hub demeure inchangée. L’ajout de sites de type « Client » se fait de manière automatique alors que son adresse IP côté Internet est non connue et dynamique.

DMVPN est la combinaison des technologies suivantes :

  • mGRE
  • NHRP
  • EIGRP
  • IPsec

Fonctionnement du DMVPN

1- mGRE

mGRE: Multipoint Generic Routing Encapsulation

Les tunnels GRE classiques sont de type point à point. Le mGRE permet des liaisons multipoint afin qu’une même interface GRE supporte plusieurs tunnels vers différentes destinations.

Le réseau mGRE est de type NBMA (Non-Broadcast Multi Access) :

  • Le broadcast n’est pas possible.
  • Les liaisons sont multipoints.

Pour joindre un élément défini par son adresse logique, il faut un mécanisme afin de connaitre son adresse physique. Dans le cas du mGRE, l’adresse logique correspond à l’adresse privée (interface tunnel), l’adresse physique est l’adresse publique. Chacun des routeurs Spoke (Cisco 881) initie un tunnel mGRE vers chacun des routeurs HUB (Cisco 2951). L’établissement dynamique d’un tunnel entre les Spokes n’a pas été retenu dans le cas de cet exemple.

2- NHRP

NHRP: Next Hop Resolution Protocol

Le protocole NHRP permet d’effectuer la résolution de l’adressage logique en l’adressage physique dans les réseaux NBMA. Dans le cadre du DMVPN, le NHRP sert à résoudre les adresses IP privées du réseau mGRE en les adresses IP publiques Internet.

NHRP est un protocole de type client/serveur : les routeurs HUBs sont les serveurs NHS (Next Hop Server); les routeurs Spoke sont les clients NHC (Next Hop Client).

Chaque HUB maintien la table de mapping NHRP. Chaque Spoke y enregistre son adresse publique au démarrage. Pour que l’enregistrement soit possible, chaque NHC doit avoir dans sa configuration la connaissance d’un ou plusieurs NHS.

Au démarrage, le Spoke (qui est client NHC) initie la connexion du tunnel GRE vers l’adresse IP publique du ou des HUBs (qui sont serveurs NHS). Cette initialisation est nécessaire car le HUB  n’a pas d’information sur l’adresse IP publique du Spoke (car dynamique).

Le HUB ajoute le Spoke dans sa table mapping unicast NHRP. Avec ce mapping, le routeur HUB a une connaissance pour chaque Spoke de la correspondance adresse IP privée mGRE <-> adresse IP publique. Le HUB peut donc router les paquets IP Unicast au routeur Spoke à travers le tunnel mGRE/IPsec.

Le HUB ajoute également le Spoke dans sa table mapping multicast NHRP permettant ainsi l’échange de paquets multicast nécessaires au protocole de routage dynamique EIGRP. Le HUB et Spoke peuvent devenir voisins EIGRP et s’échanger leurs routes.

3-EIGRP

EIGRP: Enhaced Interior Gateway Routing Protocol

Dans cet exemple, l’EIGRP permet aux Spokes de connaître la disponibilité des HUBs.

Il permet aux HUBs de connaître les différents LAN internes des Spokes.

L’EIGRP permet donc aux Spokes d’annoncer leur réseau local aux HUBs, et à ces derniers d’envoyer une route par défaut aux Spokes.

L’EIGRP est activé sur les interfaces suivantes :

  • L’ensemble des interfaces Tunnels mGRE: cela permet l’échange de routes entre chaque routeur HUB d’une part et le reste des routeurs de l’autre part. Les interfaces Tunnels mGRE partagent le même sous réseau (subnet) IP, cette configuration est nécessaire pour établir les voisinages EIGRP entre les différents extrémités des tunnels mGRE.
  • L’interface LAN des routeurs HUB: l’EIGRP est activé sur cette interface pour assurer le bon fonctionnement de la solution en cas de perte de l’interface WAN du HUB qui porte l’interface HSRP primaire. Une authentification est mise en œuvre au pour interdire tout échange de routes en EIGRP avec des routeurs externes sur ce VLAN.
  • L’interface LAN du routeur Spoke est configurée comme étant une interface EIGRP. Le réseau IP associé à cette interface est annoncé en EIGRP grâce à la commande « Network » dans la configuration EIGRP.

 4- IPsec

 IPsec: Internet Protocol security

Le protocole IPSec chiffre toutes les informations (données utilisateurs, messages EIGRP, messages NHRP) qui transitent entre les sites.

 

L'architecture + la configuration

Architecture Physique

 

Quelques éléments clés sur la configuration des équipements:

1- VLAN:

Les routeurs Hub ne possèdent que des interfaces routées. Il n’y aura donc pas de notions de VLANs. Les routeurs Spoke n’ayant qu’un seul réseau local, il n’y aura que le VLAN 1 qui est le VLAN par défaut.

2- Le protocole IP

Chaque routeur Hub présente 3 types de réseaux :

  • Réseau joignable depuis l’Internet.
  • Réseau privé d’interconnexion Interne.
  • Réseau privé pour l’EIGRP.

Chaque routeur Spoke possède 3 types de réseaux :

  • Réseau joignable depuis l’Internet.
  • Réseau privé interne.
  • Réseau privé pour l’EIGRP (commun aux Hub)

Sur les routeurs HUBs et Spokes, une VRF (Virtual Routing and Forwarding) nommée « Externe » est créée afin d’isoler les flux provenant d’Internet (les flux qui ne proviennent pas du tunnel DMVPN). Le principe est d’avoir une table de routage pour l’interne (globale) et une table de routage pour l’externe (VRF « Externe »). Les deux étant isolées l’une de l’autre.

3- NHRP

Le NHRP permet aux Hub de maintenir de manière dynamique :

  • sa table de mapping unicast qui fait correspondre pour chacun des Spoke l’adresse ip privée mGRE avec l’adresse ip publique. Le Hub peut donc forwarder les paquets IP Unicast au routeur Spoke à travers le tunnel mGRE/IPSec.
  • sa table de mapping multicast, permettant au protocole EIGRP de fonctionner.

Deux types de configuration NHRP sont utilisés :

  • Dynamique sur les HUBs : permet donc de maintenir sa table de mapping unicast et multicast,
  • Statique sur les Spoke : permet d’établir la connectivité unicast et multicast vers les HUBs,
  • Statique sur les HUB pour la connectivité HUB vers HUB.

 

4-IPsec:

Dans le mode transport, ce sont uniquement les données transférées (la partie payload du paquet IP) qui sont chiffrées et authentifiées. L’entête IP des paquets est inchangé et non chiffré. Le mode transport n’effectue pas d’encapsulation (ie, pas de tunnelisation). L’encapsulation au niveau IPSec n’est pas nécessaire car le tunnel mGRE a déjà effectué une encapsulation. De plus, le DMVPN requière le mode transport lorsque le NAT est présent (pour le protocole NHRP).

 

5-MTU:

MTU: Maximum Transmission Unit

Les hôtes et les routeurs doivent fragmenter lorsque la trame IP est plus grande que la MTU.

La fragmentation doit être évitée au maximum :

  • Car elle augmente le nombre de paquets perdus
  • Car elle augmente la consommation CPU

Dans cette architecture DMVPN, il faut prendre en compte les diverses encapsulations afin de spécifier une valeur de MTU évitant au maximum la fragmentation :

  • En-tête PPPoE dans le cas du vDSL
  • En-tête GRE
  • En-tête IPSec

Le protocole GRE fragmente avant l’encapsulation. IPSec fragmente après le chiffrement. Il peut donc y avoir une double fragmentation.

De ce fait, la préconisation est de spécifier la MTU sur toutes les interfaces tunnel GRE des équipements avec une valeur à 1400.

 

Configuration:

 HUB A

version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname HUBA
!
boot-start-marker
boot-end-marker
!
aaa new-model
!
aaa session-id common
memory-size iomem 5
ip cef
!
ip vrf Externe
 description Internet
 rd 100:1
!
ip vrf forwarding
!
no ip domain lookup
ip domain name lab.local
!
key chain EIGRP-CHAIN
 key 1
   key-string 7 044904131B2842492D3433273C
!
crypto keyring vpn1 vrf Externe
  pre-shared-key address 0.0.0.0 0.0.0.0 key VpNTh0M$euR0P!
!
crypto isakmp policy 10
 encr 3des
 authentication pre-share
 group 2
 lifetime 14400
crypto isakmp keepalive 60
!
crypto ipsec transform-set gre_set esp-3des esp-sha-hmac
 mode transport
!
crypto ipsec profile DMVPN
 set transform-set gre_set
!
interface Tunnel0
 bandwidth 1000000
 ip address 192.168.1.1 255.255.255.0
 no ip redirects
 ip mtu 1400
 ip nhrp authentication maquette
 ip nhrp map multicast dynamic
 ip nhrp map multicast 192.168.0.2
 ip nhrp map 192.168.1.2 192.168.0.2
 ip nhrp network-id 100
 ip nhrp holdtime 60
 ip tcp adjust-mss 1360
 no ip split-horizon eigrp 10
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 100000
 tunnel path-mtu-discovery
 tunnel vrf Externe
 tunnel protection ipsec profile DMVPN
!
interface FastEthernet0/0
 ip vrf forwarding Externe
 ip address 192.168.0.1 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.10.1 255.255.255.0
 ip authentication mode eigrp 10 md5
 ip authentication key-chain eigrp 10 EIGRP-CHAIN
 duplex auto
 speed auto
 standby 1 ip 192.168.10.3
 standby 1 priority 110
 standby 1 preempt
 standby 1 authentication md5 key-string 7 033073242B0A345E41191C213A243B220C393934
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router eigrp 10
 redistribute static
 passive-interface default
 no passive-interface FastEthernet0/1
 no passive-interface Tunnel0
 network 192.168.1.0
 network 192.168.10.0
 distribute-list 1 out static
 no auto-summary
!
ip forward-protocol nd
ip route 20.20.20.0 255.255.255.0 192.168.10.2
!
ip http server
no ip http secure-server
!
access-list 1 permit 20.20.20.0 0.0.0.255
access-list 1 deny   any
!
control-plane
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
!
end

HUB B

version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname HUB2
!
boot-start-marker
boot-end-marker
!
no aaa new-model
memory-size iomem 5
ip cef
!
ip vrf Externe
 description Internet
 rd 100:1
!
no ip domain lookup
ip domain name lab.local
!
crypto keyring vpn1 vrf Externe
  pre-shared-key address 0.0.0.0 0.0.0.0 key VpNTh0M$euR0P!
!
crypto isakmp policy 10
 encr 3des
 authentication pre-share
 group 2
 lifetime 14400
crypto isakmp keepalive 60
!
crypto ipsec transform-set gre_set esp-3des esp-sha-hmac
 mode transport
!
crypto ipsec profile DMVPN
 set transform-set gre_set
!
interface Tunnel0
 bandwidth 1000000
 ip address 192.168.1.2 255.255.255.0
 no ip redirects
 ip mtu 1400
 ip nhrp authentication maquette
 ip nhrp map multicast dynamic
 ip nhrp map multicast 192.168.0.1
 ip nhrp map 192.168.1.1 192.168.0.1
 ip nhrp network-id 100
 ip nhrp holdtime 60
 ip tcp adjust-mss 1360
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 100000
 tunnel path-mtu-discovery
 tunnel vrf Externe
 tunnel protection ipsec profile DMVPN
!
interface FastEthernet0/0
 ip vrf forwarding Externe
 ip address 192.168.0.2 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.10.2 255.255.255.0
 duplex auto
 speed auto
 standby 1 ip 192.168.10.3
 standby 1 priority 110
 standby 1 preempt
 standby 1 authentication md5 key-string 7 033073242B0A345E41191C213A243B220C393934
!
interface FastEthernet1/0
 no ip address
 shutdown
 duplex auto
 speed auto
!
router eigrp 10
 redistribute static
 offset-list 0 out 10 Tunnel0
 network 192.168.1.0
 network 192.168.10.0
 distribute-list 1 out static
 no auto-summary
 no eigrp log-neighbor-changes
!
ip forward-protocol nd
ip route 10.10.10.0 255.255.255.0 192.168.10.1
!
!
no ip http server
no ip http secure-server
!
access-list 1 permit 10.10.10.0 0.0.0.255
access-list 1 deny   any

!
control-plane
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
end

 

Spoke A

version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname SpokeA
!
boot-start-marker
boot-end-marker
!
no aaa new-model
memory-size iomem 5
ip cef
!
ip vrf Externe
 description Internet
 rd 100:1
!
no ip domain lookup
ip domain name lab.local
!
crypto keyring vpn1 vrf Externe
  pre-shared-key address 0.0.0.0 0.0.0.0 key VpNTh0M$euR0P!
!
crypto isakmp policy 10
 encr 3des
 authentication pre-share
 group 2
 lifetime 14400
crypto isakmp keepalive 60
!
crypto ipsec transform-set gre_set esp-3des esp-sha-hmac
 mode transport
!
crypto ipsec profile DMVPN
 set transform-set gre_set
!
interface Tunnel0
 bandwidth 1000000
 ip address 192.168.1.10 255.255.255.0
 no ip redirects
 ip mtu 1400
 ip nhrp authentication maquette
 ip nhrp map multicast 192.168.0.1
 ip nhrp map 192.168.1.1 192.168.0.1
 ip nhrp map multicast 192.168.0.2
 ip nhrp map 192.168.1.2 192.168.0.2
 ip nhrp network-id 100
 ip nhrp holdtime 60
 ip nhrp nhs 192.168.1.1
 ip nhrp nhs 192.168.1.2
 ip tcp adjust-mss 1360
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 100000
 tunnel path-mtu-discovery
 tunnel vrf Externe
 tunnel protection ipsec profile DMVPN
!
interface FastEthernet0/0
 ip vrf forwarding Externe
 ip address 192.168.0.10 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.100.1 255.255.255.0
 duplex auto
 speed auto
!
router eigrp 10
 passive-interface default
 no passive-interface Tunnel0
 network 192.168.1.0
 network 192.168.100.0
 no auto-summary
 no eigrp log-neighbor-changes
!
ip forward-protocol nd
!
no ip http server
no ip http secure-server
!
control-plane
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
end

 

Spoke B

version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
no service password-encryption
!
hostname SpokeB
!
boot-start-marker
boot-end-marker
!
no aaa new-model
memory-size iomem 5
ip cef
!
ip vrf Externe
 description Internet
 rd 100:1
!
no ip domain lookup
ip domain name lab.local
!
crypto keyring vpn1 vrf Externe
  pre-shared-key address 0.0.0.0 0.0.0.0 key VpNTh0M$euR0P!
!
crypto isakmp policy 10
 encr 3des
 authentication pre-share
 group 2
 lifetime 14400
crypto isakmp keepalive 60
!
crypto ipsec transform-set gre_set esp-3des esp-sha-hmac
 mode transport
!
crypto ipsec profile DMVPN
 set transform-set gre_set
!
interface Tunnel0
 bandwidth 1000000
 ip address 192.168.1.11 255.255.255.0
 no ip redirects
 ip mtu 1400
 ip nhrp authentication maquette
 ip nhrp map multicast 192.168.0.1
 ip nhrp map 192.168.1.1 192.168.0.1
 ip nhrp map multicast 192.168.0.2
 ip nhrp map 192.168.1.2 192.168.0.2
 ip nhrp network-id 100
 ip nhrp holdtime 60
 ip nhrp nhs 192.168.1.1
 ip nhrp nhs 192.168.1.2
 ip tcp adjust-mss 1360
 tunnel source FastEthernet0/0
 tunnel mode gre multipoint
 tunnel key 100000
 tunnel path-mtu-discovery
 tunnel vrf Externe
 tunnel protection ipsec profile DMVPN
!
interface FastEthernet0/0
 ip vrf forwarding Externe
 ip address 192.168.0.11 255.255.255.0
 duplex auto
 speed auto
!
interface FastEthernet0/1
 ip address 192.168.101.1 255.255.255.0
 duplex auto
 speed auto
!
router eigrp 10
 passive-interface default
 no passive-interface Tunnel0
 network 192.168.1.0
 network 192.168.101.0
 no auto-summary
 no eigrp log-neighbor-changes
!
ip forward-protocol nd
!
no ip http server
no ip http secure-server
!
control-plane
!
line con 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line aux 0
 exec-timeout 0 0
 privilege level 15
 logging synchronous
line vty 0 4
 login
!
end

 

des commandes permettent de vérifier la configuration injectée, telles que:

  1. show ip route eigrp
  2. show ip nhrp

Informations supplémentaires