El nuevo formato de imagen, WebP
Historia y evolución del formato El formato WebP fue creado por Google con el objetivo de acelerar …
leer másHoy 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.
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.
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.
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:
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.
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.
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.
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 imagen 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. Para pruebas en un entorno local, puedes utilizar localhost
o la IP local de tu máquina, para entornos de producción, debes utilizar la IP pública del servidor para garantizar que los clientes externos puedan conectarse a la VPN:
docker run -v $(pwd)/openvpn-data/conf:/etc/openvpn --rm kylemanna/openvpn ovpn_genconfig -u udp://IP_PUBLICA
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.
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.
Para que los clientes puedan conectar utilizando el servicio VPN configurado, utilizaremos un archivo docker-compose.yml
para levantar y mantener el servicio de manera más sencilla y estructurada:
version: "2"
services:
openvpn:
image: kylemanna/openvpn
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun
ports:
- "1194:1194/udp"
sysctls:
- net.ipv6.conf.default.forwarding=1
- net.ipv6.conf.all.forwarding=1
volumes:
- ./openvpn-data/conf:/etc/openvpn
Guarda el archivo docker-compose.yml
en la misma carpeta donde se encuentran los archivos de configuración y ejecuta
el siguiente comando para iniciar el servidor VPN:
docker-compose up -d
Este comando levantará el contenedor Docker con el servidor OpenVPN y lo mantendrá en ejecución en segundo plano. Puedes verificar que el contenedor se haya iniciado correctamente ejecutando:
docker ps
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.
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.
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.
Quizá te puedan interesar
Historia y evolución del formato El formato WebP fue creado por Google con el objetivo de acelerar …
leer másEn el capítulo anterior veíamos cómo crear un proyecto con Hasura y Docker en cuestión de minutos, …
leer másEl origen del debugging El término debugging o depuración de errores, tan familiar en el mundo del …
leer másDe concepto a realidad