VPN multicliente y sin perder conectividad

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 😞