WireGuard - Instalando un servidor VPN con Docker

VPN Server
Photo by Privecstasy / Unsplash

Hoy en día para nadie es un secreto los bondades que nos da estar siempre conectados a Internet, sin embargo también conlleva sus riesgos. Por eso hoy vamos a hablar de VPN's y su uso en el día a día, quizá para algunos con el trabajo remoto conocen el uso de las VPN's para ambientes empresariales, con el fin de garantizar el acceso a recursos de red privados de la compañía de forma segura. Sin embargo cada vez son más populares soluciones de VPN para usuario final que les permita agregar una capa de seguridad cuando están viajando, o cuando necesitan conectarse a una red pública o poco segura, como las de un aeropuerto, cafetería, restaurante, hotel, etc.

Si llegaste a este post es muy seguro que sepas que es una VPN, sin embargo para los que no, VPN es la sigla para "Virtual Private Network" (Red Privada Virtual en español), y nos sirve para permitir de forma segura que un dispositivo navegue dentro de una red privada. Esto se traduce en que sin importar el servicio de Internet que uses se crea un túnel cifrado entre tu dispositivo y el servidor VPN garantizando que tu navegación es segura.

How VPNs affect Internet speed

Teniendo en cuenta lo anterior los servicios de VPN se han popularizado mucho para asegurar transacciones electrónicas, navegar en redes públicas y hasta para poder ver contenido de streaming (Netflix, Disney+, etc) de otras regiones. Por mencionar algunos de dichos servicios conocidos tenemos por ejemplo: SurfShark, NordVPN, CyberGhost, entre otros.

Pero volviendo a nuestro articulo de hoy, quiero hablar de WireGuard, WireGuard es una aplicación de Software Libre y Open Source, que permite proporcionar servicio de VPN de forma fácil y altamente efectiva sobre servidores Linux.

En ese orden de ideas, quiero mostrarles como implementé WireGuard usando Docker:

Como en los laboratorios anteriores solo debemos crear un directorio para el ejemplo puede llamarse "wireguard", dentro pondremos el archivo "docker-compose.yml" y finalmente bastará con ejecutar: docker-compose up.

De esta manera ya tendremos el servicio de VPN esperando peticiones por el puerto 51820 o el que hayamos definido en las variables de entorno.

Ahora como lo usamos? bueno primero hay que validar donde lo estamos instalando si es una maquina virtual en la nube, se debe configurar en los permisos de firewall para que se acepte el tráfico entrante por el puerto 51820/UDP. Si lo estoy haciendo en mi red domestica pueden seguir la guía que hicimos en Cómo exponer nuestro servidor Raspberry Pi 4 a Internet?

Ya con el servicio expuesto ahora la forma más fácil y util es conectar nuestro teléfono movil usando la aplicacion WireGuard (Android o iOS).

Algunos de mis casos de uso:

Actualmente cuento con 2 instancias de WireGuard una en mi Servidor Raspberry y otra en una máquina virtual en GCP (Google Cloud Platform).

  • Acceder a mis aplicaciones bancarias cuando me encuentro en una red no segura.
  • Acceder a servicios que solo están disponibles en Colombia, cuando estoy fuera del país.
  • Hacer compras o transacciones cuando estoy fuera de casa.
  • Acceder a dispositivos de mi red local cuando estoy fuera de casa.
  • Con la instancia en Google Cloud conectarme a servicios como si estuviera en Estados Unidos, útil para validar precios de tiquetes aéreos o usar servicios de streaming.

Y así llegamos al final, nos vemos en el próximo post.