Despliega tu propia VPN virtualizada: Qué es, cómo funciona y guía paso a paso

oct. 15, 2024

Hoy en día, sobre todo con el teletrabajo, las empresas requieren soluciones seguras y eficientes para conectar oficinas remotas, trabajadores móviles y redes internas. Una de las herramientas más utilizadas para este propósito es la **VPN ** (Red Privada Virtual), que permite a las organizaciones establecer conexiones cifradas y protegidas sobre Internet. En este artículo, exploraremos los fundamentos de una VPN, cómo funciona en un entorno empresarial y, finalmente, mostraremos cómo desplegar tu propia VPN en un servidor autogestionado utilizando Docker, facilitando así la gestión y mantenimiento de la infraestructura de red.

¿Qué es una VPN?

Una VPN (Virtual Private Network) es una solución tecnológica que permite a las empresas y particulares crear conexiones seguras y cifradas entre dispositivos remotos y la red interna a través de Internet. Originalmente diseñada para conectar de forma segura oficinas remotas con redes privadas internas, la VPN ha evolucionado como una herramienta clave en las infraestructuras actuales.

En el ámbito empresarial, una VPN se utiliza para permitir que empleados remotos accedan a los recursos de la red interna de manera segura desde cualquier parte del mundo. Además, ofrece una manera efectiva de unificar redes distribuidas, permitiendo a las empresas ampliar su infraestructura sin comprometer la seguridad.

¿Cómo funciona una VPN?

Una VPN actúa como un intermediario entre tu dispositivo y la red a la que deseas conectarte. En lugar de enviar tu tráfico directamente a través de Internet, tu dispositivo establece una conexión cifrada con un servidor VPN, que se encarga de reenviar tu tráfico a su destino final. Este proceso se conoce como “túnel VPN” y es el responsable de proteger tu información durante el trayecto.

Los protocolos de cifrado más comunes utilizados en una VPN son OpenVPN y WireGuard. Ambos protocolos son seguros y ampliamente utilizados, pero difieren en su enfoque y rendimiento. OpenVPN es un protocolo maduro y estable, mientras que WireGuard es más moderno y eficiente, pero aún en desarrollo. La elección de uno u otro dependerá de tus necesidades y preferencias.

Casos de uso de una VPN en empresas

Las VPN son una herramienta crucial para empresas de todos los tamaños, ya que facilitan la conectividad segura y remota. Algunos de los casos de uso más comunes en el ámbito empresarial son:

  • Conectividad entre oficinas y empleados remotos: Las empresas con múltiples sucursales o empleados trabajando desde casa pueden utilizar VPNs para crear un entorno de red unificado y seguro.
  • Acceso remoto a recursos internos: Permite a los empleados acceder de forma segura a servidores, bases de datos o herramientas internas desde cualquier lugar del mundo, asegurando la productividad sin comprometer la seguridad.
  • Protección en conexiones remotas: Los empleados que viajan o trabajan en redes Wi-Fi públicas pueden utilizar la VPN corporativa para cifrar su conexión y proteger la información sensible.
  • Reducción de costos operativos: En lugar de utilizar conexiones dedicadas como MPLS, las empresas pueden usar VPNs para transmitir datos entre oficinas a través de Internet, reduciendo así los costos de infraestructura.
  • Acceso a sistemas empresariales globales: Las VPN permiten que empresas internacionales conecten sus sedes en diferentes países a una única red interna.

Despliegue de una VPN empresarial con Docker

Implementar una VPN empresarial con Docker permite a las compañías mantener control sobre su infraestructura, garantizando la seguridad y el rendimiento. Docker facilita el despliegue rápido y sencillo, reduciendo las complicaciones en la gestión de servidores físicos. Esta solución es ideal para empresas que requieren conexiones seguras entre sus oficinas o para empleados que necesitan acceso remoto a la red interna desde cualquier lugar.

Docker es una plataforma que permite empaquetar aplicaciones y servicios en entornos aislados. Esto proporciona a las empresas un entorno seguro, portátil y fácil de mantener para la VPN, asegurando una infraestructura confiable con mínimos requisitos técnicos.

