Las VPN se han convertido en una de las herramientas más demandadas y en uno de los pilares de la seguridad frente a las conexiones móviles o WiFi en lugares públicos o desde casa.

El caso es que disponer de un servidor VPN añade un extra de seguridad a tu computadora o dispositivo móvil en el momento de conectarnos a internet, ya sea para enviar archivos o simplemente para mandar mensajes o consultar el correo electrónico.

Una de las soluciones VPN más novedosas es WireGuard, un proyecto de código abierto y gratuito que tiene en mente ofrecer una alternativa rápida, moderna y segura. En definitiva, una alternativa a proyectos ya veteranos como OpenVPN o IPSec.

Sus ingredientes para el éxito: configurable vía SSH y un sistema de criptografía que integra Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24 o HKDF.

WireGuard es multiplataforma, por lo que puedes instalarlo en Windows, macOS y Linux. A continuación veremos cómo adaptar una instalación de Ubuntu para que haga de servidor VPN con WireGuard.

Integrando WireGuard VPN en Ubuntu

En primer lugar, WireGuard VPN se integra en Ubuntu desde su versión 20.04 en su variante Server o Servidor. De ahí que podamos instalarlo fácilmente. La configuración es otra cosa.

Para instalar WireGuard en Ubuntu deberás comprobar que tienes la versión más reciente de este sistema operativo y que las aplicaciones están actualizadas. Para ello, abre el Terminal e introduce las órdenes sudo apt update y sudo apt upgrade. Una vez contamos con Ubuntu 20.04 o superior, instalamos WireGuard con la orden sudo apt Install wireguard.

Ahora nos queda configurar el servidor VPN de WireGuard.

Configurando WireGuard VPN

Primero crearemos las claves pública y privada del servidor de WireGuard. Para ello entraremos en su carpeta correspondiennte con las órdenes sudo -i y luego cd /etc/wireguard. Una vez dentro de esa carpeta, ejecutamos la orden umask 077; wg genkey | tee privatekey | wg pubkey > publickey.

Ahora ya tenemos ambas claves. Podemos verlas con la orden ls -l privatekey publickey y luego las órdenes cat privatekey y cat publickey para ver cada una de las claves.

Segundo paso, actualizar el archivo de configuración wg0.conf. Lo abrimos con la orden sudo nano /etc/wireguard/wg0.conf y añadimos la clave privada en el campo correspondiente “PrivateKey”. También es posible que tengas que indicar la IP de la computadora en la que usas Ubuntu. Para saber cuál es puedes usar varios comandos, como ifconfig.

Último paso, abrir el puerto que aparece en wg0.conf en el cortafuegos UFW. Para ello ejecutamos la orden sudo ufw allow 41194/udp donde 41194 es el puerto que aparece en el archivo wg0.conf.

Iniciando WireGuard VPN

Ahora ya podemos poner en marcha el servidor VPN. Para ello, lanzamos la orden wg-quick up wg0. Si quieres que se inicie cada vez que enciendas tu ordenador con Ubuntu, basta con introducir la orden sudo systemctl enable wg-quick@wg0.

Y para comprobar que funciona, ejecuta la orden sudo wg show.

Configurando el cliente WireGuard VPN

Ya tenemos el servidor en marcha. Ahora toca poner en marcha el cliente. El proceso en Ubuntu es similar a instalar el servidor. Es decir, primero instalas el software con la orden sudo apt install wireguard y luego creamos las claves pública y privada con la orden umask 077; wg genkey | tee privatekey | wg pubkey > publickey.

Ahora creamos el archivo de configuración con la orden sudo nano /etc/wireguard/wg0.conf e introducimos la información que nos pide, como la llave privada del cliente, la IP propia, la llave pública del servidor, etc.

Ahora ya podemos iniciar la conexión entre servidor y cliente con las órdenes sudo systemctl enable wg-quick@wg0, sudo systemctl start wg-quick@wg0 y sudo systemctl status wg-quick@wg0.

Finalmente, para comprobar si servidor y cliente están bien conectados, deberás introducir desde el dispositivo cliente la orden ping -c y la IP del servidor. Luego, la orden sudo wg.