viernes, 17 de agosto de 2012

Compartiendo la conexion 3G / UMTS via WiFi (Ubuntu Linux)



Tal como era de suponer, Vodafone no consiguió a tiempo cambiar mi tarifa de datos, asi que llevo semana y media sufriendo una velocidad del siglo pasado en el movil. Y tambien en el iPad, puesto que el movil por medio de tethering era lo que estaba usando para actualizar el tableto.

La excusa (ojo, que no dudo que el problema fuera realmente ese) es que la aplicación de gestión no les dejaba hacer el cambio de tarifa. Que les daba un error en la aplicación. Pero aún asi seguian manteniendo la fecha para solucionar el problema. Me imagino a todo el departamento corporativo de programación de vodafone buscando el bug y desplegando una nueva version de su aplicación interna en todos los servidores. O, quien sabe, en todos los terminales. Si el problema hubiera sido en mi empresa, probablemente nos hubieramos dejado los cuernos buscando lo que pasaba. Si en vodafone ha sido asi... lo siento chicos: ha sido inutil el esfuerzo. Demasiado tarde, como avisé desde el principio.

El caso es que en el portatil, que lleva una tarjeta SIM de no demasiado facil acceso si que tenía aún conexión. No me valia para las funciones móviles habituales pero si para conectarme al trabajo. De hecho, era la única conexión que permitía establecer la conexion VPN. Pero aunque habia buscado algun programa para que el iPad accediera a la conexion, no habia tenido éxito. Hasta ayer, que encontre de pura casualidad la forma mas simple que habia podido imaginar para hacerlo. Y sin instalar ningun programa.

Así que al grano: ¿como compartir la conexion 3G / UMTS o lo que sea desde un Linux via wifi?. Facil, facil al menos con mi configuración actual: Ubuntu 10.10 Maverick con NetworkManager para gestionar la conexiones de red e iptables instalado.

Primero: creamos una nueva red Wifi, de tipo Ad-Hoc (nunca lo habia usado hasta ahora), con el tipo de cifrado que queramos y el nombre de red que mas te guste.

Segundo: habilitamos en el kernel para que admita packet-forwarding:

sysctl -w net.ipv4.conf.all.forwarding=1

(Nota: hasta donde se, este parametro pasa a ser definitivo despues de ejecutarlo. Quiero decir, que sobrevive al reinicio del equipo. Esto tiene como parte buena que no tendras que ponerlo las siguientes veces que quieras activar este tipo de conexion. Como malo, que tu equipo puede reenviar paquetes entre interfaces de red y es posible que esto no sea nada bueno en según que circunstancias)

Tercero: le decimos a iptables que queremos hacer NAT de todo lo que vaya a salir por la conexion 3G/UMTS (en tu equipo puede ser otro dispositivo diferente a ppp0, verifícalo con un simple /sbin/ifconfig)

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE


Y .. voila!. Ya tienes tu conexión wifi con la que salir desde otros terminales a traves de tu caja Linux con tarjeta de conexion telefónica.

No se si esta solución es universal o no, pero a mi al menos me está salvando del apuro temporalmente. O al menos en parte, porque al Kindle no parecen gustarle mucho este tipo de conexiones. Que le vamos a hacer. Afortunadamente en el Kindle el volumen de datos es mucho menor y es una cuestion de paciencia el seguir usando la conexion capada del otro móvil.