VPN multicliente y sin perder conectividad

Ricardo Vega

Ricardo Vega / 10 agosto 2023

⏰ 4 minutos

Como sabes, paso gran parte de mi tiempo diseñando, desarrollando y evaluando aplicaciones para alguno de los clientes que tenemos en innusual. Clientes que, habitualmente, trabajan en entornos corporativos controlados y accesibles a través de VPN. Además, no todos ellos usan la misma tecnología y debo adaptarme al entorno elegido con el que trabajen: Cisco AnyConnect, Pulse Secure, FortiClient, OpenVPN, etc... cada uno con su herramienta y configuración específica.

Además, trabajo con MacOS y, aunque es verdad que cada vez más clientes apuestan por entornos más compatibles con otros sistemas operativos, es habitual que la documentación y configuraciones por defecto estén pensadas para máquinas Windows. Esto hace que muchas veces estas configuraciones no me funcionen correctamente y tenga que estar haciendo ajustes de forma manual. De entre todos los problemas más habituales a los que me enfrento, sin duda el rey es la falta de conectividad con Internet si de forma simultánea estoy conectado a la VPN.

Pues bien, este post lo escribo después de que muchos de mis compañeros se hayan interesado por mi configuración, con la que consigo, con un único programa instalado en mi equipo, tener acceso a todas estas VPN (sin importar su tecnología) y puedo controlar qué parte de mi tráfico redirijo a través de la VPN (hosts específicos) y para qué parte sigo usando mi configuración de red personal (acceso general a Internet, correo electrónico, mensajería, Spotify, etc).

Aunque esta configurada está pensada para MacOS, es perfectamente reproducible en otros entornos UNIX ya que los programas que empleo no son específicos de Mac. Incluso, aunque esto no lo he probado, creo que podría ser extensible también para sistemas Windows.

En primer lugar, debes instalar dos programas. Yo empleo brew pero puedes emplear otros gestores de paquetes similares o llevar a cabo la instalación de forma manual.

brew install openconnect vpn-slice

El primero, OpenConnect, se trata del cliente VPN multi-tecnología que, aunque existe la posibilidad de instalar software adicional y añadirle una interfaz gráfica, es perfectamente operativo desde la terminal.

El segundo, vpn-slice, es un script a ejecutar una vez establecida la conexión con la VPN a través de OpenConnect y mediante el cual, podremos decidir qué tráfico se enruta a través de la VPN.

Además, en vez de recordar y escribir el comando de conexión cada vez que quiero acceder a una VPN, me gusta crear alias en mi configuración, uno por cada VPN. Por ejemplo:

alias vpn_company=sudo openconnect --protocol=fortinet <IP:PORT> --user=ricveal --script 'vpn-slice 10.10.0.0/16 172.52.12.2 vm-pre=10.10.13.5'

Reemplazando <IP:PORT> por los datos correspondientes al punto de acceso de la VPN. Es importante destacar que, en este ejemplo, estoy suponiendo que me quiero conectar a una VPN que usa FortiClient como tecnología. Además, he puesto una serie de IPs de ejemplo sobre cómo se emplearía vpn-slice.

Concretamente, en este ejemplo, estoy ejecutando

vpn-slice 10.10.0.0/16 172.52.12.2 vm-pre=10.10.13.5

lo cual hará que todo el tráfico a IPs 10.10.X.X y a la IP 172.52.12.2 vaya a través de VPN, y el resto lo haga a través de internet como si no estuviera conectado a la VPN. Además, declaro un alias host; vm-pre se resolverá con la IP 10.10.13.5.

De este modo, sólo debo introducir mi contraseña de usuario de administración (OpenConnect necesita esta clase de permisos para modificar la configuración de routing del sistema operativo) y la contraseña de acceso de mi usuario a la VPN para establecer la conexión con ella, respetando la configuración que quiero.

Cuando quiera salir de la VPN, sólo tendré que presiona Ctrl + c para cerrar la ejecución y la VPN se desconectará, volviendo a la configuración que tenía por defecto.

Si tengo varias VPNs a las que quiera conectarme, sólo tengo que crear tantos alias (cada uno con los detalles específicos de su tecnología / proveedor VPN) y, con una misma estrategia, de forma rápida y sin tener que instalar en mi equipo múltiples clientes VPN, podré establecer la conexión enrutando a través de ella sólo aquellos recursos concretos a los que deseo acceder.

Espero que te haya sido de utilidad.

Un saludo

Ricardo

Subscríbete a mi newsletter

Actualmente estoy llevando a cabo algunos cambios en mi Newsletter y no es posible apuntarse 😞

Ver ediciones pasadas