Configuration du DMVPN sur des routeurs Cisco 2951
- Détails
- Catégorie : Cisco
- Publié le lundi 15 avril 2013 10:20
- Écrit par brahim AIT BENALI
- Affichages : 3559
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:
- show ip route eigrp
- show ip nhrp