Como configurar OpenVPN
www.onlinetis.com
OpenVPN: Un Estándar de Oro en Conexiones Seguras
OpenVPN es una tecnología de código abierto robusta y altamente configurable que se utiliza para crear conexiones seguras a través de redes públicas como Internet. Funciona como un software y como un protocolo de red, permitiendo establecer una Red Privada Virtual (VPN, por sus siglas en inglés). En esencia, crea un "túnel" cifrado para que tus datos viajen de forma segura, protegiéndolos de miradas indiscretas.
¿Cómo Funciona?
Imagina que estás enviando una carta importante. En lugar de enviarla en un sobre normal que cualquiera podría abrir, la metes en una caja fuerte con una combinación única. OpenVPN hace algo similar con tu tráfico de internet. Utiliza protocolos de seguridad como SSL (Secure Sockets Layer) y TLS (Transport Layer Security), los mismos que protegen tus datos cuando navegas por páginas web seguras (las que empiezan con "https" y muestran un candado en el navegador), para cifrar la información que envías y recibes.
Para establecer esta conexión segura, OpenVPN utiliza un modelo cliente-servidor. El software cliente se instala en tu dispositivo (ordenador, smartphone, etc.) y se conecta a un servidor OpenVPN. Una vez establecida la conexión, todo tu tráfico de internet se enruta a través de este servidor, cifrándolo en el proceso.
Características Principales
Seguridad Sólida: Es considerado uno de los protocolos VPN más seguros. Utiliza la biblioteca de criptografía OpenSSL y soporta algoritmos de cifrado potentes como AES (Advanced Encryption Standard). Esto lo hace extremadamente difícil de vulnerar.
Código Abierto (Open Source): Al ser de código abierto, su código fuente está disponible para que cualquiera lo revise. Esta transparencia permite que expertos en seguridad de todo el mundo lo auditen en busca de vulnerabilidades, lo que contribuye a su robustez y fiabilidad.
Alta Flexibilidad y Configuración: OpenVPN es altamente personalizable. Puede funcionar sobre los protocolos de transporte TCP (Protocolo de Control de Transmisión) y UDP (Protocolo de Datagramas de Usuario), lo que le permite adaptarse a diferentes necesidades, ya sea priorizando la fiabilidad (TCP) o la velocidad (UDP).
Capacidad para Superar Cortafuegos: Debido a su flexibilidad, OpenVPN puede configurarse para utilizar puertos de red comunes (como el puerto 443, usado para el tráfico web HTTPS), lo que le permite eludir la mayoría de los cortafuegos y restricciones de red.
Usos Comunes de OpenVPN
OpenVPN se utiliza en una amplia variedad de escenarios, tanto a nivel personal como empresarial:
Teletrabajo y Acceso Remoto Seguro: Permite a los empleados conectarse de forma segura a la red interna de su empresa desde cualquier lugar, como si estuvieran físicamente en la oficina.
Conexión a Redes Wi-Fi Públicas: Al conectarte a una red Wi-Fi pública en un aeropuerto o una cafetería, tus datos son vulnerables. Usar OpenVPN cifra tu conexión, protegiéndote de posibles atacantes en la misma red.
Privacidad en Línea: Oculta tu dirección IP real y cifra tu tráfico, lo que dificulta que tu proveedor de servicios de internet (ISP), los anunciantes o los ciberdelincuentes rastreen tu actividad en línea.
Eludir la Censura y Restricciones Geográficas: Permite acceder a sitios web y servicios que pueden estar bloqueados en tu ubicación geográfica, haciendo que parezca que te conectas desde la ubicación del servidor VPN.
Conexiones Seguras entre Sedes (Site-to-Site): Las empresas con múltiples oficinas pueden utilizar OpenVPN para conectar sus redes de forma segura a través de internet, creando una única red privada virtual.
Configurar OpenVPN implica dos partes principales: instalar y configurar el servidor y luego configurar el dispositivo cliente para que se conecte a él.
La forma más sencilla y recomendada para principiantes es usar un script de instalación automatizado. Sin embargo, a continuación se detalla el proceso manual para un mayor control y comprensión.
Opción 1: El Método Sencillo (Recomendado para principiantes) 🚀
Puedes usar scripts populares y auditados que automatizan todo el proceso de instalación del servidor. Uno de los más conocidos es openvpn-install.
Para usarlo, solo necesitas conectarte a tu servidor (por ejemplo, un VPS con Ubuntu, Debian o CentOS) y ejecutar un único comando:
Bashcurl -O https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh chmod +x openvpn-install.sh ./openvpn-install.sh
El script te guiará con preguntas sencillas (qué dirección IP usar, qué puerto, qué DNS, etc.) y al final generará un archivo de configuración
.ovpn
para tu primer cliente. ¡Es así de fácil!Opción 2: El Método Manual Detallado (Para control total) 🛠️
Este proceso se realiza en un servidor Linux, comúnmente Ubuntu/Debian.
Parte A: Configuración del Servidor 🖥️
El objetivo es instalar OpenVPN, generar los certificados y claves de seguridad, y configurar la red.
1. Instalar OpenVPN y Easy-RSA
Easy-RSA es la herramienta que usaremos para crear nuestra infraestructura de claves públicas (PKI), que es el corazón de la seguridad de la VPN.
Bash# Actualizar repositorios e instalar los paquetes sudo apt update sudo apt install openvpn easy-rsa
2. Preparar el Directorio de Easy-RSA
Vamos a crear un directorio para gestionar nuestros certificados y claves.
Bash# Crear el directorio y enlazar los scripts de easy-rsa mkdir ~/easy-rsa ln -s /usr/share/easy-rsa/* ~/easy-rsa/ chmod 700 ~/easy-rsa cd ~/easy-rsa
3. Crear la Autoridad de Certificación (CA) y las Claves del Servidor
La CA es la entidad que firma y valida la autenticidad de los certificados del servidor y de los clientes.
Bash# 1. Iniciar la PKI (Public Key Infrastructure) ./easyrsa init-pki # 2. Construir la CA (te pedirá una contraseña para la CA y un "Common Name") ./easyrsa build-ca # 3. Generar el certificado y la clave para el servidor # "nopass" es para que el servidor no pida contraseña al iniciarse ./easyrsa gen-req server nopass # 4. Firmar el certificado del servidor con nuestra CA ./easyrsa sign-req server server # 5. Generar los parámetros Diffie-Hellman (tarda unos minutos) ./easyrsa gen-dh # 6. (Opcional pero recomendado) Generar una clave HMAC para mayor seguridad openvpn --genkey --secret pki/ta.key
Al final de este paso, tendrás todos los archivos necesarios en el directorio
~/easy-rsa/pki/
.4. Crear el Archivo de Configuración del Servidor
Crea y edita el archivo de configuración principal de OpenVPN.
Bashsudo nano /etc/openvpn/server.conf
Pega la siguiente configuración base, asegurándote de que las rutas de los archivos (
ca.crt
,server.crt
, etc.) coincidan con las que generaste.Ini, TOMLport 1194 proto udp dev tun # Rutas a los certificados y claves generados ca /home/tu_usuario/easy-rsa/pki/ca.crt cert /home/tu_usuario/easy-rsa/pki/issued/server.crt key /home/tu_usuario/easy-rsa/pki/private/server.key dh /home/tu_usuario/easy-rsa/pki/dh.pem tls-auth /home/tu_usuario/easy-rsa/pki/ta.key 0 # Red virtual para los clientes VPN server 10.8.0.0 255.255.255.0 # Redirigir todo el tráfico del cliente a través de la VPN push "redirect-gateway def1 bypass-dhcp" # Usar los DNS de Google para evitar fugas de DNS push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" # Mantener la conexión activa keepalive 10 120 # Cifrado (Asegúrate de que cliente y servidor usen los mismos) cipher AES-256-GCM auth SHA256 # Bajar privilegios después de iniciar user nobody group nogroup # Asegurar que las claves y el túnel persistan tras reinicios persist-key persist-tun status /var/log/openvpn/openvpn-status.log verb 3
¡Importante! Reemplaza
/home/tu_usuario/
por la ruta real a tu directorio home.5. Configurar el Enrutamiento y el Firewall
Tu servidor necesita permitir el reenvío de paquetes y configurar el firewall para que los clientes VPN puedan salir a Internet.
Bash# 1. Habilitar el reenvío de IP sudo nano /etc/sysctl.conf # Descomenta (quita el #) la siguiente línea: # net.ipv4.ip_forward=1 # Aplica el cambio sin reiniciar: sudo sysctl -p # 2. Configurar el firewall (ejemplo con UFW en Ubuntu) # Averigua tu interfaz de red principal (suele ser eth0) ip route | grep default # Permite el tráfico en el puerto de OpenVPN y SSH sudo ufw allow 1194/udp sudo ufw allow OpenSSH # Configurar el NAT (Network Address Translation) sudo nano /etc/ufw/before.rules # Añade estas líneas al INICIO del archivo, antes de *filter *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT # Activa el firewall sudo ufw enable
6. Iniciar el Servidor OpenVPN
Bash# Iniciar el servicio sudo systemctl start openvpn@server # Habilitar para que inicie automáticamente con el sistema sudo systemctl enable openvpn@server
Parte B: Configuración del Cliente 💻📱
Ahora que el servidor está funcionando, necesitas generar un archivo de configuración para cada dispositivo que quieras conectar.
1. Generar Certificado y Clave para el Cliente
De vuelta en tu servidor, en el directorio
~/easy-rsa
:Bash# 1. Crea la petición para un nuevo cliente (ej: "cliente1") ./easyrsa gen-req cliente1 nopass # 2. Firma la petición con tu CA ./easyrsa sign-req client cliente1
Esto crea los archivos
cliente1.crt
ycliente1.key
.2. Crear el Archivo de Configuración del Cliente (
.ovpn
)Este es el archivo que importarás en tu dispositivo. La mejor práctica es crear un archivo unificado que contenga la configuración y todas las claves.
Crea un archivo de plantilla, por ejemplo
~/client-template.txt
:Ini, TOMLclient dev tun proto udp # Cambia "TU_IP_DE_SERVIDOR" por la IP pública de tu servidor remote TU_IP_DE_SERVIDOR 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server cipher AES-256-GCM auth SHA256 verb 3
Ahora, crea un script para combinar la plantilla con las claves y generar el archivo
.ovpn
final.Bash#!/bin/bash # Script para generar el archivo de configuración unificado # Rutas a los archivos BASE_CONFIG=~/client-template.txt CA_CERT=~/easy-rsa/pki/ca.crt CLIENT_CERT=~/easy-rsa/pki/issued/$1.crt CLIENT_KEY=~/easy-rsa/pki/private/$1.key TLS_AUTH=~/easy-rsa/pki/ta.key # Generar el archivo .ovpn cat ${BASE_CONFIG} \ <(echo -e '<ca>') \ ${CA_CERT} \ <(echo -e '</ca>\n<cert>') \ ${CLIENT_CERT} \ <(echo -e '</cert>\n<key>') \ ${CLIENT_KEY} \ <(echo -e '</key>\n<tls-auth>') \ ${TLS_AUTH} \ <(echo -e '</tls-auth>') \ > ~/$1.ovpn
Guarda este script (ej.
crear_cliente.sh
), dale permisos de ejecución (chmod +x crear_cliente.sh
) y úsalo así:Bash./crear_cliente.sh cliente1
Esto creará el archivo
cliente1.ovpn
en tu directorio home.3. Instalar y Usar el Archivo
.ovpn
Transfiere el archivo
cliente1.ovpn
de tu servidor a tu dispositivo de forma segura (usandoscp
, por ejemplo).Instala el cliente oficial de OpenVPN para tu sistema operativo:
Windows/macOS/Linux: OpenVPN Connect
Android/iOS: Busca "OpenVPN Connect" en la tienda de aplicaciones.
Importa el archivo
.ovpn
en la aplicación y conéctate.
¡Listo! Tu dispositivo ahora se conectará de forma segura a través de tu servidor VPN. 🛡️