CREACIÓN DE TÚNELES IPSEC CON MIKROTIK

Cada vez es más habitual la descentralización de los centros de trabajo, tanto en empresas de gran tamaño como en pymes y pequeños negocios, y la información, hoy día no puede entenderse de otra manera, debe ser común en todos ellos, al igual que la opción de compartir ciertos recursos hardware, como puede ser el caso de impresoras de red o centrales telefónicas, cada vez más popularizadas en el mundo IP (algún día hablaremos de Asterisk, y sus bondades como PBX).

 

A continuación, vamos a mostrar como, de forma sencilla y con una inversión razonable, se pueden unir diferentes sedes de trabajo para mantener la premisa de interconexión segura. Nos centraremos en los aspectos básicos de la configuración, sin entrar en la capacidad física de los equipos utilizados para encriptar mayor o menor cantidad de datos por unidad de tiempo, cosa que como es obvia, también ha de tenerse en cuenta al dimensionar la solución, pues no es lo mismo encriptar un par de canales de voz que no ocuparán más de 200 kbps en cada sentido de la comunicación (solucionado con pequeñas routerboard de la serie 4xx por ejemplo) que tener que encriptar archivos multimedia o cualquier otra naturaleza con un tamaño de decenas o centenas de megas (solución que necesitaría hardware similar al RB1100AHx2, con capacidad de encriptación vía hardware).

Imaginemos una empresa, con dos sedes (fácilmente podría extenderse a un número mayor de sedes), que desea compartir recursos entre ambas, de forma bidireccional. El esquema de red pudiera ser como el mostrado a continuación:

 

En una breve explicación, veremos qué es cada componente del dibujo.

  • LAN1: es el entorno de red local de la sede 1. Su dominio IP es 192.168.20.0/24 y saldrá al mundo exterior de la sede 1 haciendo NAT-MASQUERADE a través de R1, con IP en el lado LAN 192.168.20.1/24 e IP en el lado público 1.1.1.1/30 (subred P2P para simplificar el entorno de pruebas con R2).
  • LAN2: es la situación homóloga de la sede 2, con dominio IP 192.168.50.0/24, router de salida R2 y las IPs de éste serán, 192.168.50.1/24 y 1.1.1.2/30.
  • RED PÚBLICA: en este caso será algo tan simple como un cable de unión entre ambos equipos del laboratorio, pero en un entorno real sería el conjunto de equipos públicos que llevarían a cabo la comunicación (operadores de internet de ambas sedes, así como todos los routers de tránsito intermedios).

 

OBJTIVO A CONSEGUIR PARA MOSTRAR LA ENCRIPTACIÓN SELECTIVA EN FUNCIÓN DEL ORIGEN Y EL DESTINO:

  • La comunicación entre cualquier elemento de la sede 1 (IPs privadas y pública) contra la IP pública de sede 2 han de estar sin encriptar. Lo mismo debe ocurrir desde sede 2 hasta sede 1.
  • La comunicación entre los entornos LAN1 y LAN2 han de estar encriptados siempre.

Configuración de R1:

 /ip address

add address=192.168.20.1/24 comment=”IP LAN” disabled=no interface=\

“Ether1 – LAN” network=192.168.20.0

add address=1.1.1.1/30 comment=”IP WAN” disabled=no interface=”Ether

network=1.1.1.0

 

/ip firewall nat

add action=accept chain=srcnat disabled=no dst-address=192.168.50.0/24 \

src-address=192.168.20.0/24

add action=masquerade chain=srcnat disabled=no out-interface=”Ether2 – WAN”

 

/interface ipip

add disabled=no dscp=0 local-address=1.1.1.1 mtu=1480 name=”tunel ipsec” \

remote-address=1.1.1.2

 

/ip route

add disabled=no distance=1 dst-address=192.168.50.0/24 gateway=”tunel ipsec” \

scope=30 target-scope=10

 

/ip ipsec peer

add address=1.1.1.2/32 auth-method=pre-shared-key dh-group=modp1024 disabled=no \

dpd-interval=2m dpd-maximum-failures=5 enc-algorithm=3des exchange-mode=\

main generate-policy=no hash-algorithm=md5 lifebytes=0 lifetime=1d \

my-id-user-fqdn=”” nat-traversal=no port=500 proposal-check=obey secret=\

pruebasipsec send-initial-contact=yes

 

/ip ipsec policy

add action=encrypt disabled=no dst-address=192.168.50.0/24 dst-port=any \

ipsec-protocols=esp level=require priority=0 proposal=default protocol=all \

sa-dst-address=1.1.1.2 sa-src-address=1.1.1.1 src-address=192.168.20.0/24 \