Herramientas para desplegar una VPN propia

Existen múltiples herramientas que permiten el despliegue de una VPN personalizada, como OpenVPN o WireGuard®, entre otras. Sin embargo, auto-hospedar una VPN implica ciertos desafíos técnicos. Es necesario tener conocimientos sobre cómo configurar y mantener el servicio. Además, recae sobre el administrador la responsabilidad de mantener el software actualizado y protegido contra posibles vulnerabilidades.

Despliegue simplificado con Docker

Gracias a la virtualización moderna proporcionada por herramientas de virtualización como Docker, es posible desplegar un servicio VPN en tan solo unos minutos sin complicarse con configuraciones extensas del servidor. Para seguir este ejemplo práctico, asegúrate de tener Docker instalado en tu máquina. Si no lo tienes, puedes encontrar las instrucciones en la página oficial de Docker.

Preparación del entorno con Docker

En este ejemplo utilizaremos una imagen de Docker preconfigurada para OpenVPN, la imagen kylemanna/docker-openvpn, una de las implementaciones más completas y populares para desplegar OpenVPN en Docker. A diferencia de la imagen oficial, incluye herramientas adicionales que facilitan la gestión de la VPN, como scripts para generar certificados y claves de manera automática, simplificando la configuración del PKI. Además, cuenta con el respaldo de una comunidad activa, lo que asegura actualizaciones constantes y mejoras. Esta opción es ideal para pruebas o entornos donde se prioriza la facilidad de configuración y flexibilidad.

Sin embargo, para entornos de producción, es recomendable considerar el uso de la imagen oficial de OpenVPN. Esta ofrece mayor estabilidad y soporte a largo plazo, factores clave cuando se necesita garantizar un servicio confiable y seguro en infraestructuras críticas. Utilizar la versión oficial puede ser una mejor opción cuando la seguridad y el mantenimiento a largo plazo son las prioridades absolutas.

Abre una terminal y ejecuta el siguiente comando para generar los archivos de configuración necesarios. Si trabajas en un entorno local, puedes utilizar localhost o la IP local de tu máquina para hacer suo del servicio:

  
  docker run -v $(pwd)/openvpn-data/conf:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://localhost
    

Este comando creará una carpeta llamada openvpn-data donde se almacenarán todos los archivos de configuración. Ahora es el momento perfecto para inicializar los PKI (infraestructura de clave pública) necesarios para el servidor OpenVPN. Para ello, ejecuta el siguiente comando:


  docker run -v $(pwd)/openvpn-data/conf:/etc/openvpn -v $(pwd)/openvpn-data/pki:/etc/easyrsa/pki --rm -it kylemanna/openvpn ovpn_initpki
    

Se te pedirá que ingreses varias contraseñas que asegurarán la comunicación entre el servidor VPN y los clientes. Es importante recordar estas contraseñas, ya que serán necesarias para futuros cambios o adiciones de clientes. También se te solicitarán algunos datos para la Autoridad Certificadora (CA), que son vitales para generar los certificados necesarios.

Iniciar el servidor VPN

Una vez que todos los archivos de configuración y certificados estén listos, puedes arrancar el servidor VPN con Docker usando el siguiente comando:


  docker run -v $(pwd)/openvpn-data/conf:/etc/openvpn -d -p 1194:1194/udp --cap-add=NET_ADMIN kylemanna/openvpn
      

El parámetro -p 1194:1194/udp indica que el servidor VPN escuchará en el puerto 1194 UDP, que es el puerto predeterminado mientras que --cap-add=NET_ADMIN es necesario para que Docker pueda configurar la red de forma adecuada. Si todo ha ido bien, debería aparecer en pantalla el ID del contenedor que se ha creado.

Generar certificados para los clientes

Una vez que el servidor VPN esté en funcionamiento, es hora de generar los certificados necesarios para los clientes que se conectarán al servidor. Para ello, ejecuta el siguiente comando:


  docker run -v $(pwd)/openvpn-data/conf:/etc/openvpn --rm -it kylemanna/openvpn easyrsa build-client-full CLIENTNAME nopass
    

