Warning: Si no conoces las páginas de la ACM o de la IEEE o no te interesa ver papers relacionados con la computación entonces muy probablemente no te servirá este post.
Nota: Las instrucciones son para un PC con Linux y OpenSSH instalado. En Windows también se puede hacer pero con otras herramientas que desconozco.
Escribo esto acá por dos razones: primero, a más de alguno le servirá (recuerdo más de alguna vez Sepu preguntándome como se hacía y yo diciendo que no me acordaba), y segundo, siempre que quiero hacer esto se me olvida como lo hice la vez anterior y debo darme la lata de buscarlo de nuevo.
Nota: Este post es para Beauchefianos pero se puede extrapolar a Ues con cuentas a estos sitios poniendo la información respectiva.
Comando a Ejecutar:
$ ssh -Cf -L 10080:proxy.cec.uchile.cl:8000 usuario@cires.cec.uchile.cl -N
Si quieres saber más sigue leyendo.
En pocas palabras, lo que se desea hacer es utilizar el servidor Proxy del CEC para poder descargar contenido de la ACM o de la IEEE desde la casa pero a través de los servidores de la U (sino no es permitido porque se requiere tener una cuenta).
Debido a que no se puede utilizar directamente el servidor Proxy del CEC (ya que no es visible desde internet, no devuelve pings) debemos establecer un túnel SSH entre nuestro PC y el servidor Proxy, que está dentro de la red del CEC.
Para hacer esto se debe ejecutar:
$ ssh -L puerto_local:servidor_proxy:puerto_proxy usuario@servidor_ssh
Nota: Si puerto_local es menor a 1024 se requiere ejecutar como root.
Con esto, todo paquete que llegue al puerto_local en nuestra máquina será reenviado al puerto_proxy en el servidor_proxy (funcionalidad del tunel SSH). Este servidor_proxy reenviará el paquete al destinatario original y la respuesta se le devolverá al servidor_proxy y éste la devolverá a nuestra máquina (funcionalidad del Proxy).
Así logramos que la página de la ACM o IEEE reciba paquetes desde los servidores de la U, cuando en realidad lo estamos haciendo desde nuestras casas.
El usuario y servidor_ssh es para poder hacer el tunel entre nuestro PC y un PC de la red donde está el servidor Proxy que tenga SSH. Si es que el servidor Proxy se encontrara en una máquina con SSH se podría ejecutar:
$ ssh -L puerto_local:servidor_proxy:puerto_proxy usuario@servidor_proxy
Entonces, lo que se debe hacer, utilizando la información del CEC, es lo siguiente:
$ ssh -L 10080:proxy.cec.uchile.cl:8000 usuario@cipres.cec.uchile.cl
Luego, deben configurar su navegador para reenviar todos los paquetes hacia el proxy de la U mediante el túnel. Como expliqué anteriormente, todo paquete enviado a nuestro puerto_local será redirigido al proxy, entonces, en su navegador deben configurar su conexión hacia el servidor proxy localhost:puerto_local (por ejemplo, 10080).
En Firefox es: Edit->Preferences->Advanced->Network->Connection->Settings->Manual proxy configuration:
- HTTP Proxy: localhost
- Port: puerto_local (10080 en nuestro ejemplo)
Listo, con eso cada vez que Firefox solicite alguna página lo hará a través del servidor Proxy del CEC.
Opciones Avanzadas
El túnel SSH permite unas cuantas opciones más que son útiles aunque no obligatorias:
- C: Comprime la información transmitida (usa menos ancho de banda)
- f: Corre en background (queda corriendo como si fuera un daemon). Después queda corriendo el proceso ssh. No se como se cerrará de otra forma que no sea: killall ssh, o, kill `ps -C ssh | grep ssh | awk ‘{print $1}’`.
- -N: No ejecuta comando en la consola remota (no se abre el SHELL)
Con estas opciones el comando a ejecutar quedaría:
$ ssh -Cf -L puerto_local:servidor_proxy:puerto_proxy usuario@servidor_ssh -N
PS: Si hay errores conceptuales|typos en mi post no son errores, son características!. Pero si los mencionan podría editarlos para disminuir esta cantidad de características (para así seguir con el Principio KISS).
END