Cisco DMVPN
Il termine DMVPN è l’abbreviazione di Dynamic Multipoint Virtual Private Network, queste permettono la creazione di Tunnel VPN dinamici, la modalità di comunicazione è Hub and Spoke, mentre il traffico, se possibile, avviene direttamente Spoke with Spoke.
Per configurare DMVPN abbiamo bisogno di diversi protocolli:
- mGRE (Multipoint Generic Routing Encapsulation Protocol)
- NHRP (Next Hop Resolution Protocol)
- IGP (Internal Gateway Protocol)
- IPSec
Nella nostra configurazione come protocollo di Routing useremo EIGRP.
Gli apparati su cui ho testato e uso la configurazione che verrà illustrata sono:
- Cisco ASR 1001-X (funzione di Hub)
- Cisco ISR4321 (funzione di Spoke)
- Cisco ISR1117-4P (funzione di Spoke)
Premessa: i Router dovranno essere già configurati per la navigazione su Internet e per il nostro esempio con indirizzi IP Pubblici Statici.
Il primo Router che andiamo a configurare sarà il Cisco ASR 1001-X con la funzione di Hub, prima di tutto determiniamo il tipo di crittografia da usare per proteggere il nostro traffico
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
lifetime 28800
crypto isakmp key xxx address 0.0.0.0
!
crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac
mode tunnel
!
crypto ipsec profile DMVPN
set security-association lifetime seconds 900
set transform-set ESP-3DES-SHA
ricordiamoci di sostituire xxx con la key vogliamo usare e che dovremmo impostare uguale anche sui Router Spoke.
Inoltre memorizziamo il nome del profilo DMVPN, che useremo in seguito, quando lo assegneremo all’interfaccia di Tunnel che cripterà il traffico in IPSec.
Per prima cosa definiamo una Interfaccia di Loopback come terminazione del traffico DMVPN, questa parte non è obbligatoria ma personalmente preferisco usarla per non appoggiarmi direttamente all’interfaccia WAN.
interface Loopback0
description Ip per terminazione DMVPN
ip address IPPUBBLICO 255.255.255.255
no ip redirects
no ip unreachables
no ip proxy-arp
Il codice a seguire definisce una interfaccia di Tunnel che sarà la terminazione/raccolta delle nostre DMVPN.
interface Tunnel1
description DMVPN
bandwidth 51200
ip address 172.16.1.1 255.255.255.0
no ip redirects
ip mtu 1400
ip hello-interval eigrp 95 30
ip hold-time eigrp 95 90
no ip next-hop-self eigrp 95
no ip split-horizon eigrp 95
ip nhrp network-id 1
ip tcp adjust-mss 1360
tunnel source Loopback0
tunnel mode gre multipoint
tunnel key 1
tunnel protection ipsec profile DMVPN
sulla configurazione appena creata porterei attenzione su alcuni punti.
ip address deve appartenere una classe che metterà in comunicazione tutte le interfacce Tunnel dei Router che parteciperanno alla nostra Intranet.
ip nhrp network-id 1 questo comando definisce il network-id della rete per la quale il protocollo nhrp deve scoprire il next-hop.
tunnel source Loopback0 definisce quale deve essere l’interfaccia su cui vanno terminate le DMVPN, nel nostro caso la Loopback0 che abbiamo creato in precedenza.
tunnel protection ipsec profile DMVPN definisce il profilo IPSec che verrà utilizzato per criptare il traffico, nel nostro caso è il profilo chiamato DMVPN.
Analizziamo ora la parte EIGRP che useremo come Routing Protocol per annunciare le nostre reti private all’interno della Intranet create con le DMVPN.
router eigrp 95
distribute-list route-map FILTER-ROUTES-IN in Tunnel1
network 172.16.1.0 0.0.0.255 ##rete DMVPN
network 192.168.1.0 ##eventuale rete locale che vogliamo propagare
andiamo ad analizzare la parte di configurazione:
distribute-list route-map FILTER-ROUTES-IN in Tunnel1
questa riga ci permette di ricevere solamente le reti che ci interessano, evitando potenziali errori.
ip access-list extended FILTER-DMVPN-ROUTES
permit ip 172.16.1.0 0.0.0.255 any
ip access-list extended FILTER-INTRANET-ROUTES
permit ip 192.168.100.0 0.0.0.255 any
permit ip 192.168.110.0 0.0.0.255 any
ip access-list extended FILTER-MNGT-ROUTES
permit ip 10.10.0.0 0.0.0.255 any
permit ip 10.10.10.0 0.0.0.255 any
ip access-list extended FILTER-VOICE-ROUTES
permit ip 192.168.101.0 0.0.0.255 any
permit ip 192.168.111.0 0.0.0.255 any
!
route-map FILTER-ROUTES-IN permit 10
description Filter Mngt Routes from Spoke Routers
match ip address FILTER-MNGT-ROUTES
!
route-map FILTER-ROUTES-IN permit 20
description Filter Intranet Routes from Spoke Routers
match ip address FILTER-INTRANET-ROUTES
!
route-map FILTER-ROUTES-IN permit 30
description Filter Voice Routes from Spoke Routers
match ip address FILTER-VOICE-ROUTES
!
route-map FILTER-ROUTES-IN permit 40
description Filter DMVPN Network
match ip address FILTER-DMVPN-ROUTES
A questo punto la configurazione del nostro Hub è terminata e possiamo procedere alla parte di configurazione del nostro primo Spoke.
Come prima parte andiamo a configurare il tipo di crittografia che andremo ad utilizzare, chiaramente dovrà essere la stessa che abbiamo già impostato sul nostro Hub, anche la key deve essere la stessa usata in precedenza
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
lifetime 28800
crypto isakmp key xxx address 0.0.0.0
!
crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac
mode tunnel
!
crypto ipsec profile DMVPN
set security-association lifetime seconds 900
set transform-set ESP-3DES-SHA
procediamo alla creazione della interfaccia di Tunnel che stabilirà la connessione con il nostro Hub
interface Tunnel1
description Tunnel DMVPN
ip address 172.16.1.2 255.255.255.0
no ip redirects
ip mtu 1400
ip hello-interval eigrp 95 30
ip hold-time eigrp 95 90
no ip next-hop-self eigrp 95
no ip split-horizon eigrp 95
ip nhrp map multicast IPPUBBLICO HUB
ip nhrp map 172.16.1.1 IPPUBBLICO HUB
ip nhrp network-id 1
ip nhrp nhs 172.16.1.1
ip tcp adjust-mss 1360
tunnel source GigabitEthernet0/0
tunnel mode gre multipoint
tunnel key 1
tunnel protection ipsec profile DMVPN
nella configurazione della interfaccia Tunnel andrei ad analizzare alcune righe importanti:
ip nhrp map multicast IPPUBBLICO HUB e ip nhrp map multicast IPPUBBLICO HUB queste ci permettono il discovery tramite il protocollo nhrp del next-hop, quindi è molto importante andare ad indicare l’indirizzo dell’interfaccia di Tunnel del nostro Hub, nel nostro caso 172.16.1.1.
Inoltre ricordiamoci di applicare la protezione IPSec con il comando tunnel protection ipsec profile DMVPN dove il nome DMVPN deve essere coerente con il profilo che abbiamo creato in precedenza.
Ultimo step, andare ad attivare il routing protocol EIGRP per annunciare le nostre reti alla Intranet DMVPN
router eigrp 95
network 10.10.0.0 0.0.0.255 ##rete per il MNGT
network 172.16.1.0 0.0.0.255 ##rete per Intranet DMVPN
network 192.168.100.0 ##rete LAN Dati
network 192.168.101.0 ##rete LAN Voce
La stessa procedura andrà eseguita su tutti i router Spoke.
In questa guida ho cercato di riassumere le parti più importanti della configurazione, ci sono ancora tanti fattori come la possibilità di creare più Tunnel, magari verso Hub diversi per questioni di HA e anche molto importante attivare la QOS, molto utile ad esempio per priorizzare il traffico Voce nella nostra Intranet.
Tutta la documentazione ufficiale la potete trovare sul sito Cisco direttamente a questo link Cisco Dynamic Multipoint VPN.