Reemplaza CLIENTNAME por el nombre que desees asignar al cliente. Este comando generará un certificado y una clave para el cliente especificado. Si deseas proteger el certificado con una contraseña, omite el parámetro nopass. Una vez generado el certificado, puedes exportarlo a un archivo .ovpn para importarlo en tu cliente VPN favorito. De esta forma podrás conectarte al servidor VPN desde cualquier dispositivo compatible.


  docker run -v $(pwd)/openvpn-data/conf:/etc/openvpn --rm kylemanna/openvpn ovpn_getclient CLIENTNAME > $(pwd)/CLIENTNAME.ovpn
    

Hasta ahora hemos visto cómo virtualizar una VPN con Docker, el problema es que estamos haciéndolo en un entorno local, por lo que no estamos aprovechando las ventajas de una VPN, ya que normalmente se utilizan para conectar equipos con diferentes ubicaciones entre sí. Para solucionar esto, necesitamos un servidor remoto donde desplegar nuestra VPN.

Para ello, puedes utilizar un proveedor de servicios en la nube como Linode, Google Cloud, Azure y/ó AWS. Estos servicios ofrecen servidores virtuales a precios asequibles y con una amplia gama de opciones de configuración. Una vez que hayas provisionado tu servidor, puedes seguir los mismos pasos que hemos visto anteriormente para desplegar tu VPN en la nube, en aquel lugar dónde se encuentre tu servidor.

Si estás fuera de España y necesitas una VPN en este país, te recomiendo utilizar los VPS de Raiola Networks, un proveedor de servicios de hosting con servidores en España (Madrid concretamente). Raiola Networks ofrece una amplia gama de servicios de hosting, incluyendo VPS, servidores dedicados y alojamiento web. Además, cuentan con un excelente soporte técnico y unos precios muy competitivos.

Conectar al servidor VPN

Una vez que hayas desplegado tu servidor VPN en la nube, puedes conectar a él desde cualquier dispositivo compatible. Para ello, necesitarás el archivo .ovpn que generaste anteriormente, así como un cliente VPN compatible. Si estás en Linux, puedes utilizar NetworkManager para importar el archivo .ovpn y configurar la conexión. Si estás en MacOS o Windows, puedes utilizar aplicaciones como OpenVPN Connect o Tunnelblick para conectarte a tu servidor VPN. En él, deberás utilizar el archivo .ovpn que generaste anteriormente que contiene la configuración necesaria para conectarte al servidor VPN.

En caso de no querer utilizar ni auto hospedar un VPN en un servidor propio puedes utilizar servicios de terceros como ProtonVPN. Te permite conectarte a servidores en más de 50 países y ofrece una política de no registro de datos, lo que garantiza tu privacidad y anonimato en línea. Además, ProtonVPN utiliza cifrado de grado militar y protocolos seguros para proteger tu tráfico de Internet.

Conclusión

Este tipo de servicios están diseñados para proteger el anonimato y la información personal, permitiendo una navegación segura sin necesidad de gestionar servidores propios. Además, si el enfoque principal de tu VPN es la protección de la privacidad personal, existen opciones de auto hospedaje que priorizan estas características. Si deseas profundizar en las mejores prácticas y herramientas para auto hospedar una VPN centrada en la privacidad, te invito a leer mi artículo sobre VPNs orientadas a la privacidad, donde exploramos diferentes enfoques y soluciones pensadas para proteger tu identidad en línea.

En este artículo, hemos revisado cómo las VPN son una herramienta esencial para las empresas que buscan conectar a sus empleados y oficinas de forma segura y eficiente. Además, hemos visto cómo es posible desplegar una VPN autogestionada utilizando Docker, lo que facilita la administración y permite a las empresas tener un control total sobre su infraestructura de red. Con esta solución, las empresas pueden asegurar conexiones seguras y escalables sin depender de terceros.

¿Te ha servido esta información?

Tu apoyo nos permite seguir compartiendo conocimiento de calidad. Si alguno de nuestros artículos te han aportado valor, considera hacer una donación para mantener este espacio en marcha y actualizado. ¡Gracias por tu contribución! 😊

Artículos relacionados

Quizá te puedan interesar