Este tutorial está diseñado para guiar a quienes desean aprender más acerca de WireGuard. Es ideal para un nivel avanzado.
WireGuard es una VPN extremadamente simple, rápida y moderna que utiliza criptografía de última generación. Integrado directamente en el kernel de Linux (a partir de la versión 5.6), está diseñado como una alternativa de alto rendimiento a IPsec y OpenVPN, ofreciendo conexiones seguras, configuraciones minimalistas y un consumo de recursos ínfimo.
Instalar el paquete de WireGuard, generar llaves criptográficas y levantar una interfaz virtual (wg0) en Debian/Ubuntu.
# 1. Instalar WireGuard en Debian/Ubuntu
sudo apt update && sudo apt install -y wireguard
# 2. Generar el par de llaves privadas y públicas (con permisos restringidos)
umask 077
wg genkey | tee privatekey | wg pubkey > publickey
# 3. Crear el archivo de configuración en /etc/wireguard/wg0.conf
sudo nano /etc/wireguard/wg0.conf
# Contenido básico de /etc/wireguard/wg0.conf:
# [Interface]
# Address = 10.0.0.1/24
# SaveConfig = true
# PrivateKey = <Contenido_de_privatekey>
# ListenPort = 51820
# 4. Levantar el túnel VPN usando la utilidad wg-quick
sudo wg-quick up wg0
Resultado:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.1/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
Familiarizarse con estos comandos es esencial para interactuar eficientemente con WireGuard:
wg genkey | tee privatekey | wg pubkey > publickey
sudo wg show
sudo wg-quick up wg0
sudo wg-quick down wg0
sudo systemctl enable --now wg-quick@wg0
Comprender estos conceptos fundamentales te ayudará a dominar WireGuard de forma más organizada y eficiente:
Enrutamiento por Clave Criptográfica:
WireGuard asocia llaves públicas de clientes con sus respectivas IPs internas dentro del túnel (AllowedIPs). El servidor enruta paquetes basándose en este mapa de claves y direcciones.
Ejecución en Espacio de Kernel:
Se ejecuta nativamente en el kernel de Linux. Al evitar la transferencia de paquetes entre el espacio de kernel y de usuario, reduce la latencia a mínimos históricos y mejora drásticamente el rendimiento.
Concepto de Silencio (Silent):
El protocolo no responde a paquetes que no contengan una clave pública válida o no estén autenticados correctamente. Si un puerto es escaneado, parecerá cerrado (modo sigiloso).
Algunos ejemplos de aplicaciones prácticas donde se utiliza WireGuard:
Túnel de Acceso Seguro (Road Warrior):
Permite a dispositivos móviles, tablets o laptops conectarse a una red local remota o navegar de forma segura a través de la IP residencial de su hogar.
Interconexión de Servidores (Site-to-Site):
Crear túneles privados y permanentes entre servidores situados en diferentes nubes públicas (AWS, GCP, etc.) o centros de datos físicos.
Navegación segura en Redes Públicas:
Proteger el tráfico de internet mediante cifrado fuerte al conectarse desde redes Wi-Fi abiertas e inseguras (aeropuertos, cafeterías).
Aquí tienes algunas recomendaciones para facilitar tus inicios en WireGuard:
Habilitar IP Forwarding en el Servidor:
Para redirigir tráfico a través del servidor, activa el reenvío de paquetes en Linux. Descomenta "net.ipv4.ip_forward=1" en /etc/sysctl.conf y ejecuta "sudo sysctl -p".
Enrutamiento NAT (Masquerade) con PostUp/PostDown:
Permite a los clientes salir a internet a través del servidor añadiendo reglas iptables al levantar la interfaz: "PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE".
Mantener conexiones abiertas (PersistentKeepalive):
Si los clientes están detrás de firewalls NAT domésticos, define "PersistentKeepalive = 25" en sus secciones [Peer] para evitar que el router cierre el canal inactivo.
Si te interesa WireGuard, también podrías explorar estas herramientas:
Amplía tus conocimientos con estos enlaces y materiales:
Continúa aprendiendo con estos contenidos relacionados: