Mise en place d'une maquette DMVPN (GRE & IPSEC)
Mise en place d'un lab DMVPN sur GNS3, avec l'utilisation du protocole GRE pour l'encapsulation et IPSEC pour le chiffrement.
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
- 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