domingo, 6 de julio de 2014

Tu Proxy Personal Para Ver TV de Estados Unidos en Solo 10 Minutos

Con motivo de la Copa Mundial Brasil 2014 busqué la manera de ver Univision, que transmitiría por señal abierta al público de Estados Unidos todos los partidos hasta el 4 del julio. La manera más fácil, y además más barata de lograr esto fue buscar cómo instalar un proxy en Estados Unidos en Amazon Web Services (AWS) que por un año te permite tener un servidor en sus instalaciones dentro de los límites de Free Tier usage.

Esta es una breve guía de como realizar la instalación

Abrir una cuenta en Amazon Web Services 

Lo primero es abrir una cuenta en AWS. Nota que para ello necesitarás ingresar una tarjeta de crédito. Recuerda que Amazon no cobra dentro de los límites de uso libre por un año. En este caso el límite relevante son los 15 GB de transmisión hacia por mes. Aunque después cada GB cuesta aprox. $0.12USD :-)

Crear una Instancia EC2 de Amazon Web Services

Una vez que te hayas autenticado en el portal AWS selecciona la opción de Launch Instance y sigue estos pasos:
1. Selecciona Ubuntu Server y da click en siguiente
2. Selecciona la instancia tipo t2 micro de uso general y da click en siguiente
3. Configura la instancia mediante aceptar los valores por default en este paso. Da click en siguiente
4. Etiqueta tu instancia. En el campo de Value introduce un nombre para tu servidor "my-proxy". Click en siguiente
5. En la configuración de Grupo de Seguridad cerciórate que tenga habilitado acceso SSH mediante el puerto 22 desde cualquier parte. Si tienes una IP fija es bueno seleccionar que solo desde esta te puedas conectar.
6. Revisa los parámetros y lanza tu instancia. No olvides descargar la llave de seguridad para conectarte


Una vez que hayas terminado, tu instancia estará lista para usarse. En el Menú de Instancias ubica tu instancia y copia el campo Public DNS. Esta es la dirección a la cual apuntarás en los siguientes pasos para conectarte a tu proxy.

Conectarse a la micro instancia EC2

Si usas Linux o MacOS solo necesitas conectarte mediante SSH a tu instancia usando el archivo de llave .pem que descargaste durante la instalación. Sustituye PublicDNS por la dirección que copiaste en el paso anterior.
ssh -i ~/.ssh/my-proxy.pem ubuntu@

Sin embargo, si usas Windows necesitas un cliente SSH para poder conectarte. El más conocido tal vez sea PuTTY así que descárgalo. Solo necesitas los archivos en cualquier lugar donde desees. Incluso lo puedes utilizar desde una USB o como Portable Apps PuTTY.
Antes de poder conectarte hay que convertir el archivo de llave .pem a un formato que reconozca PuTTY. Para ello necesitamos el programa PuTTYGen, descárgalo desde la misma página y sigue estos pasos:
1. Ejecuta PuTTYGen
2. Selecciona el tipo de llave SSH-2
3. Da click en el boton de cargar (Load). Cambia el tipo de archivos a mostrar a All Files *.*
4. Ubica tu archivo de llave .pem y da click en Open. Ignora la ventana de diálogo que aparece.
5. Da click en el botón Save Private Key. No selecciones una frase y salva tu archivo.

Con esto tendrás una llave en el formato que PuTTY puede entender para conectarse a la instancia EC2.

Ahora ejecuta PutTTY y sigue estos pasos para conectarte:
1. En el campo HOST introduce el valor ubuntu@<Public DNS>. 
2. En el menú Category selecciona Connection-Auth-SSH. Luego da click en Browse para ubicar tu archivo de llave privada .ppk que generaste con PuTTYGen.
3. Selecciona nuevamente la categoría Session y salva la configuración de tu conexión. La usaremos posteriormente.
4. Da click en Open para conectarte.

Ya estarás dentro de tu instancia.

Instalar TinyProxy en la instancia EC2

TinyProxy es un pequeño proceso (daemon) que nos permitirá recibir conexiones HTTP y HTTPS. Instalalo escribiendo el siguiente comando en tu sesión de PuTTY:
sudo apt-get install tinyproxy

TinyProxy por omisión está configurado para escuchar solo conexiones locales y en el puerto 8888 así que esto no permitirá que nadie mas lo utilice.

Crear un Tunel SSH desde tu red local

Este es el paso final para configurar que el tráfico de tu red salga a través de TinyProxy. Esto permitirá que parezcas estar en USA. 
1. Ejecuta PuTTY y carga la configuración que salvaste en el paso anterior
2. Expande la Categoría Connection - SSH- Tunnels
3. Agrega esta configuración:

  • Source port: 88 (u otro puerto que tu elijas. Este será el puerto en tu computadora donde se ejecute PuTTY)
  • Destination: localhost:8888 (este es el puerto donde escucha TinyProxy en la microinstancia de AWS)
  • Habilita la casilla Local ports accept connections from other hosts si deseas que otras computadoras utilicen el túnel hacia Tinyproxy para acceder a internet. Esto es especialmente útil cuando quieres usar una SmartTV, ChromeCast u otro dispositivo donde puedas configurar un proxy.
  • Da click en el botón Add

Con esto ya está lista tu configuración. Ahora solo nos resta configurar los dispositivos para los que desees utilizar el proxy.

Configurar el Uso de Proxy en tus Dispositivos

Para utilizar el proxy es necesario que lo habilites en la conexión de internet. Para ello necesitarás saber la dirección IP de tu computadora. Puedes hacerlo en una ventana de comandos (Start-Run-cmd.exe) tecleando el comando ipconfig. Luego ubica la dirección IPv4 y copiala.
Para este ejemplo configuraremos Firefox:
  1. En las opciones de Firefox ubica la pestaña Avanzado- Red- Conexión/Configurar. 
  2. Elige la opción Configuración manual del proxy e ingresa la dirección IP del paso anterior y el puerto 88 (o el que hayas configurado). 
  3. Selecciona la opción Usar el mismo proxy globalmente. 
  4. Da click en Aceptar


Ahora puedes confirmar que tengas una salida en Estados Unidos accediendo con Firfox al sitio whatismyip.com. Ahí te mostrará la Ciudad y País en donde está registrada tu dirección IP.