Creación de una VPN punto a punto con IPSec
- Javi Huete
- Seguridad
- January 29, 2025
Índice
Este escenario está formado por dos routers Cisco c7200 que comparten una red. Por la otra interfaz, cada uno cuenta con una red privada. Usando el protocolo IPSec se crea un túnel entre ambos routers que permita comunicar las dos redes privadas a través de una VPN.

En primer lugar, se configura el direccionamiento de ambos routers en el escenario.
R1#conf t
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 10.0.0.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#interface fastEthernet 1/0
R1(config-if)#ip address 100.0.0.1 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#end
R1#wr
R2#conf t
R2(config)#interface fastEthernet 0/0
R2(config-if)#ip address 10.0.10.1 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#interface fastEthernet 1/0
R2(config-if)#ip address 100.0.0.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#end
R2#wr
Y se especifica la ruta por defecto de cada uno de ellos para que puedan enrutar el tráfico de una red a otra.
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#ip route 0.0.0.0 0.0.0.0 100.0.0.2
R1(config)#end
R1#wr
R2#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R2(config)#ip route 0.0.0.0 0.0.0.0 100.0.0.1
R2(config)#end
R2#wr
Configuración de los routers Cisco con IPSec
Una vez que el escenario está desplegado correctamente y todas las máquinas tienen conectividad, se puede comenzar a configurar la red virtual VPN. El sistema operativo IOS de los routers Cisco cuenta con las herramientas necesarias para implementar este tipo de redes usando varios métodos como, por ejemplo, el protocolo IPSec. A diferencia de la configuración de las VPN por software, en el caso de los routers Cisco la VPN no se crea editando ningún fichero de configuración, sino que se usan varias órdenes incorporadas al sistema operativo de los dispositivos.
Así, en primer lugar, se crea una política ISAKMP para la fase 1 de la negociación para el túnel IPSec de LAN a LAN entre los dos routers del escenario.
R1(config)#crypto isakmp policy 10
R1(config-isakmp)#encryption aes
R1(config-isakmp)#hash sha
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group 1
R1(config-isakmp)#exit
Después, se especifica una clave simétirca pre-compartida y la dirección IP del otro extremo de la VPN. En este caso la clave es ‘vpnuser’ aunque se recomienda que esta clave sea una cadena más larga de caracteres aleatorios o, incluso, configurarla de forma cifrada con la opción 6
en vez de 0
del comando crypto isakmp key
.
R1(config)#crypto isakmp key 0 vpnuser address 100.0.0.2
El siguiente paso es crear una política de fase 2 para la negociación IPSec.
R1(config)#crypto ipsec transform-set myset esp-aes esp-sha-hmac
R1(cfg-crypto-trans)#exit
A continuación, se crea una ACL para identificar el tráfico que se debe encriptar a través de la VPN. En este caso, el tráfico que circula de la red 10.0.0.0/24 a la 10.0.10.0/24 se encriptará y se enrutará por la VPN al llegar al router R1. En un escenario realista, en el que estos routers también diesen a Internet, el tráfico que no coincidiese con la lista de acceso, por ejemplo, el que circulase hacia cualquier otra dirección IP de Internet, no se encriptaría y saldría del router sin cifrar.
R1(config)#access-list 100 permit ip 10.0.0.0 0.0.0.255 10.0.10.0 0.0.0.255
Con toda esta información, hay que crear un crypto map. En él se indica la dirección IP del otro extremo del túnel, el transform-set que se ha creado previamente y la ACL que define el tráfico que se encripta a través de la VPN.
R1(config)#crypto map mymap 10 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R1(config-crypto-map)#set peer 100.0.0.2
R1(config-crypto-map)#set transform-set myset
R1(config-crypto-map)#match address 100
R1(config-crypto-map)#exit
El último paso, es aplicar el crypto map a la interfaz de salida del tráfico del router.
R1(config)#interface fastEthernet0/1
R1(config-if)#crypto map mymap
*Mar 1 00:18:05.243: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R1(config-if)#end
R1#wr
Esta configuración, se repite en el router R2 modificando las direcciones IP para que correspondan al direccionamiento que se ha configurado en el escenario.
!--- Creación de la política de negociaciones de fase 1 para el túnel
R2(config)#crypto isakmp policy 10
R2(config-isakmp)#encryption aes
R2(config-isakmp)#hash sha
R2(config-isakmp)#authentication pre-share
R2(config-isakmp)#group 1
R2(config-isakmp)#exit
!--- Se indica la contraseña y la IP del otro extremo del túnel
R2(config)#crypto isakmp key 0 vpnuser address 100.0.0.1
!--- Creación de política de fase 2 para la negociación IPSec
R2(config)#crypto ipsec transform-set myset esp-aes esp-sha-hmac
R2(cfg-crypto-trans)#exit
!--- Creación de la ACL para identificar el tráfico que se debe encriptar.
!--- En este caso, se encripta el tráfico que circula desde la red
!--- 10.0.10.0/24 a la red 10.0.0.0/24.
R2(config)#access-list 100 permit ip 10.0.10.0 0.0.0.255 10.0.0.0 0.0.0.255
!--- Creación del crypto map, especificando la IP del otro extremo del túnel,
!--- el transform-set que se debe aplicar al tráfico y la ACL que distingue
!--- el tráfico que se debe encriptar a través del túnel.
R2(config)#crypto map mymap 10 ipsec-isakmp
% NOTE: This new crypto map will remain disabled until a peer
and a valid access list have been configured.
R2(config-crypto-map)#set peer 100.0.0.1
R2(config-crypto-map)#set transform-set myset
R2(config-crypto-map)#match address 100
R2(config-crypto-map)#exit
!--- Aplicar el crypto map a la interfaz de salida del router
R2(config)#interface fastEthernet0/1
R2(config-if)#crypto map mymap
*Mar 1 00:14:04.259: %CRYPTO-6-ISAKMP_ON_OFF: ISAKMP is ON
R2(config-if)#end
R2#wr
Demostración del funcionamiento
Tras configurar la VPN en ambos routers, los equipos de las redes privadas detrás de cada router pueden comunicarse entre sí. Tanto desde el PC1 al PC2.
PC1> ping 10.0.10.1
84 bytes from 10.0.10.1 icmp_seq=1 ttl=254 time=29.694 ms
84 bytes from 10.0.10.1 icmp_seq=2 ttl=254 time=18.364 ms
84 bytes from 10.0.10.1 icmp_seq=3 ttl=254 time=18.856 ms
84 bytes from 10.0.10.1 icmp_seq=4 ttl=254 time=18.179 ms
84 bytes from 10.0.10.1 icmp_seq=5 ttl=254 time=18.028 ms
Como desde el PC2 al PC1.
PC2> ping 10.0.0.2
84 bytes from 10.0.0.2 icmp_seq=1 ttl=62 time=27.434 ms
84 bytes from 10.0.0.2 icmp_seq=2 ttl=62 time=28.782 ms
84 bytes from 10.0.0.2 icmp_seq=3 ttl=62 time=27.554 ms
84 bytes from 10.0.0.2 icmp_seq=4 ttl=62 time=28.702 ms
84 bytes from 10.0.0.2 icmp_seq=5 ttl=62 time=27.058 ms
Analizar la ruta que siguen estos paquetes no aporta mucha información porque, a diferencia de lo que ocurre con las VPN creadas con OpenVPN o WireGuard y a semejanza de lo que ocurre con la VPN configurada con StrongSwan, el tráfico se enruta a través de las interfaces físicas de los routers, con sus IP reales y no usa unas IP asignadas a unas interfaces virtuales creadas para su uso con la VPN.
PC2> trace 10.0.0.2
trace to 10.0.0.2, 8 hops max, press Ctrl+C to stop
1 10.0.10.1 4.803 ms 9.537 ms 10.043 ms
2 100.0.0.1 19.241 ms 20.104 ms 19.980 ms
3 *10.0.0.2 30.040 ms
Sin embargo, al capturar el tráfico de uno de estos ping entre los routers, se puede observar cómo los mensajes que circulan entre las direcciones IP públicas de los routers se muestran con el protocolo ESP (Encapsulating Securty Payload), lo que demuestra que el tráfico está viajando cifrado entre los extremos de la VPN.
