Creación de una VPN punto a punto con IPSec

Í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.

comments powered by Disqus

Relacionados

Introducción a Openstack Client

OpenStack es una herramienta de infraestructura como servicio que puede gestionarse desde la línea de comandos a través de su cliente.

Leer

Creación de un escenario con varios contenedores con docker compose

Para implantar una aplicación nextcloud en un contenedor docker conectada a otro contenedor con una base de datos MariaDB se puede usar un fichero docker compose para configurar el escenario.

Leer

Guía básica de configuración de Nginx

En este post se recoge una guía básica del uso del servidor web Nginx a partir de un supuesto práctico.

Leer