En un pasado mencionamos de pasada el uso de túneles como uno de los métodos para conseguir la redirección de puertos y recientemente hemos visto cómo establecer un túnel ssh entre 2 hosts. Hoy daremos un paso más allá y usaremos un host intermedio para establecer un túnel entre otros 2 hosts. Y lo haremos de la mano de una herramienta gráfica que nos ayudará a ver qué se ejecuta por detrás: gSTM. Para los despistados, tal y como comenta la Wikipedia, un tunel es el uso de unos protocolos para encapsular a otros con diferentes propósitos (asegurar los datos de una transmisión, hacer una redirección de puertos, evitar/circunvalar firewalls...). Nosotros vamos a usarlo para realizar una redirección de puertos (que como vimos también puede hacerse con la tabla NAT de iptables). Como una imagen vale más que mil palabras y siempre ayuda a clarificar el asunto, vamos a imaginar la siguiente topología de red: workstation --> INTERNET --> FW --> LAN (ip pública dinámica) (ip pública) (ips privadas) Tenemos una workstation que es la máquina física desde dónde operamos. Queremos conectarnos a distintos servicios (Terminal Server, SQL Server, MySQL) de los hosts de la LAN que no son ni deben ser accesibles a través de Internet, y lo haremos a través del host FW/GW (fw.testtunnel.org), un firewall/gateway para los hosts de LAN. Éste es el único host con ip pública en la LAN, mientras que los demás sólo disponen de ips privadas. Así pues, instalamos gSTM y crearemos (Añadir/Afegeix) un túnel dándole un nombre. En mi caso y aunque ya tengo otros, será Test tunnel: A continuación pasamos a su configuración. Vamos a las Propiedades/Propietats y en el apartado Tunnel configuration ponemos la dirección/puerto (fw.testtunnel.org, aunque podría ser directamente una ip) y el usuario (root) con el que crearemos el tunel. Y en el apartado Port redirection definiremos las redirecciones: serán "locales" (hechas en el propio host fw.testtunnel.org) y en los puertos locales que definamos (p.ej. 1234), seguido de la ip y el puerto de cada host de la LAN (p.ej. la ip 192.168.2.4 y el puerto 3389). Hecho esto para cada redirección quedaría algo así: Esto en cuanto a configuración. Cuando queramos iniciar el túnel, iremos a la pantalla inicial de gSTM, seleccionaremos el túnel que acabamos de configurar (Test tunnel) y pulsaremos Start/Iniciar. Si el icono de túnel se vuelve verde es que la operación fue sin problemas. Ahora bien,¿qué ha hecho esto exactamente? El mejor modo de verlo es haciendo un grep a los procesos ejecutándose en la workstation. Veríamos algo como esto: ssh fw.testtunnel.org -p 22 -l root -nN -L1234:192.168.2.4:3389 -L1235:192.168.2.5:1433 -L1236:192.168.2.6:3306 -o NumberOfPasswordPrompts=1 En definitiva, vemos que se conecta a fw.testtunnel.org y lanza las redirecciones de puertos en ese host, de modo que podremos conectarnos a los puertos "locales" de dicho host (1234, 1235 y 1236) para acceder a:
Si nos fijamos en los parámetros, el -n se usa para cuando es necesario ejecutar ssh en background. El parámetro -N le indica a ssh que no ejecute ningún comando en remoto; útil para cuando quiere usarse para redireccionar puertos, como es el caso. Finalmente, el parámetro -o NumberOfPasswordPrompts=1 instruye a ssh a preguntar por contraseña una sola vez. Comentarios (4) |