Configuración de Wireguard en MikroTik

¿Por qué usar Wireguard?

Wireguard fue diseñado por Jason A. Donenfeld como una alternativa a los túneles VPN ya existentes. Mr Donenfeld tuvo muy claras las premisas para su desarrollo. Debe ser simple y sencillo de usar, con un alto rendimiento, necesita ser criptográficamente seguro, proporcionar una mínima superficie de ataque, y cada detalle y decisión del desarrollo, debe ser considerado y valorado intensamente antes de su aprobación o descarte.

En los sistemas Linux, la solución estándar para los asegurar las comunicaciones de la capa 3 es IPSec. Esto permite el poder proteger protocolos de la capa 4 como TCP y UDP, siendo muy versátil con respecto a los protocolos de capa de aplicación, como SSL y TLS. Puede utilizarse para crear VPN en sus dos modos: transporte y túnel. Es la solución por defecto para la interconexión entre sedes, puesto que está compuesto por un conjunto de RFCs ampliamente testados y sobre los que se sigue trabajando. Combinado con L2TP, nos da la posibilidad de que el concentrador de VPN no tenga que conocer previamente la IP de la conexión remota, por lo que es muy útil para trabajadores itinerantes. Es considerado de uso corporativo.

OpenVPN es otra de las herramientas utilizada para VPN. Creada pensando en todo tipo de usuarios, es una herramienta basada en código libre y usa tanto SSL como TLS para la encriptación. Puede funcionar sobre UDP o sobre TCP multiplexando los túneles SSL creados sobre un solo puerto TCP/UDP. Tiene su propio protocolo de seguridad y no necesita basarse en otras tecnologías como IKE o IPSec. Sin embargo, es bien conocido su problema cuando funciona sobre TCP para establecer el túnel: el rendimiento es aceptable solo mientras haya suficiente exceso de ancho de banda en la red no tunelizada, para así poder garantizar que los timers TCP no expiren. Este fenómeno se conoce como TCP Meltdown.

¿Puedo declarar una vez más mi amor por [WireGuard] y esperar que se fusione pronto? Tal vez el código no sea perfecto, pero lo he ojeado, y comparado con los horrores que son OpenVPN e IPSec, es una obra de arte.

Linus Torvalds, Linux Kernel Mailing List

En definitiva, Wireguard resuelve cantidad de problemas inherentes a las VPN: es fácil de configurar, es estable, es seguro, la conexión se produce rápidamente, el rendimiento es alto…

Descripción

RouterOS soporta una multitud de túneles sin necesidad de licenciamiento adicional: GRE, IPoIP, EoIP y PPP: PPPoE, PPP, PPTP, SSTP, L2TP, OVPN. En el verano de 2020 han añadido soporte para Wireguard en su versión de desarrollo 7.1beta2.

 

wireguard-changelog

 

Descripción del Laboratorio

En este laboratorio, prepararemos un escenario donde podamos unir dos sedes remotas mediante la tecnología Wireguard.

Objetivos de la práctica

  • Conocer el funcionamiento de Wireguard
  • Montar un túnel entre 2 routers
  • Verificar la configuración realizada.

Topología

simple-network

Configuración paso a paso

Antes de comenzar con la configuración, un detalle muy importante a resaltar: estamos trabajando con un sistema operativo que todavía está en fase beta. Esto quiere decir que aún estamos ante una versión en desarrollo que no ha sido lo suficientemente testada, por lo que la recomendación es no utilizarla en entornos críticos.

1. Asignar direcciones IP

R1

[admin@R1] > ip address/ add interface=ether1 address=192.168.1.10/24 disabled=no
[admin@R1] > ip route/add dst-address=0.0.0.0/0 gateway=192.168.1.1

R2

[admin@R2] > ip address/ add interface=ether1 address=192.168.1.11/24 disabled=no
[admin@R2] > ip route/add dst-address=0.0.0.0/0 gateway=192.168.1.1

