Cómo configurar una VPN IPsec site-to-site entre un router Cisco y un Juniper SRX

Una de las cosas más comunes que me toca hacer como consultor en redes es levantar túneles IPsec entre dos oficinas remotas. Suena simple pero en el 99% de los casos se termina en una batalla de varios días hasta finalmente lograr establecer conectividad entre ambos sitios. En este artículo explicaré como configurar una VPN IPsec de tipo site-to-site entre un router Cisco y un firewall Juniper SRX.

stsciscojuniper
El diagrama muestra la topología base para este caso, pero antes de comenzar con la configuración quisiera explicar un par de puntos importantes que se debe considerar. Los SRX de Juniper, a diferencia de un firewall ASA o uno tradicional, no funcionan en modo stateful, sino que se definen zonas de seguridad. Por defecto la interfaz conectada a Internet se define como “UNTRUST” y la que está conectada en la LAN se define como “TRUST”. Esto permite configurar fácilmente las políticas de seguridad para el tráfico entre una zona y otra.

Tanto en el caso del router Cisco como el SRX debemos definir los siguientes pasos:

  1. Políticas de la fase 1 (IKE/ISAKMP)
  2. Politicas de la fase 2 (IPsec)

En el Juniper crearemos, además, las políticas de seguridad entre las zonas. Por otro lado, en el Cisco debemos definir las ACL de tráfico interesante, el crypto map y las reglas de excepción de NAT.

Configuración del router Cisco

  1. La fase 1 IKE la haremos coincidir con el set de cifrado “Standard” de Juniper.

2. Asignamos una clave de tipo PSK (PreShared-Key) que debe ser idéntica en ambos extremos. La dirección IP corresponde a la IP pública del Juniper

3. Creamos un conjunto de transformación (transform-set) que indica cuales son los algoritmos de seguridad utilizados para cifrar los paquetes IP en la fase IPsec una vez que el túnel esté creado. A este transform-set lo llamaremos TS_JUNIPER

4. Ahora crearemos un crypto map que llamaremos VPN-IPSEC con los datos creados anteriormente, el cual será aplicado a nuestra interfaz de salida (Internet). Debemos indicar la IP pública del otro extremo del túnel, el transform-set que utilizaremos y una ACL para definir el tráfico interesante (ACL-JUNIPER). Adicionalmente configuramos el valor de Perfect Forward Secrecy (PFS) para el grupo 2.

Este crypto map lo aplicamos a la interfaz de Internet (en mi ejemplo, la interfaz GigabitEthernet0/0 es la que tiene la IP pública)

No olviden que solo se puede aplicar un crypto map por interfaz. Por eso deben preocuparse del número de secuencia. En mi caso tengo el número 10, pero si su router ya tiene otros crypto maps aplicados, deberán asignar otro número).

5. Antes de finalizar la configuración del router Cisco debemos definir las ACL de tráfico interesante. Es importante destacar que esta ACL se utilizará para seleccionar el tráfico que venga desde la LAN interna del Cisco y que su destino sea la LAN detrás del Juniper. Además, si nuestro equipo está haciendo NAT (lo más probable), debemos agregar las reglas de excepción para que el tráfico VPN no sea “nateado”. Para este caso asumiré que se está haciendo PAT (con overload) en la interfaz Gi0/0 (ip nat inside source list NAT interface GigabitEthernet 0/0 overload). La regla de excepción debe ser agregada ANTES de cualquier otra.

En otras palabras, la ACL NAT bloquea el tráfico desde la LAN del Cisco hacia la LAN del Juniper para que los paquetes que coincidan no salgan traducidos a Internet y la ACL-JUNIPER va a indicarnos cual es el tráfico que debe pasar por el túnel IPsec.

Configuración del SRX Juniper

