miércoles, 4 de julio de 2007

Configurar el celular para navegar por internet en GNU/Debian sin usar GPRS(carisimo!!!)

Introducción

Esto es una breve quia, basada en mi experiencia siguiendo tutoriales muy buenos que hay, pero debido a que me encontré con algunas piedritas en el camino.
La idea es que lean los tutoriales, y para el caso concreto de la distribución DEBIAN y el modelo de celular Nokia 6620.
Espero que resulte de utilidad para alguien.

Primero lo primero

Tal como se ven en la mayor parte de los tutoriales, vamos a mencionar un conjunto de paquetes que debemos tener instalados en nuestra distribución DEBIAN y, por supuesto, en nuestro celular en cuestión.
En nuestro debian -apt-get ;)-
  • bluez-utils
  • pppd (normalmente ya viene instalado)
En el nokia 6620

Una prueba inicial

En el celular hay que crear un nuevo punto de acceso al que llamaremos Bt(tiene que ser exactamente así), lo siguiente tendremos que explicitar en la configuración:
  1. portador de datos: Llamada de datos (GSM)
  2. Número de marcación: cualquier número, el GNUBOX lo borrará de todas formas, pero tiene que estar, sino no permite crear el AP
  3. Autentificación: normal
  4. Config avanzadas>Dirección IP teléfono: 192.168.1.2
  5. DNS primario y secundario (aquí puedes poner el de tu proveedor de Internet)
  6. Compresión IP: SI
  7. El resto se deja como está, con usuario y contraseña en blanco (no olvidar el numero de marcado)
A continuación iniciamos el GNUBOX y hacemos los siguientes pasos
OPCIONES>2BOX Bluetooth>Serial Port
OPCIONES>INSTALL>CREATE RECORD
Dejamos abierto el GNUBOX corriendo en segundo plano, y nos disponemos a probar la navegación con OPERA, aunque para el caso, vale con cualquier programa que utilice cualquier protocolo o servicio de internet (como por ejemplo ssh).
Para preparar la computadora seguimos los siguientes pasos genéricos:
  1. Hacer un nateo de la interfaz ppp sobre bluetooth, lo que permitira la salida a internet como también el acceso a la maquina anfitriona (por ejemplo pude hacer ssh desde el celular a esta)
  2. Registramos un puerto serial con un canal bluetooth
  3. habilitamos la escucha del canal bluetooth a la espera de una conexión, de tal manera que al establecerse el contacto se produce la creación de una interfaz ppp de la conexión punto a punto entre el anfitrión y el celular. Así sobre esta conexión, dispondremos de una iplocal y una remota que pertenecerá al dispositivo movil (en este caso el nokia 6620)
Empecemos desarrollando los puntos mencionados con la ejecución de los respectivos comandos que permitirán instrumentar esta solución.
Es bueno ya de entrada habilitar el nateo de todos los paquetes que provengan de la interfaz que crearemos. Para el caso vale mencionar que las ips utilizadas por anfitrion y dispositivo movil serán respectivamente la 192.168.1.1 y la 192.168.1.2. Tenemos entonces que ingresar en la tabla nat del iptables lo siguiente
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
y no olvidar habilitar el forwarding del kernel, lo que convertirá a la maquina anfitriona en un router(fundamental para compartir internet)
echo 1 > /proc/sys/net/ipv4/ip_forward
Enlazamos un puerto con un canal bluetooth con el siguiente comando
rfcomm bind 3 00:02:EE:6B:65:49 2
a continuación preparamos el puerto para la comunicación
echo x > /dev/rfcomm3
Registramos a su vez los respectivos servicios locales bluetooth, en este caso solo nos interesa registrar el canal 3 como Puerto Serie (SP). El software y servicios asociados forman parte del paquete Bluez-utils.
sdptool add --channel=3 SP
Bueno, ya estamos listo, ponemos a escuchar por el canal registrado. El comando es el siguiente
dund -n --listen --channel 3 --msdun noauth 192.168.1.1:192.168.1.2 crtscts 115200 ms-dns 200.45.191.35 lock
Algunas opciones de este comando merecen una explicación. Sin --msdun, es poco probable que funcione el enlace ppp, y aunque suene feo es porque algunos dispositivos implementan el pppd con una variante de una especificación de Microsoft.
Como la conexión se establece sobre un puerto serie, tambien tenemos que especificar algunas opciones para ello: crtscts 115200
Por ultimo con -n indicamos que no se ejecute como demonio y también especificamos que no requerimos autentificación con noauth.

Bueno, ahora no tenemos más que acceder a internet a través del punto de acceso Bt. y vuolá!
O no?, mirén, si por X razón no te funciona, o se conecta y se desconecta antes de poder establecer el iplocal y remota, prueben hacer esto en otra consola.
tail -f /dev/rfcomm3
De esta manera obligamos a mantener abierto el puerto, al menos durante el establecimiento de la conexión.

Qué falta?

Bueno, esta es una forma, digamos un poco "engorrosa", aunque reconozcan que sencilla si no se les escapa ningun detalle...hay una forma de establecer estas configuraciones en los respectivos archivos de configuración del bluez, pero eso es parte de otra guía ;)

Ultimo momento
Bueno, hoy me acaban de robar el celular. Asi que no podré seguir investigando con él. Una pena.

Fuentes:

http://www.unix-ag.uni-kl.de/~leonard/linux-n6600-howto.html
http://mikie.iki.fi/symbian/bt-ap.html