Es un escenario se ha montado sobre en una red local, por lo que ambos routers compartirán gateway y estableceremos el túnel a través de ella. Será nuestro «internet». Aunque la topología sea sencilla, ahora es el momento de ejecutar un ping y comprobar que los routers responden entre sí.

2. Configurar Wireguard

R1

[admin@R1] > interface/wireguard/add name=wg1 listen-port=56710
[admin@R1] > :put [/interface/wireguard/get 0 public-key]

Con el último comando obtenemos la clave pública generada por R1. La llamaremos CLAVE-PUBLICA-R1. Esta clave la introduciremos a continuación en el peer del R2 entrecomillada » » puesto que al tratarse de una cadena con caracteres especiales, nos puede inducir al error.

R2

[admin@R2] > interface/wireguard/add name=wg1 listen-port=56711
[admin@R2] > interface/wireguard/peers/add interface=wg1 endpoint=192.168.1.10:56710 allowed-address=0.0.0.0/0 public-key="CLAVE-PUBLICA-R1"
[admin@R2] > :put [/interface/wireguard/get 0 public-key]

Hemos creado el peer permitiendo 0.0.0.0/0 (todas las redes) por lo que, dependiendo de la configuración requerida, lo prudente es permitir solo las redes deseadas. Con el último comando obtenemos la clave pública generada por R2. La llamaremos CLAVE-PUBLICA-R2. Esta clave la introduciremos a continuación en el peer del R1 entrecomillada » » puesto que al tratarse de una cadena con caracteres especiales, nos puede inducir al error.

R1

[admin@R1] > interface/wireguard/peers/add interface=wg1 endpoint=192.168.1.11:56711 allowed-address=0.0.0.0/0 public-key="CLAVE-PUBLICA-R2"

Ya tenemos nuestro túnel funcionando. Ahora para probar la conectividad, le asignaremos IP a cada una de las interfaces creadas.

3. Asignar direcciones IP al túnel Wireguard

R1

[admin@R1] > ip address/ add interface=wg1 address=10.0.0.10/24 disabled=no

R2

[admin@R2] > ip address/ add interface=wg1 address=10.0.0.11/24 disabled=no

Con esta sencilla configuración, ya tenemos conectividad en capa 3 sobre el túnel. A partir de aquí, ya podríamos enrutar sobre esta nueva red, proporcionando así conectividad en sedes remotas. Con la configuración planteada, no es muy complicado cambiar los parámetros correspondientes a un escenario en el que los propios MikroTik gestionen las IP públicas.

Recordando nuevamente que estamos ante una versión beta, resaltamos que el escenario ha sido configurado mediante terminal exclusivamente. Mediante Winbox hay ciertos parámetros que aún no son accesibles por lo que es probable que la configuración se genere con errores.

Comprobación

→ Nos aseguramos de la correcta configuración en utilizando la herramienta incorporada al routerOS Bandwidth Test.

winbox-wireguard-bwtest

 

Conclusión

Proporcionar conectividad VPN es una de las múltiples funcionalidades para lo que MikroTik nos ofrece una plataforma sólida. Aunque tradicionalmente ha sido un fabricante muy orientado al sector ISP/WISP, la incorporación de Wireguard es una clara apuesta de la marca para continuar posicionándose en el sector corporativo. Con Wireguard, una compañía puede tanto establecer un servicio multisede como proporcionar acceso a trabajadores remotos o roadwarriors sin tener que depender exclusivamente de IPSec, OpenVPN, etc. En su web podemos encontrar cada uno de los clientes para las diferentes plataformas más usuales.

En el Máster en Arquitectura de Redes de Operadores de Telecomunicaciones, y en las certificaciones oficiales de MikroTik impartidas en loopback0 (MTCNAMTCRE), explicamos en profundidad los diferentes tipos de túneles y VPN, así como sus pros y contras.