sistematizando

Usando sshuttle para hacernos una pseudo vpn

Published: (Updated: ) in Howtos, , , , by .

Actualmente, las redes corporativas, a menudo ofrecen una VPN (virtual private network) para ofrecer comunicaciones seguras a sus trabajadores. Sin embargo los protocolos que utilizan a veces pueden ser un tanto lentos. Si tienes acceso a un host en la red remota, a través de SSH podrías configurar una redirección de puertos. No obstante, esto puede ser pesado, especialmente si necesitas trabajar con un número elevado de hosts en esa red.

La aplicación sshuttle permite configurar una VPN rapidamente con solamente un acceso SSH. Sigue leyendo para mas información sobre como utilizarla.

Sshuttle ha sido diseñado exactamente para la clase de escenario descrito más arriba. El único requisito en el lado remoto es que el host tenga disponible python.

Instalando shuttle

En mi caso yo utilizo Fedora como sistema operativo por lo que es sencillo instalarla desde los repositorios oficiales:
$ sudo dnf install sshuttle
Una vez instalada, puedes encontar interesante echar un vistazo a la página del manual
$ man sshuttle

Configurando la vpn

El caso más simple es aquel en el que redirigimos todo el tráfico a la red remota. Tenemos que usar el parámetro -r con el usuario SSH y el nombre del host remoto.
$ sshuttle -r username@remotehost 0.0.0.0/0


Sin embargo, puedes querer acotar la VPN a ciertas subredes en lugar de pasar por ella todo el tráfico de red. Digamos que tu empresa usa las subredes 10.0.0.0 y 172.16.0.0. El comando para redirigir el tráfico a esas redes a través de la vpn sería:
$ sshuttle -r username@remotehost 10.0.0.0/8 172.16.0.0/16


Esto funciona estupendamente para host en la red remota de los que conocemos su dirección IP. Pero ¿Que sucede si nuestra oficina tiene montones de hosts? podemos utilizar el parámentro --dns para redirigir también las consultas dns a la oficina
$ sshuttle --dns -r username@remotehost 10.0.0.0/8 172.16.0.0/16


Para ejecutar sshuttle como demonio podemos utilizar el parámetro -D

Si te apetece leer mas acerca de sshuttle y como funciona pues ir a la documentación oficial. Si quieres revisar su código pues ir a la página de su proyecto en github