WireGuard o OpenVPN: cuál conviene alojar tú mismo
WireGuard gana en velocidad, tamaño de configuración y superficie de auditoría. Conoce las 4 situaciones concretas en las que OpenVPN sigue siendo mejor opción.
La respuesta breve
WireGuard frente a OpenVPN, para una persona que ejecuta un servidor VPN en su propio VPS, no es una comparación reñida: elige WireGuard. Es más pequeño, se ejecuta dentro del kernel de Linux, se conecta en una fracción de segundo y la configuración funcional de un cliente tiene unas diez líneas. OpenVPN conserva cuatro funciones reales. Si ninguna es necesaria en tu caso, no lo necesitas.
Esas cuatro funciones son salir de una red que solo permite el puerto TCP 443, integrarse con una autoridad certificadora existente, autenticar a usuarios identificados con una contraseña o un segundo factor y crear un puente en la Layer 2. Todo lo que sigue demuestra esta recomendación y señala el punto exacto en el que cada excepción empieza a aplicarse a tu caso.
Por qué WireGuard se impuso entre quienes administran sus propios servidores
El código es lo bastante pequeño como para leerlo. El proyecto WireGuard sitúa la implementación de su protocolo en aproximadamente 4,000 líneas de código. OpenVPN alcanza seis cifras cuando se cuenta la biblioteca OpenSSL de la que depende para cada operación criptográfica. El tamaño importa porque cada línea amplía la superficie de ataque, y ni usted ni quien revise el código van a leer 100,000 líneas. Podrían leer 4,000.
Se ejecuta en el kernel. WireGuard forma parte del kernel principal de Linux desde 5.6, por lo que Ubuntu 24.04 y Debian 13 lo incluyen sin necesidad de compilar nada. Los paquetes se cifran donde ya se encuentran, en el espacio del kernel, sin copiarlos a un proceso del espacio de usuario y de vuelta. Compruébelo antes que nada:
sudo modprobe wireguard && echo okEn un VPS KVM muestra ok. En la virtualización mediante contenedores que comparte el kernel del host, como OpenVZ o LXC, falla con Operation not supported, porque no se puede cargar un módulo en un kernel que no es suyo.
No hay nada que negociar. WireGuard tiene un único conjunto de cifrado fijo: ChaCha20-Poly1305 para los datos, con claves Curve25519. No hay ninguna versión que degradar ni ninguna opción que configurar incorrectamente. OpenVPN negocia el cifrado y la versión de TLS (seguridad de la capa de transporte) con cada cliente. Esto proporciona flexibilidad, pero también es una fuente de configuraciones incorrectas. Un servidor configurado con data-ciphers AES-256-GCM:AES-128-CBC volverá sin problemas al cifrado CBC para un cliente que no ofrezca nada mejor, y nada del registro indicará que eso es un problema.
El puerto no responde. Un paquete de WireGuard que no supera la comprobación de autenticación del mensaje se descarta sin ninguna respuesta, por lo que nmap -sU -p 51820 devuelve open|filtered tanto si hay algo escuchando como si no. Un servidor OpenVPN en modo TCP completa el protocolo de enlace TCP antes de decidir que no permite la conexión. Esto basta para demostrarle a un escáner que hay algo presente. OpenVPN sobre UDP con tls-crypt es casi igual de silencioso, por lo que este argumento se aplica a ejecutar OpenVPN sobre TCP, no a OpenVPN en sí.
El roaming no requiere configuración adicional. Un par de WireGuard se identifica mediante su clave pública, no mediante su dirección. Su portátil cambia de la red doméstica a un punto de acceso móvil, envía un handshake desde la nueva dirección y el servidor actualiza el endpoint al que responde. No se establece ninguna reconexión porque nunca hubo una conexión persistente. OpenVPN puede hacer algo similar con float, pero normalmente el cliente cierra y vuelve a establecer una sesión TLS completa. Por eso la pausa al abrir la tapa es perceptible en OpenVPN y no en WireGuard.
Velocidad en 2026: la diferencia se ha reducido
Durante años, el argumento válido sobre la velocidad era que OpenVPN copiaba cada paquete al espacio de usuario, lo cifraba allí y lo copiaba de vuelta, mientras que WireGuard nunca salía del kernel. Ese ya no es todo el panorama. Una comparación que ignore este cambio está desactualizada.
OpenVPN 2.7 se lanzó en febrero de 2026 con compatibilidad con el módulo de kernel ovpn, que se integró en Linux 6.16. Esto es DCO (descarga del canal de datos): el canal de control permanece en el espacio de usuario y la ruta de datos principal pasa al kernel. Es aproximadamente lo mismo que WireGuard ha hecho siempre. Con un kernel y una versión de OpenVPN suficientemente recientes para usarlo, el rendimiento está en la misma categoría, no en una distinta. Comprueba lo que tienes realmente:
uname -r
openvpn --version | head -n 1
modinfo ovpn 2>/dev/null | head -n 3En julio de 2026, una instalación estándar de Ubuntu 24.04 LTS incluye OpenVPN 2.6, no 2.7, y el módulo ovpn requiere la versión 2.7. En esa versión, solo obtienes la descarga mediante el paquete antiguo openvpn-dco-dkms, que compila un módulo externo contra el kernel en ejecución y, por tanto, se recompila con cada actualización del kernel. Es un componente adicional que WireGuard no necesita.
Lee las condiciones de DCO antes de considerarlo un motivo para seguir usando OpenVPN. Solo admite túneles de capa 3. Solo acepta cifrados AEAD (cifrado autenticado con datos asociados: AES-GCM o ChaCha20-Poly1305). No admite compresión. En un servidor, solo funciona con topology subnet. Cada una de estas restricciones elimina parte de la flexibilidad que originalmente justificaba OpenVPN. Un OpenVPN rápido es un OpenVPN configurado para parecerse a WireGuard.
No confíes en las cifras de rendimiento publicadas por nadie, incluida esta página. En una VPS, el límite suele ser la capacidad de CPU o de red, no el protocolo. Mide tu propio rendimiento con iperf3 ejecutándose a través del túnel y, después, fuera de él. Compara ambos resultados.
Cuándo OpenVPN sigue siendo útil
Necesita salir por el puerto TCP 443. WireGuard solo usa UDP, de forma deliberada, y no tendrá un modo TCP. Una red de hotel o un proxy corporativo que solo permita TCP 443 dejará pasar OpenVPN configurado con proto tcp-server y port 443, porque ese tráfico parece una sesión TLS normal. WireGuard necesita un envoltorio como wstunnel o udp2raw para atravesar la misma red. Esto añade otro proceso que ejecutar y mantener actualizado. Tenga en cuenta el conflicto: si un servidor web ya ocupa TCP 443 en esa dirección IP, uno de los dos tendrá que cambiar de puerto.
Ya administra una autoridad de certificación. OpenVPN se autentica mediante certificados X.509, por lo que se integra en una PKI (infraestructura de clave pública) que ya administra. Los certificados caducan automáticamente. Puede revocar uno añadiéndolo a una lista de revocación de certificados que el servidor lee mediante crl-verify. WireGuard no usa certificados, caducidad ni listas de revocación. Para eliminar un peer, debe editar la configuración del servidor y volver a cargarla. Con diez peers, esto es suficiente. Con cuatrocientos y un requisito de auditoría, el modelo de certificados realiza una función importante.
Necesita usuarios identificados, no solo claves. OpenVPN puede delegar la autenticación en un sistema externo mediante auth-user-pass-verify o un plugin como openvpn-plugin-auth-pam.so. Así puede añadir LDAP o un segundo factor basado en una contraseña de un solo uso. WireGuard no tiene el concepto de usuario. Una clave está en la configuración o no lo está. Si el requisito es que "Sara debe introducir un código de su teléfono", WireGuard no puede expresarlo por sí solo.
Necesita Layer 2 o un cliente para algún sistema antiguo. OpenVPN con dev tap puentea tramas Ethernet. Esto es importante para los protocolos de difusión y para los juegos LAN antiguos. WireGuard solo funciona en Layer 3 y seguirá siendo así. OpenVPN también tiene clientes para hardware y sistemas operativos que nunca tendrán una aplicación de WireGuard. Ambos son motivos cada vez menos frecuentes, y dev tap es incompatible con DCO. Por tanto, el puente utiliza la ruta más lenta.
El coste real de las dos configuraciones
Una identidad de WireGuard se crea con un comando. Los paréntesis son importantes porque establecen los permisos del archivo antes de crear la clave:
(umask 077; wg genkey > private.key)
wg pubkey < private.key > public.keyEl equivalente en OpenVPN es una autoridad de certificación que ahora debes administrar durante toda la vida de la VPN:
sudo apt install -y easy-rsa
make-cadir ~/openvpn-ca
cd ~/openvpn-ca
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign-req server serverNinguna de las dos listas es injusta. La autoridad de certificación permite establecer la caducidad y revocar certificados, pero te obliga a proteger una clave privada durante años, recordar las renovaciones y reconstruir la infraestructura si la pierdes. Si no utilizas esas funciones, pagas por nada. El procedimiento completo de WireGuard, incluido el reenvío, NAT (traducción de direcciones de red) y los errores de handshake que pueden hacerte perder una tarde, está en la guía para alojar tu propia VPN de WireGuard en tu VPS.
Qué necesita cada uno de tu firewall
WireGuard necesita exactamente una regla de entrada para UDP en el puerto de ListenPort:
sudo ufw allow 51820/udp
sudo ufw status verboseOpenVPN necesita UDP 1194 de forma predeterminada, o TCP 443 si elegiste esa opción. Después, ambos necesitan que el reenvío de IP esté habilitado y una regla de NAT de origen, porque un sistema Linux descarta los paquetes que no están dirigidos a él. Esta parte es idéntica para los dos protocolos y es el origen de la mayoría de los informes de que «el túnel se conecta, pero no hay Internet». Si no conoces ufw, empieza por los conceptos básicos del firewall ufw en un VPS y recuerda que la mayoría de los proveedores ejecutan un segundo firewall de red en su panel de control: una regla que agregues en el servidor no sirve de nada si el paquete nunca llega al servidor. Entender qué es un puerto y cómo Linux escucha en uno hace que ambas comprobaciones sean más rápidas.
Cómo elegir, en un párrafo
Ejecuta WireGuard, salvo que puedas indicar la función específica que no puede proporcionarte. Si necesitas TCP 443 para atravesar una red restrictiva, ejecuta OpenVPN en ese puerto y considera ejecutar ambos: usan puertos diferentes y coexisten en un mismo servidor sin conflictos. Si necesitas cuentas por usuario o un segundo factor, no intentes forzar a WireGuard a proporcionarlos. Añade una capa de identidad por encima. Un servidor de control Headscale autohospedado usa WireGuard internamente y añade el modelo de cuentas, la distribución de claves y la aprobación de dispositivos que WireGuard sin configuración adicional deja bajo tu responsabilidad.
Migración desde OpenVPN sin interrupciones
No existe una conversión. La PKI de OpenVPN no se convierte en claves de WireGuard, porque WireGuard no tiene certificados que convertir. Cada cliente obtiene un par de claves nuevo, generado de la misma forma que el del servidor.
Realice la migración en paralelo en lugar de cambiar de un servicio a otro. WireGuard en UDP 51820 y OpenVPN en 1194 pueden ejecutarse al mismo tiempo en el mismo equipo. Por tanto, active wg0, compruébelo con sudo wg show mostrando un latest handshake reciente y, después, migre los clientes uno por uno. Cuando la lista de peers de OpenVPN deje de cambiar, detenga el servicio con sudo systemctl disable --now openvpn-server@server. Conserve los archivos de la CA hasta estar seguro, porque no es posible reconstruir un cliente revocado usando una CA que haya eliminado.
Hay un elemento que realmente no se conserva: las cuentas con nombre de usuario y contraseña, junto con el historial de revocaciones asociado. Decida dónde se almacenará antes de apagar el servidor antiguo, no después.
FAQ
¿WireGuard es más rápido que OpenVPN?
En un servidor Ubuntu 24.04 estándar, sí, y por un margen amplio, porque WireGuard cifra los datos en el kernel, mientras que OpenVPN 2.6 mueve cada paquete mediante un proceso en el espacio de usuario. Con OpenVPN 2.7 y el módulo del kernel ovpn de Linux 6.16, la ruta de datos también está en el kernel y ambos pertenecen a la misma categoría. Mida su propio rendimiento con iperf3 a través del túnel en lugar de confiar en una cifra de un blog, porque en un VPS el límite suele ser la CPU o el ancho de banda asignado.
¿Puede WireGuard funcionar mediante el puerto TCP 443?
No por sí solo. WireGuard usa únicamente UDP por diseño y no está previsto añadir un modo TCP. Para atravesar una red que solo permite TCP 443, debe encapsularlo en un túnel como wstunnel o udp2raw, lo que añade un proceso que debe ejecutar y mantener actualizado en ambos extremos. Si esa restricción forma parte de su entorno de trabajo habitual, OpenVPN con proto tcp-server y port 443 es la opción más sencilla.
¿OpenVPN es inseguro actualmente?
No. Una versión actual de OpenVPN con un cifrado AEAD como AES-256-GCM y tls-crypt habilitado es una VPN segura. El argumento a favor de WireGuard se basa en otro aspecto: OpenVPN incluye mucho más código y muchas más opciones, por lo que ofrece a un administrador cansado muchas más formas de configurarlo mal. Menos opciones significa menos configuraciones incorrectas.
¿Cuál debería elegir para una VPN personal en un VPS?
WireGuard. Un par de claves por dispositivo, un archivo de configuración de unas diez líneas, un puerto UDP abierto y un handshake que termina antes de que note que ha comenzado. Elija OpenVPN solo si se conecta habitualmente desde redes que bloquean UDP o si debe integrarse con una autoridad de certificación o un directorio de usuarios que ya existe.