WireGuard: monta tu propia VPN en 10 minutos
Tiempo de lectura: 8 minutos Categoría: Linux · Ciberseguridad Nivel: Intermedio
Las VPNs comerciales son un negocio basado en la confianza: estás pagando para que otra empresa vea tu tráfico en vez de tu ISP. Si realmente te importa la privacidad, la mejor solución es montar tu propia VPN. Con WireGuard esto es más sencillo de lo que crees.
¿Qué es WireGuard?
WireGuard es un protocolo VPN moderno diseñado con tres objetivos en mente: ser extremadamente sencillo, muy rápido y criptográficamente sólido.
A diferencia de OpenVPN que tiene cientos de miles de líneas de código y una configuración compleja, WireGuard tiene menos de 4000 líneas de código, lo que lo hace mucho más fácil de auditar y mantener. Está integrado directamente en el kernel de Linux desde la versión 5.6, lo que le da un rendimiento excepcional.
En términos prácticos WireGuard es entre 3 y 4 veces más rápido que OpenVPN, establece conexiones en milisegundos, consume menos batería en dispositivos móviles y es significativamente más fácil de configurar.
Casos de uso para tu VPN propia
Tener tu propia VPN te permite acceder de forma segura a tu red doméstica desde cualquier lugar, como si estuvieras físicamente en casa. Puedes acceder a tu servidor Proxmox, tu NAS o cualquier servicio de tu red local mientras estás fuera.
También te permite cifrar tu tráfico cuando uses redes WiFi públicas poco fiables, como las de cafeterías o aeropuertos, sin depender de terceros.
Lo que necesitas
Para montar un servidor WireGuard necesitas un servidor Linux con IP pública. Las opciones más económicas son un VPS en proveedores como Hetzner, que tiene servidores desde 3-4 euros al mes, o DigitalOcean, Vultr o Linode con precios similares.
Si ya tienes una IP pública en casa y tu router permite redirección de puertos, también puedes usar tu propio hardware doméstico como servidor.
Instalar WireGuard en el servidor
En Ubuntu 20.04 o superior WireGuard está en los repositorios oficiales y se instala con apt. En Debian necesitas activar el repositorio backports primero. En Arch Linux está disponible con pacman.
Tras la instalación necesitas generar el par de claves del servidor. WireGuard usa criptografía de curva elíptica y cada peer tiene una clave privada y una clave pública. La clave privada nunca se comparte, la pública sí.
El comando wg genkey genera una clave privada. Para obtener la clave pública correspondiente pasas la clave privada al comando wg pubkey. Guarda ambas en un lugar seguro.
Configurar el servidor
La configuración de WireGuard vive en archivos de texto en el directorio /etc/wireguard. El archivo de configuración del servidor se llama convencionalmente wg0.conf.
La sección Interface define la configuración del servidor: la clave privada que generaste, la dirección IP que tendrá el servidor dentro del túnel VPN (convencionalmente algo como 10.0.0.1/24), y el puerto UDP donde escucha WireGuard (el estándar es 51820).
También en la sección Interface necesitas añadir dos comandos PostUp y PostDown que activan el enrutamiento de tráfico cuando la interfaz sube y baja. Estos comandos usan iptables para hacer NAT y permitir que el tráfico de los clientes salga por la interfaz de red del servidor.
Para cada cliente que quieras conectar añades una sección Peer con la clave pública del cliente y la dirección IP que se le asignará dentro del túnel.
Configurar el cliente
En el dispositivo cliente el proceso es similar. Instalas WireGuard de la misma forma, generas un par de claves, y creas un archivo de configuración.
La sección Interface del cliente tiene su clave privada y su dirección IP dentro del túnel. La sección Peer apunta al servidor con su clave pública, la dirección IP pública del servidor y el puerto, y el parámetro AllowedIPs que define qué tráfico va por el túnel. Si pones 0.0.0.0/0 todo el tráfico va por la VPN. Si pones solo la subred del servidor, solo el tráfico hacia tu red local va por el túnel.
Activar y gestionar la VPN
Para activar la interfaz WireGuard usa el comando wg-quick up seguido del nombre de la interfaz, que coincide con el nombre del archivo de configuración sin la extensión. Para desactivarla usa wg-quick down.
Para que WireGuard arranque automáticamente al iniciar el sistema usa systemctl enable con el servicio wg-quick@ seguido del nombre de la interfaz.
El comando wg show te muestra el estado actual de todas las interfaces WireGuard, incluyendo los peers conectados, cuándo fue la última vez que se vio tráfico y cuántos datos se han transferido.
Añadir clientes móviles
WireGuard tiene aplicaciones oficiales para Android e iOS que puedes descargar gratuitamente. La forma más cómoda de configurarlos es generar un código QR desde el servidor con el comando qrencode aplicado al archivo de configuración del cliente. La app escanea el QR y la configuración queda lista al instante.
Seguridad adicional
Asegúrate de que el firewall de tu servidor solo permite el puerto UDP de WireGuard desde internet, además de SSH. Todo lo demás debería estar bloqueado. Si usas ufw el comando ufw allow con el número de puerto y el protocolo UDP es suficiente.
También es importante hacer backup de las claves privadas. Si pierdes la clave privada del servidor tendrás que regenerar las claves de todos los clientes también.
Conclusión
WireGuard es la opción más sencilla, rápida y moderna para montar tu propia VPN. La configuración inicial lleva menos de una hora y el resultado es una conexión privada que controlas completamente tú, sin depender de ningún proveedor comercial.
Una vez que tienes la VPN funcionando puedes acceder a todos los servicios de tu red doméstica desde cualquier lugar del mundo como si estuvieras en casa.
¿Usas alguna VPN comercial o ya tienes la tuya propia? Cuéntame tu setup en los comentarios.