src-port=any tunnel=yes

 

/ip ipsec proposal

set [ find default=yes ] auth-algorithms=sha1 disabled=no enc-algorithms=3des \

lifetime=30m name=default pfs-group=modp1024

 

Configuración de R2:

 

/ip address

add address=1.1.1.2/24 comment=”IP WAN” disabled=no interface=”Ether1 – WAN” \

network=1.1.1.0

add address=192.168.50.1/24 comment=”IP LAN” disabled=no interface=\

“Ether2 – LAN” network=192.168.50.0

 

/ip firewall nat

add action=accept chain=srcnat disabled=no dst-address=192.168.20.0 \

src-address=192.168.50.0/24 to-addresses=0.0.0.0

add action=masquerade chain=srcnat disabled=no out-interface=”Ether1 – WAN” \

to-addresses=0.0.0.0

 

/interface ipip

add disabled=no dscp=0 local-address=1.1.1.2 mtu=1480 name=”tunel ipsec” \

remote-address=1.1.1.1

 

/ip route

add disabled=no distance=1 dst-address=192.168.20.0/24 gateway=”tunel ipsec” \

scope=30 target-scope=10

 

/ip ipsec peer

add address=1.1.1.1/32 auth-method=pre-shared-key dh-group=modp1024 disabled=no \

dpd-interval=2m dpd-maximum-failures=5 enc-algorithm=3des exchange-mode=\

main generate-policy=no hash-algorithm=md5 lifebytes=0 lifetime=1d \

my-id-user-fqdn=”” nat-traversal=no port=500 proposal-check=obey secret=\

pruebasipsec send-initial-contact=yes

 

/ip ipsec policy

add action=encrypt disabled=no dst-address=192.168.20.0/24 dst-port=any \

ipsec-protocols=esp level=require priority=0 proposal=default protocol=all \

sa-dst-address=1.1.1.1 sa-src-address=1.1.1.2 src-address=192.168.50.0/24 \

src-port=any tunnel=yes

 

/ip ipsec proposal

set [ find default=yes ] auth-algorithms=sha1 disabled=no enc-algorithms=3des \

lifetime=30m name=default pfs-group=modp1024

Con esta configuración en ambos equipos, ya es posible hacer ping desde cualquier equipo conectado a LAN1 hasta otro conectado en LAN2 y viceversa.

A continuación, ofrecemos unas capturas de tráfico realizadas desde los propios routers R1 o R2 en las cuales se podrá ver la diferencia de cruzar el tráfico con las funciones IPsec habilitadas o no.

Caso A, IPsec deshabilitado: En LAN1 hay un PC conectado con dirección IP 192.168.20.2/24 cursando tráfico hacia escenario de tres formas:

  • Una sesión de Winbox abierta en R2 contra su IP pública (1.1.1.2).
  • Una ráfaga icmp hacia R2 contra su IP pública.
  • Una ráfaga icmp hacia R2 contra su IP privada (192.168.50.1).

 

En la captura de tráfico se pueden diferenciar perfectamente los tres tráficos, sin ningún tipo de encriptación. Además, se puede observar el efecto de crear la interfaz virtual ipip y enrutar por ahí el tráfico entre LAN1 y LAN2, pues así se evita el efecto de enmascaramiento, es decir, el origen de los paquetes icmp es 192.168.20.2 y el destino 192.168.50.1 a diferencia de la sesión Winbox o el icmp contra la IP pública, en las que se puede observar que el origen en 192.168.20.1 se ha enmascarado con 1.1.1.1.

Caso B, IPsec habilitado: el resto de condiciones es exactamente igual al caso anterior.

 

En la captura de tráfico ya no se observa ninguna trama en la que se puedan diferenciar los orígenes y destinos locales de LAN1 y LAN2, si no que todo está ‘oculto’, o mejor dicho, encriptado bajo cabeceras de las IPs públicas cuando el origen y destino son los propios de LAN1 y LAN2 (se observa tipo de tráfico ESP) y en el resto de casos, permanece exactamente igual al caso anterior, sin encriptar y enmascarado con las IPs públicas, respetando el protocolo original, TCP o ICMP, según corresponda.


  • Versión de RouterOS utilizada: 5.22.
  • Este contenido no tiene otro objetivo que intentar ilustrar la idea de interconexión IPsec entre dos sedes y la puesta en marcha de la maqueta en entornos de producción será elección del lector. El autor del artículo no se responsabiliza de ninguna configuración derivada del mismo así como del resultado obtenido por la misma.
  • Se puede obtener más información sobre IPsec y cómo aplicarlo sobre equipos Mikrotik en su wiki.