El mercado de las VPN sigue dominado por el estándar IPSec / L2TP, que existe desde la década de 1990. Desde entonces, la tecnología se ha hecho omnipresente, pero algunos proveedores de VPN han estado estudiando la próxima generación de tecnología VPN, que promete ser más rápida y segura. Una de estas empresas, WireGuard, afirma haber creado el futuro de las VPN.
¿En qué consiste? El protocolo WireGuard es uno de los últimos que ha creado un revuelo en el mercado de las VPN. La tecnología de código abierto fue creada por Jason A. Donenfeld, que ha pasado a ser el director de tecnología de una empresa llamada Edge VPN.
En pocas palabras, WireGuard es un nuevo protocolo de VPN. No se trata de un software, sino de un conjunto de instrucciones que permite crear VPNs de forma muy sencilla. Ha sido desarrollada como una alternativa a IPsec, OpenVPN y similares VPNs, pero más rápida y sencilla de usar. En esencia, WireGuard está basado en ideas del protocolo IPsec.
WireGuard es una VPN extremadamente simple, pero rápida y moderna que utiliza criptografía de última generación. Su objetivo es ser más rápido, más simple, y más versátil que IPSec, evitando al mismo tiempo el enorme dolor de cabeza (sobre todo en redes con NAT). Pretende ser considerablemente más eficaz que OpenVPN. WireGuard está diseñado como una VPN de propósito general para ejecutarse en interfaces embebidas, apto para muchas circunstancias diferentes. Se ejecuta sobre el protocolo UDP, por lo tanto es considerado un túnel de capa 3.
¿Cómo funciona Wireguard VPN?
WireGuard es un protocolo P2P, esto significa que en vez de requerir un servidor, WireGuard tiene la capacidad de abrir un túnel entre dos dispositivos, solo es necesario aplicar determinadas configuraciones para el establecimiento.
La forma de establecer las conexiones es muy similar al túnel del tipo SSH, los usuarios necesitan generar claves públicas con WireGuard e intercambiarlas, es la forma que tiene WireGuard de identificar a los peers de VPN, encriptar los datos y al mismo tiempo verificar que es el destinatario correcto.
Además del tipo de configuración criptográfica, es necesario configurar las redes, con esto queremos decir que se necesita configurar rangos y direcciones IP, esto es necesario porque WireGuard verifica que los paquetes provengan de redes permitidas, en caso de que así no sea, descartaría el paquete, eso es otro punto de su seguridad.
En lo que se refiere a la criptografía, WireGuard implementa aplicaciones modernas como Curve 25519, ChaCha20, Poly1305 más BLAKE2 y SipHash2-4. Lo que la hace muy segura y flexible.
Wireguard genera una nueva interfaz (como eth0, wlan1).
En el momento que un dispositivo tiene que enviar los datos a de A hacia B, lo primero que verifica es que el dispositivo al que se quiere comunicar pertenezca a la red de WireGuard, en caso de que no pertenezca, descarta el paquete, en caso de que pertenezca realizara el siguiente procedimiento:
1) Se cifra el paquete con una clave pública de origen.
2) Se envía el paquete por una dirección IP, host y puerto.
3) Cuando el destino recibe el paquete (cifrado con la clave pública del servidor) solo lo tiene que descifrar con su clave privada.
4) Por último verifica que quien se lo envió es un dispositivo autorizado, caso contrario, descarta el paquete.
De esta forma, podríamos analizar, que cuando enviemos paquetes WireGuard, las direcciones IP funcionan como una tabla de enrutamiento, y cuando los recibimos, funciona como una access list o lista de acceso de direcciones permitidas.
Wireguard vs IPSEC vs OpenVPN
Además de las principales diferencias sobre seguridad y claves respecto a IPSEC u OpenVPN, WireGuard, cuenta con diferencias en relación con velocidad, latencia y roaming.
A lo que se refiere al Roaming, WireGuard se basa en la red del dispositivo configurada del lado del servidor, en cualquier VPN actual, en el momento que se desconecta la red, debemos establecer el túnel nuevamente, por ejemplo, si estamos conectados a un túnel IPSEC vía Wifi y la conexión se cambia a LTE o 4G, debemos establecer el túnel nuevamente, con WireGuard podremos mantener la conexión aunque cambie la dirección IP de la WAN.
Velocidad y latencia en WireGuard VPN.
WireGuard, tiene mejoras en su velocidad y latencia en comparación con OpenVPN e IPSEC. Dado que utiliza una criptografía más rápida y se ejecuta dentro del kernel de Linux, WireGuard puede transferir datos más rápido que otros protocolos e incluso bajar su latencia.
Tanto OpenVPN como WireGuard son de código abierto, tienen muy pocas vulnerabilidades y requerirán archivos de configuración adicionales para configurar en la mayoría de los dispositivos. La diferencia es que WireGuard utiliza bibliotecas criptográficas mucho más avanzadas y es mucho más eficientes.
WireGuard Vs OpenVPN vs IPSEC en relación a su velocidad.
WireGuard comparativa latencia.
Este es un gran punto a favor, porque podríamos ejecutar servicios a través de un túnel Wireguard con requisitos de baja latencia, como VOIP, streaming e incluso videojuegos.
Configurar WireGuard con Mikrotik
Mikrotik tiene soporte para las VPNs WireGuard a partir de su versión 7.1beta2, por lo tanto, al estar funcionado en versiones beta, no es recomendable su uso en entornos de producción. Actualmente, en la fecha de publicación de este artículo, la versión beta actual es: 7.1beta6.
En esta configuración realizamos la conexión entre dos Routerboards Mikrotik, pero se podría establecer la conexión con un cliente final como un ordenar o móvil, a través de distintas aplicaciones que compartiremos en los últimos enlaces de este artículo.
Configurando el servidor WireGuard con Mikrotik
Vamos a comenzar instalando unos de los puntos P2P, llamaremos «servidor» este lado del túnel. Recordemos que se necesitan versión 7.1beta2 como mínimo para que esta configuración funcione.
Clic en + para crear el túnel.
Solo debemos hacer un clic en «Apply» para que se generen las llaves públicas y privadas del servidor.
Llaves públicas y privadas creadas.
Configuración de las redes del servidor
Hemos asignado dos direcciones IP para distintas interfaces, tomaremos que la interfaz Ether2 será nuestra WAN y luego la interfaz Wireguard1 es la interfaz que se configuró al crear el túnel, asignaremos direcciones IP a cada una de las interfaces de este laboratorio. En un entorno real, la interfaz WAN quizás tome una dirección IP desde un cliente DHCP.
Creación del cliente WireGuard
Realizaremos los mismos pasos que hemos hecho anteriormente cuando creamos el servidor. Ir a la opción WireGuard y hacer clic en + para crear el servidor, dejaremos los mismos puertos y haremos clic en «Apply» para que se generen las llaves como la imagen a continuación:
Al crear un nuevo túnel del lado del cliente, se crean nuevas llaves públicas y privadas.
Creación de las redes en el lado cliente.
Al igual que en el servidor, asignaremos direcciones IP al router cliente.
Creando los Peers
Ya hemos creado los túneles en el servidor y el cliente, también hemos asignado direcciones IPs. Solo nos resta crear los peers para que se establezca la comunicación en el túnel. Las llaves públicas tanto del servidor o del cliente las tenemos ni bien creamos el túnel, en ese momento se crean las llaves públicas y privadas.
Para esta configuración de peers entonces, se necesitara completar la llave pública del servidor en el lado cliente y la llave publica cliente, en el lado servidor. Lo veremos en las siguientes imágenes.
Peers del servidor
Peers del cliente
Aquí debemos ingresar los datos del servidor y la llave pública.
Verificación del funcionamiento.
Ya hemos configurado el túnel con sus redes y respectivas llaves, solo nos queda ver si realmente está establecido, para esto, solo necesitaremos hacer un ping a la dirección IP del túnel remoto, en la interfaz Wireguard.
Como podemos observar, tenemos respuesta, por lo tanto, confirmamos el túnel está establecido y funcionando, una prueba adicional es cambiar algún valor en la llave, las redes permitidas o el endpoint y observaríamos que dejamos de tener respuesta al ping.
¿Es posible conectar un dispositivo final al túnel WireGuard?
La respuesta es sí. Podríamos conectar un dispositivo como un ordenador o un móvil a este túnel, solo necesitamos las aplicaciones específicas, según el sistema operativo.
Desde el siguiente enlace podremos descargarlas para todos los sistemas operativos.
Descarga del cliente WireGuard.
¿Es necesario realizar algún cambio adicional en nuestro router Mikrotik?
En caso de que se conecte un móvil, una tablet o un ordenador a nuestro túnel WireGuard con Mikrotik, hay que tener en cuenta la redes admitidas. Si observamos en las configuraciones anteriores, existe un campo que completamos con el valor 0.0.0.0/0, ese campo es «Allowedd Address» que se encuentra en la sección de peers.
Ese campo indica las redes o direcciones IP autenticadas a través de nuestro túnel P2P. WireGuard funciona encriptando los datos, basados en redes e IP, eso es lo que llaman Cryptokey Routing Table.
En la configuración del cliente, cuando la interfaz de red desea enviar un paquete a su único peer (el servidor), cifrará los paquetes para el único peer con cualquier dirección IP de destino (ya que 0.0.0.0/0 indica todas las redes). Por ejemplo, si se le pide a la interfaz de red que envíe un paquete con cualquier IP de destino, lo cifrará utilizando la clave pública del único peer y luego lo enviará al endpoint.
En la configuración del cliente, su único peer (el servidor) podrá enviar paquetes a la interfaz de red con cualquier IP de origen (ya que 0.0.0.0/0 son todas las redes). Por ejemplo, cuando se recibe un paquete de un punto y se descifra y además se autentica correctamente, con cualquier IP de origen, entonces se permite la entrada a la interfaz; de lo contrario, se descarta el paquete.
Entonces, con esta configuración, cuando el servidor recibe un paquete con una dirección IP de origen, debería coincidir con su lista de direcciones admitidas, por lo tanto si dejamos la red configurada con la dirección 0.0.0.0/0 como dirección admitida, mientras se tenga su llave pública, podrá unirse a la red y el paquete no se descartaría. Aunque es recomendable configurar las redes admitidas, ya que tendríamos un control sobre quien puede establecer conexiones y quien no.
Notas finales.
WireGuard es un túnel con mayor rapidez y baja latencia en comparación con OpenVPN e IPSEC, su configuración es mucho más simple que IPSEC, por lo tanto un administrador también se beneficiaría de esta tecnología, solo es necesario saber la dirección IP, redes e interfaces y de esta forma sabríamos que el paquete es seguro, sin complicadas configuraciones en un firewall.