Modificando nuestra ubicación geográfica

En este artículo vamos a ver como podemos cambiar nuestra ubicación geográfica (GeoIP) sin movernos del sitio. Es decir, hacer que parezca que estamos en un país en el que no estamos.

La situación es la siguiente: hay determinados servicios que sólo están disponibles para algunos países o que ofrecen distintos contenidos dependiendo del país. ¿Qué podemos hacer si queremos usar los servicios de otro país? Pues hacerle creer al servicio que estamos en ese otro país.

Para ello necesitaremos un proxy, ese gran desconocido para algunos y una herramienta de uso habitual para otros. En otros tiempos era común que algunos proveedores de acceso a Internet impusiesen el uso de sus proxies para acceder a determinados servicios, pero actualmente este uso de los proxies cayó un poco en desuso y cada vez se usan más para otros fines distintos a los que fueron pensados.
Lo difícil de este punto es encontrar un proxy, que funcione, que no tenga una política demasiado restrictiva y que esté en el país que buscamos. Por suerte contamos con Tor, un servicio de ecaminamiento P2P cuyo funcionamiento en cierto modo podría recordarnos a Freenet. Cuando ponemos en marcha Tor nos crea un proxy SOCKS5 que por defecto será de acceso sólo local en el puerto 9050. Todas las conexiones que se dirijan a ese proxy local serán redirigidas a alguno de los demás peers de la red Tor hasta que alguno alcance el destino y nos devuelva el resultado.

Por lo tanto, el primer paso será instalar un cliente Tor (recomiendo Vidalia) y ya tendremos a nuestro servicio toda una red mundial de proxies. Pero resulta que sólo queremos usar los de un determinado país. Para hacer esto tendremos que editar el fichero de configuración de Tor, lo que en Vidalia se hace abriendo el Panel de Control de Vidalia, después hacemos clic en el botón Preferencias y en la ventana de preferencias que se abrirá vamos a la sección Avanzado y allí hacemos clic en el botón Editar actual torrc.
Nos aparecerá una ventana para editar el fichero torrc en el que añadiremos una línea ExitNodes como la siguiente (o modificaremos la que ya exista, si es el caso):

ExitNodes {xx}

Reemplazando xx por el código ISO 3166 del país correspondiente.
Por ejemplo, si queremos conectarnos a través de nodos alemanes pondremos:

ExitNodes {de}

Ya podemos reiniciar Tor y simular que nos conectamos desde el país xx poniendo el proxy Tor (por defecto 127.0.0.1:9050) en el programa que estemos usando. Pero, ¿y si el programa no soporta proxies SOCKS5? Si el programa, soporta proxies HTTP, podemos usar polipo.

Pero hay programas que no soportan proxies de ningún tipo, por ejemplo, telnet. Para estos casos tenemos dos opciones: tsocks/torsocks y ksb26.

tsocks es una librería que se inyecta en el programa que vamos a ejecutar haciendo uso de la variable LD_PRELOAD y desvía las conexiones de red del programa por un proxy. torsocks es una variante de tsocks optimizada para Tor. Para usar un programa con Tor a través de tsocks/torsocks no tenemos más que configurar el programa para que sea el proxy de Tor el que use (es muy sencillo y en el propio fichero de configuración viene un ejemplo de la configuración necesaria, así que no voy a profundizar en esto) y después ejecutar el programa con tsocks/torsocks:

tsocks programa

Pero la opción que me parece más interesante es la de ksb26 ya que hace la redirección a nivel de kernel en vez de inyectar una librería y nos permite configurar de una forma sencilla cuáles son las conexiones que queremos redirigir por el proxy. ksb26 es un módulo para el núcleo 2.6 de Linux que permite redirigir de forma transparente (es decir, sin que el programa “se entere”) determinadas conexiones a otra dirección. Si tu caso es el mismo que el mío, puede que necesites hacer algunas modificaciones que publicaré más adelante para que el módulo compile con kernels modernos. Una vez compilado el módulo lo cargamos:

modprobe ksb26

El módulo se configura a través del dispositivo /dev/ksb26, sin embargo en ocasiones este dispositivo no está correctamente creado y debemos eliminarlo y volver a crearlo (podemos ver los códigos major y minor del dispositivo en dmesg o syslog):

rm -f /dev/ksb26
mknod /dev/ksb26 c 244 0

Ya sólo nos falta añadir qué conexiones se deben redirigir a qué direcciones. Para configurar en ksb26 los proxies que queremos usar (el proxy Tor en nuestro caso), la sintaxis es la siguiente:

echo '#Sdireccion_ip:puerto;version_socks|' >| /dev/ksb26

y para escoger qué conexiones deben pasar por el proxy

echo '#Hdireccion_ip:puerto;|' >| /dev/ksb26

Podemos usar * como comodín para la dirección IP y 0 para todos los puertos. En caso de cometer un error se puede borrar la configuración con:

echo '#cls|' >| /dev/ksb26

Así, por ejemplo, si tenemos el proxy Tor ejecutándose en el puerto 9050 de localhost y queremos redirigir por Tor todas las conexiones a la dirección IP 208.77.188.166, configuraremos ksb26 del siguiente modo:

echo '#S127.0.0.1:9050;5|' >| /dev/ksb26
echo '#H208.77.188.166:0;|' >| /dev/ksb26

3 comments on “Modificando nuestra ubicación geográfica

  1. Pingback: ¿Hubo descargas de porno transexual desde la santa sede o no? | Algo supuestamente divertido que nunca volveré a hacer

  2. Nick Gibson on said:

    Mi ubicación geográfica (y creo que la dirección IP) cambiaron, de un día para otro, de la ciudad donde vivo a un pueblo en otro Estado del país donde vivo.

    ¿Saben cómo puede haber pasado esto y cómo corregirlo?
    ¿Cómo podría después ocultar mi ubicación?

    Gracias por adelantado.

    • Hola, Nick.

      Lo único que se puede saber con cierta fiabilidad acerca de la ubicación de una dirección IP es su país ya que esa información es pública. Los datos más precisos acerca de su ubicación se obtienen mediante la combinación de distintas técnicas que no siempre son fiables y pueden producir datos incorrectos. Especialmente si se trata de direcciones IP dinámicas en las que la misma dirección IP puede ser usada en dos momentos de tiempo distintos por diferentes clientes del mismo proveedor en distintas partes del país.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.