Y no naufragar en el intento

¿Se entendió el chiste? Lo opuesto de navegar = naufragar, hoy estoy iluminado.

El caso mas típico: El administrador de la red de tu trabajo te bloqueó twitter, facebook, msn messenger y cuanta otra página adicional pudiera dar por tierra con tu productividad.

¿Se entendió el chiste? Lo opuesto a navegar = por tierra, hoy estoy realmente iluminado.

Otro ejemplo, estás navegando desde una red pública accediendo a contenido sensible sin saber quien pudiera estar a la escucha del tráfico entrante o saliente. O peor aún, estás navegando desde una red inalámbrica sin cifrar, donde cualquiera en varios metros a la redonda podría estar jugando con su placa de red wi-fi en modo monitor.

Ya sea que te bloquearon el MSN messenger y no podes chatear o que te vino el ataque mensual de paranoia y no te animás a usar Home Banking desde esa red de dudosa procedencia, he aquí una de las tantas alternativas viables para solventar el problema.

Ingredientes:

  1. Linux con el servicio SSH corriendo.
  2. Si la PC con facebook bloqueado corre windows, entonces necesitarás además de PuTTY

Si, solo eso. Nada como un buen Linux en casa para pasarse por el ***** el sistema de filtrado de contenidos del 90% de los servidores corporativos, así que si todavía no lo hiciste, ya tenés otro motivo mas para ir instalando Linux en esa PC viejita y en desuso que quedó tirada por ahí.

¿Como funciona?

Se trata de establecer el famoso tunel SSH entre la PC bloqueada y la PC de afuera corriendo Linux.

Si bien hay varias formas de traspasar un firewall restrictivo, la mas eficiente y la única que encontré –la única que conozco, por que seguro habrá unas cuantas formas mas de hacerlo– que permite acceder al contenido de varias páginas web de forma dinámica sin tener que andar retocando la configuración de ningún servicio o conectar y desconectar nada, es llegando hasta el servidor por SSH por un túnel haciendo de socks proxy.

Si llegaste a leer hasta este punto, es por que realmente te interesa el artículo y sabés mas o menos de que estoy hablando, así que voy a presuponer que ya tenés una distribución de Linux instalada y que esta distribución tiene OpenSSH instalado y en ejecución como servicio.

De no ser así, hay miles de guías al respecto por ahí, no voy a detallar la configuración desde el principio por que no viene al caso.

Puesta en marcha:

En Linux:

ssh –D 3128 usuario@servidor 

En windows, con PuTTY en ejecución toda la ciencia radica en agregar el puerto 3128 como dinámico en la sección Connections / SSH / Tunnels y luego loguearse en la PC remota:

eseesehache

Por último, configurar el navegador.

Una vez establecido el túnel, solo es cuestión de especificarle al navegador de cabecera que use como servidor de socks (normalmente en la sección “proxy” de las opciones del mismo) a 127.0.0.1 en el puerto 3128 o cualquiera sea el número de puerto arbitrario que se hubiera especificado. (Usé 3128 por costumbre, por ser el puerto por defecto en donde corre Squid pero se puede usar cualquier número de puerto).

proxy

Desde ese momento y hasta tanto se le indique otra cosa al navegador o se cierre el túnel, todo el tráfico será enviado a través de este último hasta la PC que corre Linux, que será la encargada de establecer y gestionar la sesión HTTP. De paso se cifra por completo la conexión, por otro lado además se saltea cualquier restricción que hubiera respecto a este tipo de tráfico.

Para el webserver que recibe la petición, todo el tráfico aparentará estar originado en la PC que corre Linux.

Mejor que sobren y no que falten.

Hay momentos en que de todas las opciones disponibles, ejecutar un entorno gráfico adicional (una nueva instancia del servidor X) es la mejor, por ejemplo:

  • Juegos sobre Wine: Se obtiene mejor rendimiento de video si el juego se ejecuta sobre un entorno gráfico para el solito.
  • Aplicaciones que toman el control del teclado y mouse: El cliente de terminal server en modo pantalla completa por ejemplo, rdesktop –f se adueña del teclado y mouse con lo que no se le puede minimizar ni cerrar a menos que se cierre sesión en la máquina remota. Correr rdesktop en modo full screen en su propia instancia de del X server permite alternar entre esta aplicación y las demás simplemente pulsando control + alt + F<número>.
  • Máquinas virtuales en modo pantalla completa: Por pura comodidad, tener la máquina virtual en modo pantalla completa en una instancia adicional de X. Una vez que te acostumbraste no hay vuelta atrás.

Seguro que me estoy olvidando de un largo etcétera, ¿Se les ocurre algún otro uso para esto?

Para hacer un acceso directo que lance una aplicación en una nueva instancia de X basta con crear un archivo de texto ejecutable que diga:

X :3 –ac –terminate &      # Ejecutar un nuevo X server, cerrar X cuando no queden aplicaciones activas

sleep 2                           # Dos segundos de espera para que X levante.

DISPLAY=:3 <nombre de aplicación a ejecutar> # Ejecutar la aplicación en :3 de X.

Esto ejecutará la aplicación en su propia instancia de X que será accesible en CTRL + ALT + F8.

Para disponer de menos ttys ocupadas y poder llenar el espacio con instancias de X, editando el archivo /etc/inittab y renombrando las líneas en donde se hace respawn de cada una de las tty´s por ejemplo:

# c6:2345:respawn:/sbin/agetty 38400 tty6 linux