IPsec High Availability with DPD
Dans cet article sur la haute disponibilité du protocole IPsec, nous allons détailler une des trois méthodes de stateless Failover: DPD (Dead Peer Detection).
2 types de Failover, les stateless qui ne permettent pas de connaitre l’état du tunnel, et les statefull qui utilisent 2 équipements redondants afin de connaitre a chaque instant, lequel est actif.
Les 3 méthodes de Stateless Failover sont les suivantes:
- DPD (Dead Peer Detection)
- IGP avec GRE over IPSEC
- HSRP (Hot Standby Routing Protocol)
DPD – Dead peer detection
Dead Peer Detection (DPD) est une méthode pour détecter les peers qui ne répondent plus.
DPD est mis en place grâce aux keepalives avec la commande:
crypto isakmp keepalive seconds [retries] [periodic | on-demand]
seconds: Nombre de secondes entre les messages DPD (entre 10 et 3600)
retries: (Optionnel) Nombre de secondes entre les essais, si les DPD indiquent que le lien est DOWN (2 à 60)
Periodic: (Optional) messages envoyés à intervalles réguliers.
on-demand:(Optional) par défaut. les Retries sont envoyés à la demande.
Au niveau de la crypto map, nous allons spécifier 2 peer, un peer par défaut, ainsi qu’un peer de backup.
crypto map central 10 ipsec-isakmp set peer 192.168.0.2 default set peer 192.168.0.3
Le reste de la configuration du tunnel IPsec est identique à une configuration de base. ISAKMP, IPSEC, et Transform-set.. etc.
Voici un Lab Dynagen de démonstration pour la mise en place d’IPsec et de stateless Failover.
Topologie du LAB Dynagen
Dans le Lab, le WAN est représenté par un switch.
Configuration des routeurs
Fichier Dynagen
################################################## # Author: Benoit GONCALVES # Course: Implementing Secure Converged Wide Area Networks (ISCW) # Version: 1.1 # Date: 24.12.2009 # Modified: 24.12.2009 ################################################## autostart = True [localhost:7200] [[7200]] [[ROUTER A]] image = c7200-adventerprisek9-mz.124-15.T6.bin cnfg = A.txt npe = npe-400 ram = 160 nvram = 256 mmap = False console = 2002 # modules/slots # cabling F0/0 = S1 1 [[ROUTER B]] image = c7200-adventerprisek9-mz.124-15.T6.bin cnfg = B.txt npe = npe-400 ram = 160 nvram = 256 mmap = False console = 2003 # modules/slots # cabling F0/0 = S1 2 F0/1 = C F0/1 [[ROUTER C]] image = c7200-adventerprisek9-mz.124-15.T6.bin cnfg = C.txt npe = npe-400 ram = 160 nvram = 256 mmap = False console = 2004 # modules/slots # cabling F0/0 = S1 3 [[ETHSW S1]] 1 = access 1 2 = access 1 3 = access 1
config Router A
enable secret cisco ! no ip domain lookup ip http server ! hostname A crypto isakmp policy 1 hash sha encryption 3des group 5 authentication pre-share lifetime 1600 crypto isakmp key cisco address 192.168.0.2 crypto isakmp key cisco address 192.168.0.3 crypto isakmp keepalive 10 3 crypto ipsec transform-set to-central esp-3des esp-sha-hmac mode tunnel access-list 100 permit host 192.168.0.1 host 192.168.0.2 access-list 100 permit host 192.168.0.1 host 192.168.0.3 crypto map central 10 ipsec-isakmp match address 100 set peer 192.168.0.2 default set peer 192.168.0.3 set transform-set to-central interface f0/1 ip add 10.10.1.1 255.255.255.0 no shut interface f0/0 ip add 192.168.0.1 255.255.255.0 crypto map central no shut router rip version 2 network 192.168.0.0 network 172.20.0.0
config Router B
enable secret cisco ! no ip domain lookup ip http server ! hostname B crypto isakmp policy 1 hash sha encryption 3des group 5 authentication pre-share lifetime 1600 crypto isakmp key cisco address 192.168.0.1 crypto ipsec transform-set to-remote esp-3des esp-sha-hmac mode tunnel access-list 100 permit host 192.168.0.2 host 192.168.0.1 crypto map remote 10 ipsec-isakmp match address 100 set peer 192.168.0.1 set transform-set to-remote interface f0/0 ip add 192.168.0.2 255.255.255.0 crypto map remote no shut interface f0/1 ip add 172.20.0.1 255.255.255.0 no shut router rip version 2 network 192.168.0.0 network 172.20.0.0
config Router C
enable secret cisco ! no ip domain lookup ip http server ! hostname C crypto isakmp policy 1 hash sha encryption 3des group 5 authentication pre-share lifetime 1600 crypto isakmp key cisco address 192.168.0.1 crypto ipsec transform-set to-remote esp-3des esp-sha-hmac mode tunnel access-list 100 permit host 192.168.0.3 host 192.168.0.1 crypto map remote 10 ipsec-isakmp match address 100 set peer 192.168.0.1 set transform-set to-remote interface f0/0 ip add 192.168.0.3 255.255.255.0 crypto map remote no shut interface f0/1 ip add 172.20.0.2 255.255.255.0 no shut router rip version 2 network 192.168.0.0 network 172.20.0.0
Tests
Nous allons pinger l’interface LAN du central office sur le router B (172.20.0.1), depuis le routeur A. Ensuite, nous allons “shutter” l’interface f0/0 du routeur B, ce qui va faire tomber le tunnel IPsec. DPD va détecter le lien “DOWN” et au bout de 3 fois 10 essais, il va faire monter un nouveau tunnnel IPsec vers le routeur C pour atteindre l’interface F0/1 du routeur B (172.16.0.1).
A#ping 172.20.0.1 rep 100 Type escape sequence to abort. Sending 100, 100-byte ICMP Echos to 172.20.0.1, timeout is 2 seconds: !!!!!!...........!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Success rate is 89 percent (89/100), round-trip min/avg/max = 64/164/324 ms
On fait tomber l’interface WAN du routeur B:
B(config)#int f0/0 B(config-if)#shutdown B(config-if)# *Dec 24 00:40:41.211: %LINK-5-CHANGED: Interface FastEthernet0/0, changed state to administratively down *Dec 24 00:40:41.215: %ENTITY_ALARM-6-INFO: ASSERT INFO Fa0/0 Physical Port Administrative State Down
La crypto est remontée sur le routeur C:
C#sh cry isa sa IPv4 Crypto ISAKMP SA dst src state conn-id slot status 192.168.0.3 192.168.0.1 QM_IDLE 1001 0 ACTIVE
2 Comments
Comments are Disabled
Nice one.
A quand l’article sur NFS/SSO ? ;)
J’y ai pensé mais je n’avais pas réussi à faire marcher SSO avec Dynagen lors de mes quelque tests,
mais étant donnée que tu en parle, je vais essayer de le faire marcher et l’article devrait arriver d’ici quelques jours!