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