Guía de despliegue

OpenVPN en VPS: instalación, seguridad y resolución

Desplegar en un VPS Cloud →

Tutorial

OpenVPN en VPS: instalación, seguridad y resolución

Seguridad y monitorización8 min de lectura5 pasos

OpenVPN sigue siendo una referencia cuando hay que conectar equipos, proveedores o sedes remotas con perfiles controlados. En un VPS ServOrbit, usted administra el servidor, los certificados y las reglas de acceso sin pasar por un VPN de consumo. Esta guía cubre la instalación completa mediante la vía comunitaria (paquete openvpn + Easy-RSA), la configuración del servidor y los perfiles de cliente, los ajustes de seguridad esenciales y la solución de los errores más frecuentes.

Contenido· ¿Por qué alojar OpenVPN Server en un VPS?1/13
  1. 01¿Por qué alojar OpenVPN Server en un VPS?
  2. 02Lo que puede hacer con OpenVPN Server
  3. 03Requisitos previos: servidor y red
  4. 04Instalar OpenVPN y Easy-RSA (vía comunitaria)
  5. 05Configurar server.conf
  6. 06Túnel completo o split tunneling: elegir el modo correcto
  7. 07Crear y distribuir un perfil .ovpn de cliente
  8. 08Seguridad: fail2ban, ufw y desactivación de IPv6
  9. 09Rendimiento: MTU y elección del cifrado
  10. 10Resolución de problemas: errores frecuentes
  11. 11OpenVPN vs WireGuard: ¿cuál elegir?
  12. 12Un VPS ServOrbit como servidor OpenVPN privado
  13. 13La documentación oficial

¿Por qué alojar OpenVPN Server en un VPS?

Las soluciones VPN comerciales compartidas obligan a confiar en un proveedor externo que puede registrar, revender o exponer sus datos de conexión. Al alojar OpenVPN Server en su propio VPS, usted es el único administrador: elige el nivel de registro, los usuarios autorizados y los protocolos de cifrado (TLS 1.3, AES-256-GCM). Es también la solución ideal para interconectar equipos distribuidos, proteger el acceso a sus servicios internos o sortear las restricciones de red de un entorno corporativo, todo ello con un costo controlado.

Lo que puede hacer con OpenVPN Server

  • Proteger las conexiones de sus colaboradores en teletrabajo con un túnel cifrado hacia su red interna
  • Exponer sus servicios internos (bases de datos, backoffice, herramientas de monitorización) únicamente a través del VPN, sin abrirlos a Internet
  • Interconectar varias sedes u oficinas en una red privada virtual sitio a sitio
  • Proteger sus comunicaciones en redes Wi-Fi públicas o poco fiables
  • Gestionar con precisión los derechos de acceso por usuario gracias al sistema de certificados de OpenVPN
  • Auditar y registrar las conexiones entrantes a su infraestructura desde un punto centralizado y bajo su control

Requisitos previos: servidor y red

Antes de comenzar, verifique estos puntos en su VPS.

Recursos mínimos: 1 vCPU y 512 MB de RAM son suficientes para uso personal o hasta 10 usuarios simultáneos. Por encima de 50 conexiones activas, planifique 2 vCPU y 1 GB de RAM para absorber el cifrado sin degradación del ancho de banda.

Sistema operativo: Ubuntu 22.04 LTS o Debian 12 (ambos compatibles con el repositorio oficial de OpenVPN). AlmaLinux 9 y Rocky Linux 9 también funcionan con los paquetes EPEL.

Puerto de red: UDP 1194 (predeterminado) o TCP 443 para atravesar cortafuegos restrictivos. En su VPS ServOrbit, abra este puerto en las reglas de seguridad antes de iniciar la instalación. Un solo puerto es suficiente.

Acceso root: imprescindible para crear las interfaces de red virtuales (tun0), modificar las reglas iptables y habilitar el reenvío IP.

Reenvío IP: actívelo antes de continuar:

echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
sysctl -p

