WireGuard vs OpenVPN: comparativa 2026 y cuál elegir
WireGuard vs OpenVPN: comparativa 2026 y cuál elegir
WireGuard y OpenVPN son las dos opciones más populares para VPN en Linux. Te cuento cuándo conviene cada una, basado en benchmarks reales de 2026 y datos del paper académico de Anyam et al. publicado en MDPI Computers.
TL;DR — Lo que vas a tener al final
- Tiempo de setup: 25-45 minutos para P2P, 1-2 horas para hub-and-spoke.
- Requisitos: Linux con kernel 5.6+, root, IP pública (o PersistentKeepalive).
- Resultado: Túnel cifrado Curve25519/AES-256/Chacha20 con baja latencia.
- Troubleshooting: UDP bloqueado, AllowedIPs mal escrita, `wg show` y `tcpdump` son tus amigos.
Por qué importa la elección de VPN
Una VPN (Virtual Private Network) te permite conectarte a una red privada a través de internet de forma segura. Los casos de uso principales son:
- Acceso remoto: trabajar desde casa, cafetería o viaje como si estuvieras en la oficina.
- Site-to-site: unir redes de oficinas en ciudades distintas a través de internet.
- Proteger tráfico en redes públicas: cifrar tu conexión en WiFi de hotel, café o aeropuerto.
- Bypass de censura: en países con internet restringido.
WireGuard es el protocolo moderno, integrado al kernel Linux desde marzo de 2020. OpenVPN es el veterano, activo desde 2001 con 24 años de madurez en producción. Ambos son buenos, pero diferentes.
Velocidad: WireGuard gana por goleada
WireGuard es consistentemente más rápido que OpenVPN. La diferencia viene del diseño criptográfico: WireGuard usa Curve25519 para el handshake y ChaCha20 para cifrado de datos, algoritmos que son más eficientes en CPUs modernas que RSA+AES que usa OpenVPN.
El paper de Anyam et al. publicado en MDPI Computers en 2025 (citado 18 veces en literatura académica) muestra que WireGuard supera a OpenVPN tanto en latency como en throughput, con menor uso de CPU. Benchmarks independientes de 2025-2026 confirman la tendencia:
| Protocolo | Throughput típico | CPU usage |
|---|---|---|
| WireGuard | 900-950 Mbps (en Gigabit) | Bajo |
| OpenVPN UDP | 600-720 Mbps | Medio |
| OpenVPN TCP | 300-410 Mbps | Alto |
En la práctica: para navegación, SSH y transferencia ocasional de archivos, la diferencia se nota poco. Para mover archivos grandes, hacer streaming 4K sobre VPN o usar la VPN como red primaria entre dos sitios, WireGuard gana claramente.
Código y superficie de ataque
WireGuard tiene aproximadamente 4.000 líneas de código. OpenVPN tiene más de 100.000. Menos código significa menos superficie de ataque y más fácil de auditar formalmente.
WireGuard fue analizado criptográficamente por investigadores de la academia (incluyendo trabajo de Jason Donenfeld, su autor, y verificación independiente). Su diseño minimalista reduce la probabilidad de bugs críticos. OpenVPN es código maduro y battle-tested, pero su tamaño hace que la auditoría completa sea costosa.
Configuración: WireGuard es más simple
Un archivo de configuración WireGuard típico:
# /etc/wireguard/wg0.conf - servidor
[Interface]
PrivateKey = gI6EdUSYvn8ugXOt8QQD6Yc+JyiZi3+KACg/t8MW3HE=
Address = 10.0.0.1/24
ListenPort = 51820
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
[Peer]
PublicKey = HIgo9xNzJMWLKASShiTqIzpRSR8PO4VnbKNV7rLh1zk=
AllowedIPs = 10.0.0.2/32
Eso es todo: 14 líneas para tener un servidor VPN funcional. La configuración del cliente es similar, con la diferencia de que apunta al Endpoint del servidor.
En contraste, OpenVPN necesita archivos más largos con muchas opciones y bloques de certificados embebidos:
# client.ovpn
client
dev tun
proto udp
remote vpn.example.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
auth SHA256
cipher AES-256-GCM
tls-client
key-direction 1
verb 3
<ca>
-----BEGIN CERTIFICATE-----
[contenido del certificado CA, típicamente 20+ líneas]
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
[contenido del certificado del cliente, 20+ líneas]
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
[clave privada del cliente]
-----END PRIVATE KEY-----
</key>
<tls-auth>
[clave TLS auth]
</tls-auth>
OpenVPN requiere infraestructura de PKI (easy-rsa o similar) para generar certificados, revocarlos y distribuirlos. WireGuard funciona con un par de claves pública/privada por peer, generadas con wg genkey y wg pubkey.
Compatibilidad de plataformas
OpenVPN corre prácticamente en cualquier sistema operativo y versión: Windows 7, macOS viejo, Linux antiguo, Android, iOS. La compatibilidad es total y los clientes están disponibles hace años.
WireGuard está disponible en:
- Linux: integrado en el kernel desde 5.6 (marzo 2020), hoy estándar.
- Windows: cliente oficial desde WireGuard 0.4 (septiembre 2021). Funciona en Windows 10 y 11.
- macOS: cliente oficial desde 10.14 (Mojave).
- iOS: app oficial desde iOS 12.
- Android: app oficial desde Android 4.4, ahora en kernel 5.4+ también.
Si tienes clientes con sistemas operativos muy viejos (Windows 7, macOS 10.13, Android pre-4.4), OpenVPN sigue siendo la única opción viable.
Protocolo: UDP vs TCP
WireGuard solo corre sobre UDP. OpenVPN puede correr sobre UDP o TCP.
UDP es más rápido y eficiente, por lo que es la elección por defecto. Pero hay un caso donde TCP sobre UDP no funciona: redes que bloquean UDP (algunos firewalls corporativos, ciertos proveedores de internet en hoteles, redes en China e Irán). En esas redes restrictivas, WireGuard no levanta conexión.
OpenVPN sobre TCP puede usar el puerto 443, lo que hace que el tráfico parezca HTTPS normal y pase por la mayoría de los firewalls. Esta capacidad de stealth es la razón principal por la que OpenVPN sigue siendo relevante en 2026.
Cuándo usar WireGuard
Usa WireGuard cuando:
- Quieres velocidad máxima (tienes 100+ Mbps de conexión).
- El cliente y servidor son Linux modernos o Windows 10+.
- Configuras VPNs simples (sitio-a-sitio, road warrior, acceso remoto).
- Necesitas algo fácil de mantener y debuggear.
- Quieres reducir superficie de ataque (4.000 LOC vs 100.000+).
- Tu red permite UDP.
Cuándo usar OpenVPN
Usa OpenVPN cuando:
- Tienes clientes con sistemas operativos viejos (Windows 7, macOS 10.13, Android 4.3).
- Necesitas pasar por firewalls corporativos restrictivos que bloquean UDP.
- Requieres soporte comercial pagado (OpenVPN Access Server es la versión empresarial).
- Tienes infraestructura legacy que ya usa OpenVPN y migrar no se justifica.
- Necesitas autenticación con certificados X.509 + revocación granular.
Alternativas modernas: Tailscale y Headscale
Vale la pena mencionar Tailscale y su contraparte open source Headscale. Ambos construyen sobre WireGuard y agregan:
- Mesh VPN automático: no configuras peers manualmente, Tailscale descubre nodos y crea túneles entre ellos automáticamente.
- MagicDNS: resolución de nombres entre nodos sin configurar DNS manualmente.
- ACLs centralizadas: control de acceso definido una vez y aplicado a toda la red.
- Coordinador de claves: Tailscale gestiona la distribución de claves públicas.
Si tu caso de uso es road warriors (varios dispositivos conectándose a una red corporativa) o mesh entre varios servidores, Tailscale/Headscale eliminan la configuración manual de peers que es la parte más tediosa de WireGuard puro.
Configurar WireGuard paso a paso
Si decides ir con WireGuard, así se configura en el servidor:
sudo apt update
sudo apt install wireguard
Genera las claves del servidor:
wg genkey | tee /etc/wireguard/private.key
chmod 600 /etc/wireguard/private.key
cat /etc/wireguard/private.key | wg pubkey > /etc/wireguard/public.key
Habilita IP forwarding y configura el firewall:
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
sudo ufw allow 51820/udp
sudo ufw allow OpenSSH
Configura /etc/wireguard/wg0.conf con la clave privada del servidor y la pública del cliente:
# /etc/wireguard/wg0.conf - servidor
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <contenido de /etc/wireguard/private.key>
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
[Peer]
PublicKey = <clave pública del cliente>
AllowedIPs = 10.0.0.2/32
Activa el túnel:
sudo systemctl enable --now wg-quick@wg0
sudo wg show
En el cliente, configura /etc/wireguard/wg0.conf:
# /etc/wireguard/wg0.conf - cliente
[Interface]
Address = 10.0.0.2/24
PrivateKey = <clave privada del cliente>
DNS = 1.1.1.1, 8.8.8.8
[Peer]
PublicKey = <clave pública del servidor>
Endpoint = vpn.example.com:51820
AllowedIPs = 10.0.0.0/24, 0.0.0.0/0
PersistentKeepalive = 25
AllowedIPs = 0.0.0.0/0 en el cliente enruta TODO el tráfico por la VPN (útil para salir a internet desde la IP del servidor). Si solo quieres acceder a la red privada, déjalo solo en 10.0.0.0/24.
Troubleshooting: cuando algo no funciona
El túnel levanta pero no hay tráfico: revisa el firewall del servidor. Las reglas PostUp/PostDown en wg0.conf son necesarias para NAT y forwarding. Verifica con sudo iptables -L -t nat que la regla MASQUERADE esté aplicada.
IP forwarding no persiste: si modificaste /etc/sysctl.conf pero no tomó efecto tras reboot, revisa que /etc/sysctl.d/99-wireguard.conf u otros archivos no estén sobrescribiendo. Usa sysctl net.ipv4.ip_forward para verificar el estado actual.
El cliente se conecta pero pierde paquetes: revisa el MTU. WireGuard es 1420 bytes (porque suma overhead sobre UDP/IP). Si tu red tiene MTU menor (algunos túneles anidados, PPPoE), bajalo manualmente:
[Interface]
MTU = 1280
Cambiaste la clave pública del peer y ahora no conecta: wg syncconf wg0 <(wg-quick strip wg0) recarga la configuración sin tumbar el túnel. Útil para rotación de claves en producción.
Conclusión
Para la mayoría de los casos en 2026, WireGuard es la mejor opción. Es ~3x más rápido, mucho más simple de configurar y mantener, y su superficie de código es 25 veces menor que OpenVPN. El único escenario donde OpenVPN sigue siendo la elección correcta es cuando necesitas TCP sobre puerto 443 (stealth en redes restrictivas) o tienes clientes con sistemas operativos viejos.
Si tienes un servidor Linux moderno y clientes Linux/macOS/Windows 10+, no hay razón para no usar WireGuard. La instalación lleva 10 minutos y la diferencia de performance se nota desde el primer byte.
Si tu caso es road warriors con muchos dispositivos o mesh entre varios sitios, considera Tailscale o Headscale por encima de WireGuard puro: automatizan la gestión de peers y agregan MagicDNS, lo que ahorra horas de configuración manual.
Preguntas frecuentes
¿Por qué WireGuard vs OpenVPN: comparativa 2026 y cuál elegir es relevante para sysadmins Linux?
Forma parte del flujo diario de administración. Los conceptos explicados se aplican directamente a servidores en producción y resuelven problemas reales que enfrentan sysadmins hispanohablantes.
¿Qué necesito para empezar con WireGuard vs OpenVPN: comparativa 2026?
Distribución Linux actualizada (Debian, Ubuntu, RHEL, Fedora o Arch), acceso root, y conexión a internet. Para producción: entorno de staging separado antes de aplicar cambios.
¿Cuáles son los errores más comunes con WireGuard vs OpenVPN: comparativa 2026?
Los tres más frecuentes: (1) saltar la lectura de logs, (2) aplicar cambios directos en producción sin probar, (3) olvidar permisos y ownership. La documentación y un plan de rollback siempre.
¿Cuándo usar WireGuard vs OpenVPN: comparativa 2026 y cuándo una alternativa?
Esta solución es ideal para el caso descrito. Alternativas como Docker, Ansible o configuración manual pueden ser mejores según contexto: portabilidad, escala y reproducibilidad son los factores clave.
¿Cómo migro desde una configuración previa a WireGuard vs OpenVPN: comparativa 2026?
Documentar el estado actual, probar la nueva configuración en staging, validar funcionalmente, y aplicar en producción con rollback plan listo. Los posts de SoyLinux incluyen troubleshooting para los problemas más comunes.
Lee también
- Guía Fedora 44: Novedades, Instalación y Upgrade para Sysadmins Linux
- Configura VLANs en Linux con nmcli: Guía paso a paso para sysadmins
- Protege tu SSH: Guía esencial para configurar Fail2ban en Linux
- Guía Definitiva: Configura Kubernetes con kubeadm en Ubuntu para Sysadmins Linux
- Configura Prometheus y Grafana: Guía DevOps para SysAdmins Linux

Pingback: BGP en el homelab: peering entre sitios con WireGuard en 2026 - Soy Linux