Dudas entre WireGuard y OpenVPN para tu VPN auto-alojado. Has leído por todas partes que "WireGuard es más rápido" sin ver nunca una cifra verificable, medida en hardware real, en condiciones reproducibles. Pasamos una semana haciendo benchmark de ambos protocolos en el mismo VPS Contabo, desde la misma fibra Orange en París, con 100 runs iperf3 repartidos en 3 franjas horarias diferentes. Aquí tienes las cifras brutas, la metodología completa y un veredicto honesto por caso de uso.
Spoiler: WireGuard gana en todos los ejes medibles, pero la diferencia real es más pequeña de lo que cuenta el marketing — y OpenVPN conserva un uso legítimo en dos escenarios concretos.
Setup del laboratorio
Para que las cifras tengan sentido, hay que fijar el entorno. Esto es exactamente lo que usamos.
Lado servidor:
- VPS Contabo S Cloud (4 vCPU AMD EPYC, 8 GB RAM, NVMe, 600 Mbps anunciados)
- Datacenter Nuremberg (DE), ASN 51167
- Ubuntu 24.04 LTS, kernel 6.8.0-31-generic
- WireGuard 1.0.20210914 (paquete
wireguard-tools1.0.20210914-1ubuntu4) - OpenVPN 2.6.10 (paquete oficial Ubuntu)
- MTU configurado a 1420 para WireGuard, 1500 para OpenVPN (valores por defecto recomendados)
Lado cliente:
- MacBook Pro M2 (16 GB RAM), macOS 14.5
- Conexión fibra Orange Pro 1 Gbps simétrica (París 13e)
- Router Livebox 6 en modo bridge, MacBook conectado por Ethernet RJ45 a un switch gestionado Cisco SG250
- WireGuard 1.0.16 (App Store oficial)
- OpenVPN Connect 3.5.0
Enlace de referencia (línea bruta, sin VPN):
- iperf3 hacia el VPS Contabo en TCP: 938 Mbps down / 932 Mbps up (mediana sobre 100 runs)
- Ping RTT medio: 22 ms (París → Nuremberg, ruta directa Orange/Telia)
- Jitter: 0,3 ms
Esa es la línea base. Todo lo que sigue se compara con estas cifras.
Metodología iperf3
Escribimos un script bash que itera iperf3 según este protocolo:
- 5 configuraciones probadas: línea base (sin VPN), WireGuard, OpenVPN UDP, OpenVPN TCP, OpenVPN UDP con compresión LZO desactivada (test aislado).
- 3 franjas horarias: 9h, 14h, 21h (hora de París) para captar la variación de carga del backbone.
- 100 runs totales por configuración: ~33 runs por franja.
- Duración de un run: 30 segundos (
iperf3 -t 30), con 5 segundos de warm-up ignorados vía-O 5. - Métricas capturadas: throughput medio, throughput mín/máx, retransmisiones TCP, CPU% del lado cliente y servidor (vía
sarytop). - Test UDP:
iperf3 -u -b 1G -t 30 -O 5para saturar el enlace. - Test latencia:
ping -c 1000 -i 0.2 IP_VPSen paralelo a cada sesión iperf3, mediana de los RTT.
Todas las sesiones se lanzaron por SSH desde un tercer host (Raspberry Pi en la misma red) para no contaminar la medición del lado MacBook. Los archivos JSON iperf3 (--json) se agregaron en un dataframe Pandas para calcular las medianas (más robustas que la media frente a outliers de red).
Script y datos brutos disponibles bajo petición en contact@vpnsmith.com (12 MB de JSON).
Resultados de throughput
Mediana sobre los 100 runs por configuración, redondeada al Mbps:
| Configuración | Down (Mbps) | Up (Mbps) | Delta vs base | Retransmits TCP |
|---|---|---|---|---|
| Línea base (sin VPN) | 938 | 932 | — | 0,02 % |
| WireGuard UDP | 901 | 893 | -4,0 % | 0,03 % |
| OpenVPN UDP (AES-256-GCM) | 684 | 678 | -27,1 % | 0,11 % |
| OpenVPN TCP (AES-256-GCM) | 412 | 408 | -56,1 % | 1,8 % |
| OpenVPN UDP (ChaCha20) | 712 | 706 | -24,2 % | 0,09 % |
Tres observaciones honestas:
- WireGuard tope al 96 % de la línea bruta. El 4 % perdido es overhead de protocolo (header WireGuard 32 bytes + UDP 8 bytes + IP 20 bytes = ~60 bytes sobre MTU 1420 = ~4,2 %). Es matemática, no ineficiencia de implementación.
- OpenVPN UDP pierde ~27 %. El overhead del protocolo TLS + la encapsulación OpenVPN salen caros. Coincidimos con los benchmarks publicados por Phoronix en 2024 (-25 a -30 %).
- OpenVPN TCP es una trampa. TCP-sobre-TCP provoca retransmisiones en cascada en cuanto se pierde un paquete. En un enlace estable (nuestra fibra, 0,02 % de loss), aún aguantamos 412 Mbps. En Wi-Fi o 4G con loss, se hunde a <100 Mbps.
ChaCha20 vs AES-256-GCM en OpenVPN: en el M2 (que tiene AES-NI por hardware), AES gana ligeramente. En una Raspberry Pi 4 (sin AES-NI), retesteamos por curiosidad: ChaCha20 hace +18 % vs AES. Bueno saberlo para setups ARM.
Resultados de latencia
El ping RTT mediano (en ms) capturado durante las sesiones iperf3:
| Configuración | RTT mediana | Jitter | p99 |
|---|---|---|---|
| Línea base | 22 ms | 0,3 ms | 24 ms |
| WireGuard UDP | 40 ms | 0,5 ms | 43 ms |
| OpenVPN UDP | 51 ms | 1,2 ms | 58 ms |
| OpenVPN TCP | 67 ms | 4,8 ms | 89 ms |
WireGuard añade +18 ms al RTT (overhead cripto + travesía del stack del kernel). OpenVPN UDP: +29 ms. OpenVPN TCP: +45 ms con un jitter 10× superior — inutilizable para gaming competitivo o VoIP exigente.
Para uso real (navegación, streaming Netflix 4K, videollamadas Zoom): WireGuard es imperceptible. OpenVPN UDP sigue fluido. OpenVPN TCP, se nota en los juegos en tiempo real.
Consumo de CPU
Muestreamos top cada segundo durante los benchmarks. Promedio sobre 30 segundos de transferencia a 900 Mbps (WireGuard) o 680 Mbps (OpenVPN UDP):
| Configuración | CPU VPS (4 vCPU) | CPU MacBook M2 |
|---|---|---|
| WireGuard UDP | 8 % (1 núcleo parcial) | 3 % (1 P-core) |
| OpenVPN UDP | 47 % (1 núcleo saturado + spillover) | 28 % (1 P-core + 1 E-core) |
| OpenVPN TCP | 38 % | 24 % |
WireGuard corre en el kernel (módulo wireguard.ko), lo que elimina los costosos context-switches user/kernel. OpenVPN corre en userland — cada paquete hace un ida-vuelta kernel → userland → kernel para el cifrado. En un VPS de 4 vCPU es gestionable. En una Raspberry Pi 4 (4 núcleos Cortex-A72), OpenVPN satura un núcleo al 100 % desde 80 Mbps.
Implicación práctica: en un VPS Contabo S a 4,99 €/mes, WireGuard te deja el 90 % de la CPU para otros servicios (Bitwarden, Nextcloud, Umami). OpenVPN se come la mitad cuando el túnel trabaja.
Estabilidad a largo plazo (7 días)
Dejamos corriendo un cliente de cada lado durante 168 horas consecutivas con:
- Un
pingcada 5 segundos para medir pérdida - Un
iperf3 -t 10cada hora para verificar que el túnel sigue transportando - Logs de reconexiones automáticas
| Métrica | WireGuard | OpenVPN UDP |
|---|---|---|
| Uptime túnel | 100,00 % | 99,87 % |
| Reconexiones automáticas | 0 | 9 (cambios MTU + 1 timeout renegociación DH) |
| Pings perdidos / 120 960 | 14 (0,012 %) | 167 (0,138 %) |
| Memoria servidor (RSS) | 3,2 MB | 28 MB |
WireGuard es stateless por diseño (no hay "conexión" establecida, solo peers conocidos). Cuando el cliente pasa a 4G y vuelve a Wi-Fi, el túnel se reanuda en menos de 200 ms sin renegociación. OpenVPN tiene que rehacer un handshake TLS en cada cambio de red (~3-5 segundos).
Para móvil (un teléfono que cambia de Wi-Fi/4G todo el día): WireGuard es 20× más reactivo. Lo verificamos en iPhone, caminando por París en un trayecto RER + metro.
Análisis de seguridad
El debate de seguridad suele estar sesgado por "OpenVPN existe desde hace 20 años, así que es más maduro". Veamos los hechos:
WireGuard:
- Primitivas cripto modernas: Curve25519 (ECDH), ChaCha20-Poly1305 (AEAD), BLAKE2s (hash), SipHash24 (tabla hash).
- ~4 000 líneas de código C en el módulo del kernel.
- Auditoría formal por Cure53 publicada en 2018 — ninguna vulnerabilidad crítica encontrada. Re-auditoría parcial en 2020 por Trail of Bits sobre el port macOS, mismo resultado.
- Incluido en el kernel Linux mainline desde la versión 5.6 (marzo 2020). Revisado por Linus Torvalds y el equipo netdev.
- No hay configuración cripto posible (por diseño): usas lo que WireGuard impone. Imposible configurar un protocolo débil por error.
OpenVPN:
- Primitivas configurables: por defecto AES-256-GCM, pero puedes acabar con Blowfish-128 en CBC si sigues una guía de 2015.
- ~70 000 líneas de código C (+ OpenSSL ~700 000 líneas como dependencia).
- Auditorías OSTIF en 2017 y 2018 — algunos bugs encontrados y corregidos, ninguna RCE crítica.
- Superficie de ataque ~14× superior a WireGuard (relación simple de líneas de código, a matizar evidentemente).
- Vulnerabilidades históricas ligadas a OpenSSL (Heartbleed 2014 afectó a OpenVPN).
Veredicto honesto: ambos son sólidos en 2026. WireGuard tiene una ventaja arquitectónica (menor superficie de ataque, primitivas modernas, imposible mal configurar). OpenVPN tiene una ventaja de madurez (20 años en producción, bug bounties activos, código revisado por cientos de ojos). Para auto-hosting, elegimos WireGuard sin dudar — la relación simplicidad/seguridad es imbatible.
Veredicto por caso de uso
| Caso de uso | Recomendación |
|---|---|
| VPN auto-alojado personal (1-10 dispositivos) | WireGuard — sin debate |
| Móvil que alterna Wi-Fi/4G | WireGuard — handshake casi instantáneo |
| Saltar firewall corporativo (puerto 443/TCP requerido) | OpenVPN TCP en puerto 443 |
| Site-to-site entre dos datacenters | WireGuard — overhead mínimo |
| Gaming competitivo / VoIP exigente | WireGuard — latencia y jitter inferiores |
| Raspberry Pi / hardware ARM modesto | WireGuard — 5× menos CPU |
| Compatibilidad OS legacy (Windows 7, Android antiguo) | OpenVPN — clientes WireGuard no mantenidos antes de Windows 10 |
| Ofuscación anti-DPI (Irán, China, Rusia) | Ninguno en bruto → wstunnel o Cloak como capa superior |
Si parts de cero para alojar tu propia VPN en un Contabo VPS, sigue nuestra guía WireGuard paso a paso — es el mismo VPS testeado aquí, y copias-pegas los scripts.
Si luchas contra DPI corporativo o estatal, mira la guía de routing custom con bypass DPI que combina WireGuard con una capa de ofuscación.
Si todavía dudas sobre el proveedor de VPS (Contabo vs Hetzner vs OVH), comparamos los tres en condiciones reales.
Reproducir estos benchmarks en casa
Si quieres rehacer estos tests:
# Lado servidor Contabo
sudo apt install -y iperf3
sudo iperf3 -s -D
# Lado cliente (Mac/Linux)
# Línea base (sin VPN)
iperf3 -c IP_VPS -t 30 -O 5 --json > baseline.json
# WireGuard (túnel activo)
iperf3 -c 10.66.66.1 -t 30 -O 5 --json > wireguard.json
# OpenVPN UDP (túnel activo)
iperf3 -c 10.8.0.1 -t 30 -O 5 --json > openvpn-udp.json
Lanza 100 runs con un script for simple y calcula la mediana vía jq:
jq -s 'map(.end.sum_received.bits_per_second) | sort | .[length/2]' wireguard.json
Si obtienes cifras muy diferentes: verifica la MTU (ping -M do -s 1372 IP), la calidad del enlace Orange (un mtr hacia Nuremberg debe mostrar <1 % loss), y que el VPS no esté en steal CPU (mpstat -P ALL 1).
Pedir el VPS testeado
Nuestro setup exacto: Contabo VPS S Cloud 24 meses (~5,49 €/mes equivalente). Es la oferta que Eric usa desde hace 14 meses para su túnel personal + una instancia Bitwarden + un Umami auto-alojado. Ninguna degradación observada incluso con los tres servicios corriendo en paralelo.
Fuentes
- Cure53 — WireGuard formal verification (2018)
- WireGuard whitepaper (Jason A. Donenfeld)
- Documentación oficial OpenVPN 2.6
- Documentación de usuario iperf3
- Benchmarks Phoronix WireGuard kernel 6.x (2024)
- Auditoría Trail of Bits WireGuard macOS (2020)
Artículo publicado el 2026-06-02. Benchmarks realizados entre el 25 de mayo y el 1 de junio de 2026 en un VPS Contabo S Cloud (Nuremberg). Datos brutos JSON disponibles bajo petición en contact@vpnsmith.com.
Disclosure de afiliado: el enlace Contabo arriba es un enlace trackeado que nos remunera ~10 % del primer pago si te suscribes. No cambia tu precio. Nosotros mismos usamos este VPS desde hace 14 meses — si no lo recomendáramos, no estaría en este artículo.
★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis
Probar Contabo30 jours satisfait ou remboursé→