WireGuard es un protocolo VPN moderno integrado en el kernel de Linux desde la versión 5.6. Comparado con OpenVPN, es mucho más sencillo de configurar, más rápido y tiene una superficie de ataque considerablemente menor (~4.000 líneas de código frente a ~100.000 de OpenVPN).

¿Prefieres OpenVPN? Consulta Cómo configurar un servidor y cliente OpenVPN en Linux.

Cómo funciona WireGuard

WireGuard usa pares de claves pública/privada — similar a las claves SSH. Cada nodo (servidor o cliente) tiene su propio par de claves. Añades la clave pública de un nodo a tu configuración y WireGuard se encarga del resto. No hay certificados, no hay CA, no hay listas de revocación.

Instalar WireGuard

Debian / Ubuntu (kernel 5.6+, instalaciones actuales):

sudo apt install wireguard

RHEL / Fedora / Rocky Linux:

sudo dnf install wireguard-tools

Configuración del servidor

1. Generar las claves del servidor

wg genkey | tee servidor_privada.key | wg pubkey > servidor_publica.key

Mantén servidor_privada.key en secreto. Compartirás servidor_publica.key con los clientes.

2. Crear la configuración del servidor

Crea /etc/wireguard/wg0.conf:

[Interface]
Address    = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <contenido de servidor_privada.key>

# Habilitar enrutamiento — reenviar todo el tráfico del cliente
PostUp   = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Reemplaza eth0 con la interfaz de red pública de tu servidor (verifica con ip link show).

3. Habilitar el reenvío de IP

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

4. Iniciar WireGuard

sudo systemctl enable --now wg-quick@wg0
sudo systemctl status wg-quick@wg0

Configuración del cliente

1. Generar las claves del cliente

Ejecuta esto en el equipo cliente:

wg genkey | tee cliente_privada.key | wg pubkey > cliente_publica.key

2. Añadir el cliente como peer en el servidor

Agrega al final de /etc/wireguard/wg0.conf en el servidor:

[Peer]
PublicKey  = <contenido de cliente_publica.key>
AllowedIPs = 10.0.0.2/32

Recarga la configuración del servidor sin interrumpir conexiones existentes:

sudo wg syncconf wg0 <(wg-quick strip wg0)

3. Crear la configuración del cliente

Crea /etc/wireguard/wg0.conf en el cliente:

[Interface]
Address    = 10.0.0.2/24
PrivateKey = <contenido de cliente_privada.key>
DNS        = 1.1.1.1

[Peer]
PublicKey  = <contenido de servidor_publica.key>
Endpoint   = 12.34.56.78:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
  • AllowedIPs = 0.0.0.0/0 enruta todo el tráfico a través de la VPN
  • PersistentKeepalive = 25 mantiene el túnel activo a través de NAT

4. Iniciar el cliente

sudo systemctl enable --now wg-quick@wg0

Verificar la conexión

En el servidor, comprueba los peers conectados y el tráfico:

sudo wg show

En el cliente, verifica que tu IP pública haya cambiado:

curl ifconfig.me

Agregar más clientes

Repite los pasos del cliente para cada nuevo dispositivo. Genera un nuevo par de claves, asigna una nueva IP (10.0.0.3/32, 10.0.0.4/32, etc.) y añade un bloque [Peer] a la configuración del servidor.

WireGuard vs OpenVPN

WireGuard OpenVPN
Configuración Par de claves simple PKI con CA y certificados
Velocidad Muy rápido (nivel kernel) Más lento (espacio de usuario)
Tamaño del código ~4.000 líneas ~100.000 líneas
Integración en kernel Integrado (Linux 5.6+) Módulo o espacio de usuario
Soporte móvil Excelente (apps oficiales) Bueno
Historial de auditorías Auditado en 2017 Largo historial
Mejor para La mayoría de nuevas instalaciones PKI empresarial compleja

Véase también