Instalar OpenVPN y Easy-RSA (vía comunitaria)

  1. Actualizar el sistema e instalar los paquetes

    apt update && apt upgrade -y
    apt install -y openvpn easy-rsa

    Este enfoque no tiene límite de clientes y no requiere ninguna licencia comercial. Easy-RSA gestiona su autoridad de certificación (CA) local.

  2. Inicializar la autoridad de certificación con Easy-RSA

    make-cadir /etc/openvpn/easy-rsa
    cd /etc/openvpn/easy-rsa
    ./easyrsa init-pki
    ./easyrsa build-ca nopass

    build-ca nopass crea la CA sin contraseña — conveniente para producción no interactiva. Para un uso más sensible, retire nopass y almacene la contraseña fuera del servidor.

  3. Generar el certificado del servidor y los parámetros Diffie-Hellman

    ./easyrsa gen-req server nopass
    ./easyrsa sign-req server server
    openssl dhparam -out /etc/openvpn/dh.pem 2048
    openvpn --genkey secret /etc/openvpn/ta.key

    La clave ta.key (TLS Auth) protege contra ataques DoS en el puerto UDP antes incluso del inicio del handshake TLS.

  4. Generar un certificado de cliente

    ./easyrsa gen-req client1 nopass
    ./easyrsa sign-req client client1

    Repita esta operación para cada usuario. El par client1.crt + client1.key + ca.crt + ta.key compone el perfil .ovpn a distribuir.

  5. Copiar los archivos necesarios a /etc/openvpn

    cp pki/ca.crt pki/issued/server.crt pki/private/server.key /etc/openvpn/

    Conserve los archivos pki/private/ con permisos 600: solo deben ser legibles por root.

Configurar server.conf

Cree /etc/openvpn/server.conf con el siguiente contenido.

port 1194
proto udp
dev tun

ca   /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key  /etc/openvpn/server.key
dh   /etc/openvpn/dh.pem

tls-auth /etc/openvpn/ta.key 0
key-direction 0

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist /var/log/openvpn/ipp.txt

push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 9.9.9.9"
push "dhcp-option DNS 149.112.112.112"

keepalive 10 120
cipher AES-256-GCM
tls-version-min 1.2

user nobody
group nogroup
persist-key
persist-tun

status  /var/log/openvpn/openvpn-status.log
log-append /var/log/openvpn/openvpn.log
verb 3

Active e inicie el servicio:

mkdir -p /var/log/openvpn
systemctl enable --now openvpn@server
systemctl status openvpn@server

Túnel completo o split tunneling: elegir el modo correcto

Túnel completo (redirect-gateway def1): todo el tráfico del cliente pasa por el VPN. Útil para proteger a los usuarios en redes no confiables o para unificar las salidas a Internet. Inconveniente: el ancho de banda del VPS se convierte en el cuello de botella para todos los flujos.

Split tunneling: solo el tráfico destinado a su red privada (p. ej. 10.8.0.0/24) pasa por el VPN. El resto sale directamente desde el equipo cliente. Para activarlo, sustituya la línea redirect-gateway por rutas específicas en server.conf:

push "route 192.168.1.0 255.255.255.0"

Esto reduce la carga en el servidor y mejora el rendimiento general, pero las conexiones fuera del VPN ya no estarán protegidas.

Crear y distribuir un perfil .ovpn de cliente

Un archivo .ovpn autónomo incluye todos los certificados. Se genera así:

cat > /tmp/client1.ovpn << EOF
client
dev tun
proto udp
remote <IP-DE-SU-VPS> 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-256-GCM
verb 3
key-direction 1
<ca>
$(cat /etc/openvpn/easy-rsa/pki/ca.crt)
</ca>
<cert>
$(cat /etc/openvpn/easy-rsa/pki/issued/client1.crt)
</cert>
<key>
$(cat /etc/openvpn/easy-rsa/pki/private/client1.key)
</key>
<tls-auth>
$(cat /etc/openvpn/ta.key)
</tls-auth>
EOF

Transfiera este archivo al cliente por un canal seguro (SCP o un enlace de un solo uso). Basta con importarlo en OpenVPN Connect (Windows, macOS, Android, iOS) o NetworkManager (Linux) para establecer la conexión.

Seguridad: fail2ban, ufw y desactivación de IPv6

Cortafuegos ufw — abra solo lo necesario:

ufw allow ssh
ufw allow 1194/udp
ufw enable

Si utiliza TCP 443 en lugar de UDP 1194, adapte la regla.

fail2ban para el puerto OpenVPN:

Cree /etc/fail2ban/jail.d/openvpn.conf:

[openvpn]
enabled  = true
port     = 1194
protocol = udp
filter   = openvpn
logpath  = /var/log/openvpn/openvpn.log
maxretry = 5
bantime  = 3600

Luego cree el filtro /etc/fail2ban/filter.d/openvpn.conf:

[Definition]
failregex = .*TLS Error: TLS key negotiation failed.*<HOST>.*
            .*VERIFY ERROR:.*<HOST>.*

Active:

systemctl restart fail2ban
fail2ban-client status openvpn

