Local Tunneling: LocalTunel Y Ngrok


¿Qué es un tunel local?

Desde una máquina cualquiera se pueden servir diferentes aplicaciones como un servidor web apache por puerto 80, servicio de ficheros ftp por puerto 43, etc...

Todos estos servicios se ofrecen a nivel de red, cualquier equipo pondría la ip local del equipo y en el puerto correspondiente aparecería ese servicio pero desde internet, desde otra red no podría acceder porque lo que se expone a internet de nuestra infraestructura local como puede ser tu red de casa es el router que actúa como nodo central para dirigir las comunicaciones entre la red de Internet a la subred que gestiona y en la que nos encontramos.

Si queremos exponer este servicio a la red de internet deberíamos configurar en nuestro router un port forwarding que redireccione todo el tráfico dirigido a un puerto por ejemplo el 80 del router al puerto 80 de la máquina donde estés ofreciendo el servicio web.

De forma ofensiva podríamos querer por ejemplo exponer un servicio en una infraestructura de red en una empresa que solo se puede utilizar de forma local a internet para poder ex-filtrar o consumir ese servicio sin necesidad de estar en su misma subred.

Por supuesto en una organización como nodo de gestión no utlizan un router, tienen diferentes medios como proxys, etc. Todo esto de forma que no se pueda exponer el puerto de ninguna máquina dentro de la organización a internet.

Podemos resumir el local tunneling como exponer estos servicios locales a internet y se pueden usar varias herramientas.

Ngrok

:

https://ngrok.com

Esta es principalmente de pago pero tiene alguna opción gratuíta por la que tendremos que registrarnos

Localtunnel

:

https://github.com/localtunnel/localtunnel

Esta opción es completamente gratuita.


sudo apt install npm
npm install -g localtunnel
lt -p 80

Le indicamos un puerto y lo que ocurre es que nos crea una URL.

El proceso que realiza es conectar nuestra máquina a una instancia que tiene en un servidor, que como es hacia fuera si que lo permiten los firewalls etc.

Cuando se establece la conexión la máquina actúa como el servidor que va a recibir las peticiones y un cliente externo puede conectarse.

Más resumidamente es que nos conectamos a un servicio externo por lo que está permitido por el firewall y luego un cliente externo de internet se conecta a ese servicio donde la maquina que ofrece el servicio en el puerto 80 también está conectada y esta responde al cliente como si estuviese consumiendo el servicio sin problema, el servidor intermedio gestiona los paquetes.

De esta forma podremos una vez con acceso a la infraestructura realizar un túnel con algún servicio que queramos consumir de forma externa sin necesidad de estar continuamente dentro de la infraestructura.