Para configurar el otro extremo debemos naturalmente tomar nota de las opciones que incluimos en el router Cisco para que coincidan (claves, cifrado, etc.). Podemos simplificar bastante la tarea de configuración de SRX al usar el mismo asistente que nos ofrece Juniper en su sitio web https://www.juniper.net/support/tools/vpnconfig. Para este ejemplo asumiremos que el SRX es está ubicado en el sitio local y el router Cisco será el dispositivo remoto.

vpn1

  1. En la opción VPN Type crearemos una VPN de tipo enrutada (Route-based). Otra opción son las VPN basadas en políticas pero estas son más frecuentes en VPN de tipo acceso remoto. Los endpoints (el Cisco y SRX) deben tener IP estática en ambos extremos.

vpn2

2. Debemos indicar cuales son las zonas externas e internas del Juniper. Normalmente estas zonas se configuran antes. Mirando la configuración general del equipo podrán ver el nombre de las zonas correspondientes. En mi ejemplo, la interfaz que conecta a Internet que tiene la IP pública (ge-0/0/0.0) está en la zona UNTRUST y la red interna 192.168.100.0/ está en la zona TRUST.
Debemos, además, crear una nueva zona que servirá para identificar el tráfico VPN. En este caso la nombré VPN-JUNIPER-CISCO para diferenciarla del resto de las VPN que puedan existir.
En “Tunnel interface” debemos definir una interfaz de tipo Secure Tunnel (st). Si no existe ninguna otra VPN podemos usar la st0.0.

Este túnel lo podemos definir como numerado o no. Si fuésemos a utilizar GRE+IPsec convendría definir una subred para el túnel, pero en este caso dejaremos la opción “unnumbered”

a3

El siguiente paso es declarar las redes locales y remotas. Desde el punto de vista de Juniper, la red local es 192.168.200.0/24 y la red remota 192.168.100.0/24. Si existiesen más subredes o VLANs en ambos extremos podemos agregarlas también.

a4

En la opción IKE debemos completar los mismos parámetros que llenamos en la fase 1 del router Cisco, de lo contrario no podremos establecer el intercambio de claves entre ambos dispositivos.

Remote Router’s Public: IP: 66.133.1.1

IKE Security Level: Standard (esta opción incluye cifrado 3DES, hash SHA-1, autenticación mediante PSK y Grupo Diffie-Hellman 2; Lo mismo que configuramos en la fase 1 IKE del equipo Cisco)

NAT-T: Esta opción es recomendada habilitarla si existe NAT en ambos lados. En nuestro ejemplo la dejaremos desactivada, pero si la VPN no levanta pueden probar incluyendo la opción en la configuración.

IKE Mode: Main
IKE Version: IKEv1

b1

 

Una vez definida la fase 1 (IKE), debemos definir la fase 2 (IPsec).

IPsec Perfect Forward Secrecy (PFS): Group 2

Establish Tunnels: immediatly

Proxy ID’s Manual Entry: Yes

Remote: 192.168.100.0/24

Local: 192.168.200.0/24

Importante: Esta opción debe coincidir exactamente con la combinación IP/Wildcard definida en la ACL de tráfico interesante en el equipo Cisco remoto (ACL-JUNIPER)

a6

En la pestaña Security Policy simplemente permitiremos cualquier tipo de tráfico en forma bidireccional (esto es, desde nuestra zona VPN-JUNIPER-CISCO hacia TRUST y desde TRUST hacia VPN-JUNIPER-CISCO).

a7

Finalmente definimos algunos parámetros opcionales. Siempre uso la opción de DPD para que el monitoreo del túnel se haga más fácil.
vpn8

Una vez que tenemos lista nuestra configuración, en el costado derecho asignamos un nombre único para que el asistente asigne a cada instrucción. Por defecto viene la opción “cfgr” pero es recomendable cambiarla. Una vez hecho esto, simplemente se debe presionar la opción “INLINE” para que se generen los comandos:

Esta configuración se copia y pega en la línea de comandos de configuración (% -> CLI -> CONF). No se aplicará hasta que se ejecute el comando “commit”.

  • Kendall Dávila

    Excelente post Paulo, muy bien explicado