El título sorprende ¿eh? xD
Es lo primero que se me ha ocurrido, pero representa bastante bien lo que voy a explicar, un poco por encima, en éste post. Básicamente os voy a explicar como utilizar cualquier puerto dentro de una red restringida (como la de muchas universidades) donde sólo nos dejan el puerto para http y poco más. Eso sí, para que ésto funcione deberemos tener en algún lado fuera de dicha red un equipo que pueda recibir conexiones ssh.
Situación: Hoy es mi segundo día trabajando como monitor de laboratorio en la universidad. El curro no está mal, son 3 horas diarias (que he cogido de 11:30 a 14:30) durante las que soy responsable de que los ordenadores del laboratorio en el que me toque funcionen, si alguien no sabe muy bien como hacer algo echarle un cable y si algo se jode abrir una incidencia.
Problema: El aburrimiento de 3 horas seguidas sin hacer nada (hoy no tengo ganas de hacer prácticas :P) me ha llevado a conectarme al irc a ver que se contaban en #ubuntu y me he dado cuenta de que, al estar dentro de la red de la universidad, no tengo acceso al 6667, puerto que usa el IRC.
Solución: El ordenador que tengo en casa bajando y que hace de server tiene acceso libre a internet (usando la conexión de mi casa) y, a pesar de tener IP dinámica, puedo acceder a él a traves de un dominio gratuito y la aplicación no-ip así que puede recibir peticiones desde el exterior sin necesidad de saberme de memoria la IP que tiene en éste momento.
Con éste planteamiento inicial la idea parece bastante sencilla: usar la conexión de mi casa para acceder a internet a través del puerto que necesite, o lo que es lo mismo, acceder al IRC a través del ordenador que tengo en casa. OJO! no es lo mismo que utilizar el ordenador de cada de proxy, es algo mucho más sencillo y con ciertas ventajas.
Ahora la parte práctica, vamos a utilizar una conexión ssh para establecer un tunel desde aquí (red capada) hasta el irc a través del ordenador de casa, ¿como se hace? Muy sencillo:
1º - Tiramos el tunel ssh de la siguiente manera:
ssh -L puerto_local:server_destino:puerto_destino -l usuario_ssh -N servidor_casa
Vamos a explicarlo un poco: puerto_local es el puerto del ordenador local por el que accederemos al tunel, server_destino es el servidor objetivo al que queremos acceder (en nuestro caso cualquiera del irc hispano), puerto_destino es el puerto del server_destino, usuario_ssh un usuario con cuenta ssh en servidor_casa y servidor_casa es el ordenador de nuestra casa a través del cual accederemos al servidor_objetivo.
El ejemplo parametrizado para el irc (cambiando el nombre del server de mi casa…):
ssh -L 4000:libres.irc-hispano.org:667 -l nemesis -N trikititran.no-ip.org
2º - Una vez establecido el tunel (no sacará nada por pantalla) debemos dejarlo abierto y desde el cliente de IRC conectarnos al puerto local que hemos redirigido. Al acceder al puerto puerto_local de localhost estaremos accediendo realmente al puerto puerto_destino de server_destino. Para el caso del ejemplo del IRC sería tan sencillo como ésto:
/server localhost 4000
3º - Cuando hayamos terminado ya podéis cerrar el tunel.
Sé que es un procedimiento lioso, yo la primera vez pensaba que me estaba volviendo majara, pero no es tan complicado, leedlo despacio y si no os enteráis tirad de la fuentes que seguro que lo explican mucho mejor que yo!
Fuente: GulTec - Irc en el Campus