Deshabilitar IPv6 si no es necesario: una interfaz IPv6 desprotegida puede eludir su túnel. Si su infraestructura no necesita IPv6:

echo 'net.ipv6.conf.all.disable_ipv6=1' >> /etc/sysctl.conf
echo 'net.ipv6.conf.default.disable_ipv6=1' >> /etc/sysctl.conf
sysctl -p

Rendimiento: MTU y elección del cifrado

MTU y fragmentación: el cifrado de OpenVPN añade cabeceras. Por defecto, la MTU del túnel (tun-mtu) es 1500, pero la encapsulación UDP puede provocar fragmentación en algunas redes. Para evitarlo, añada en server.conf:

tun-mtu 1400
mssfix 1360

Si observa transferencias lentas o cortes en conexiones con MTU baja (redes móviles, algunos VPN corporativos), reduzca tun-mtu a 1300.

Elección del cifrado: se recomienda AES-256-GCM para kernels Linux modernos, que se benefician de las instrucciones hardware AES-NI (verifique con grep -m1 'aes' /proc/cpuinfo). Para servidores muy limitados en CPU, AES-128-GCM divide el costo de cifrado por dos sin reducción significativa de seguridad.

UDP o TCP: UDP 1194 es el modo predeterminado y más eficiente. TCP 443 es útil para atravesar cortafuegos corporativos restrictivos, pero introduce el problema del «TCP sobre TCP» (retransmisiones redundantes) que degrada el rendimiento con pérdida de paquetes.

Resolución de problemas: errores frecuentes

TLS Error: TLS key negotiation failed

Este error aparece cuando el cliente no puede alcanzar el servidor en el puerto configurado. Verifique que el puerto esté abierto (ss -ulnp | grep 1194), que la regla de cortafuegos esté activa y que la clave ta.key sea idéntica en el servidor (key-direction 0) y en el cliente (key-direction 1).

Rutas no aplicadas tras la conexión

Si el tráfico no pasa por el túnel a pesar de una conexión establecida, verifique que el reenvío IP esté activo (cat /proc/sys/net/ipv4/ip_forward debe devolver 1) y que haya una regla NAT:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Sustituya eth0 por la interfaz principal de su VPS (ip route get 8.8.8.8 para identificarla).

Conexiones que se interrumpen regularmente

Si el túnel se desconecta cada 2 minutos, compruebe el keepalive en server.conf (keepalive 10 120: ping cada 10 s, timeout a 120 s). En el lado del cliente, añada ping-restart 60 al perfil .ovpn para forzar una reconexión limpia antes del timeout del servidor.

VERIFY ERROR: depth=0, error=certificate is not yet valid

El reloj del servidor o del cliente no está sincronizado. Sincronice NTP: timedatectl set-ntp true.

OpenVPN vs WireGuard: ¿cuál elegir?

Desplace la tabla

CriterioOpenVPNWireGuard
ProtocoloTLS/SSL (OpenSSL)ChaCha20-Poly1305 (criptografía moderna)
RendimientoBueno, ligeramente más lentoMuy alto, menor latencia
ConfiguraciónArchivos .conf detallados, curva de aprendizajeMás sencillo, pares de claves pública/privada
CompatibilidadTodos los SO, cortafuegos restrictivos (TCP 443)Excelente en Linux, menos universal
Revocación de certificadoCRL integrada, gestión detallada por usuarioSolo eliminar la clave pública
Caso de uso idealEquipos, site-to-site, entornos corporativosAcceso personal, movilidad, rendimiento

Un VPS ServOrbit como servidor OpenVPN privado

Un VPS ServOrbit con acceso root, IPv4 dedicada y elección de SO es la plataforma ideal para un servidor OpenVPN: usted conserva el control total sobre los certificados, los registros y las reglas de acceso. La plantilla OpenVPN Server está disponible en el Marketplace para un inicio rápido, o siga esta guía para una instalación manual completa mediante la vía comunitaria. Para empezar: /vps-cloud.

La documentación oficial

Para la configuración avanzada, las opciones propias de la herramienta y los cambios de versión, consulte la documentación oficial de OpenVPN Community. Esta guía cubre la puesta en línea en un VPS ServOrbit; la documentación del editor sigue siendo la referencia para los ajustes finos.

Despliegue OpenVPN Server en unos minutos en un VPS Cloud ServOrbit

Pida su VPS Cloud, instale OpenVPN Server con 1 clic desde el Marketplace y recupere hoy mismo el control total sobre la seguridad de sus conexiones.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva