httptunnel: tunel a traves de proxy

martes, 16 de octubre de 2007

En la oficina donde trabajo, así como en muchas otras dependientes de cierto organismo público, el único acceso a Internet permitido es la navegación web a través de proxy. Esto no debería suponer un gran problema [a menos que quieras leer tu correo mediante POP3 o IMAP, que no es mi caso] pero resulta que también tienen prohibido el protocolo FTP. Si has leído artículos anteriores de este blog, está claro que ésta limitación sí que me ha incordiado en más de una ocasión. Así que vamos a saltarnos el dichoso proxy.

El paquete "httptunnel" consta de dos programas:

  • hts es el servidor, situado en una máquina con IP accesible en Internet (por ejemplo, en casa). Escuchará las peticiones HTTP y actúa de "repetidor" hacia el puerto local o remoto que le digamos
  • htc es el cliente, que escucha en un puerto local peticiones TCP del protocolo al que queremos acceder y las transporma en peticiones HTTP utilizando el proxy de nuestra red.

Si tenemos accesible el puerto 8080 de nuestra máquina "libre" desde Internet. Debemos activar el servidor de la siguiente forma:

$ hts -F localhost:22 8080
Con lo cual escucharemos peticiones HTTP por el puerto 8080 y las redireccionaremos [una vez convertidas] al puerto 22 (SSH). Ya esta todo preparado para acceder desde la maquina de la red protegida.

En esa máquina ejecutamos:

$ htc -P proxy-red-local:3128 -F 2222 maquina-ip-publica:8080
Utilizando el proxy de la red local vamos a escuchar tráfico TCP en el puerto 2222, lo convertira a peticiones HTTP y las dirigiremos a maquina-ip-publica (en el puerto 8080, que hemos dejado escuchando al servidor). Ya está hecho el tunel.

Gracias a la versatilidad de SSH podremos redirigir todo lo que queramos a través del tunel. Por ejemplo, si quiero utilizar el proxy del ordenador que está al otro extremo del tunel:

$ ssh localhost -p 2222 -L 3128:localhost:3128
Si utilizamos el proxy "localhost:3128" ya tendremos acceso a FTP.

Foto: Maria Iglesias