Sabías que...

05/03/2012

Bug del DDNS en Home Station P.DG-A4001N1 de movistar

En: Sin categoría — trocotronic @ 11:40

Movistar HomeStation

Este nuevo router de Movistar provee del tan ansiado Wi-Fi 802.11n, cuya principal característica es la inclusión de más de una antena para aumentar la velocidad de transferencia. Se ha escrito mucho sobre este router y no me voy a extender. Si has llegado hasta aquí es que has trasteado con las opciones avanzadas (léase main.html) y te has encontrado que el sistema de Dynami DNS (ddns) no funciona. Y es cierto. No funciona en ninguno. He probado en un par y en ninguno funcionaba. Si no te interesa lo más mínimo lo que te cuento, puedes ir directamente a la solución. Si no, sigue leyendo.

Lo primero que hice es entrar por telnet. Eso es fácil. Luego, usar el comando sh. Este comando no viene listado en el help, por lo que puede pasar por alto a cualquiera que no esté acostumbrado a usarlo. Este comando sh lo que hace es abrir un emulador de shell, con algunos comandos típicos de entornos Unix (cp, rm, ls, chmod, etc.). Si se ejecuta ls -la verás que te encuentras en el directorio /. La carpeta /var contiene las distintas configuraciones. Ten en cuenta que no existe ningún editor para modificarlas “a mano”.

Si ejecutas ps ux verás que el proceso con PID 847 corresponde al servidor DDNS y se llama de esta forma: /bin/ddnsd /var/ddnsd.cfg /var/ddnsd.cache. Así pues vamos a ver el archivo de configuración. El archivo /var/ddnsd.cfg contiene la configuración esencial. Si haces cat /var/ddnsd.cfg verás que saca exactamente los parámetros que has configurado. Y el parámetro interface es igual a 32. ERROR!!! Es por eso que no funciona. Esa interface no existe. La que debería ser es ppp0. Después de hacer algunas pruebas y reemplazar ese valor por ppp0 pude ver asombrado que la dirección en dyndns aparecía correctamente. Osea, que el fallo es este maldito parámetro.
Cómo arreglarlo?
“Pues fácil. Cambia este parámetro y ala.”
ERROR! No se puede porque no tienes ningún editor. “Pues te bajas el busybox-mips que incorpora vi, lo metes en el pendrive, lo enchufas y ala, a editarlo.”
ERROR! Después de hacer todo esto, pude ver que no se editaba.
“Pues te creas un archivo llamado ddnsd.cfg con los parámetros correctos, lo metes en el pendrive, lo enchufas, lo copias a /var reinicias y listo".
ERROR! bueno, error a medias. Esto en sí mismo funciona. Subes un archivo ddnsd.cfg al pendrive, éste se monta automáticamente en /mnt/usb0_0, se hace un cp /mnt/usb0_0/ddnsd.cfg /var/ddnsd.cfg, luego se mata el proceso inicial kill -9 847 y finalmente se arranca otra vez /bin/ddnsd /var/ddnsd.cfg /var/ddnsd.cache & y funcionará, sí. Pero a la que reinicies el router, se vaya la luz y vuelva o cualquier otra historia, se reemplazará por el viejo. Esto debe ser porque este router incorpora un flasheo automático de la rom cuando se arranca. Osea, que el valor inicial debe estar guardado en algún otro sitio que desconozco. Además, este router monta una partición (donde están las carpetas /bin o /sys) en modo lectura. No se puede escribir en ella.

Después de todo esto, decidí emular lo que hacía la web y pasar el valor correcto a mano. Y funcionó! Después de analizar el código fuente de la web, pude llegar a la solución

Solución:

Debo decir primero que esto lo hice en Chrome. Si usas otro navegador, tendrás que hacerlo a tu manera.

TODOS LOS PARÁMETROS SON LOS QUE VIENEN POR DEFECTO. SI HAS CAMBIADO ALGUNO, TENDRÁS QUE CAMBIARLO EN ESTE TUTORIAL.

  • Primero, si tienes alguna configuración DDNS añadida, bórrala. Bórralas todas. Si no, ahora vamos a insertar la buena y te dirá que ya la has añadido.
  • Abre una pestaña y escribe y NO aprietes intro. Espera. Vamos a buscar cuál es el parámetro sessionKey.
  • Abre otra pestaña y escribe view-source:http://192.168.1.1/ddnsadd.html
  • En la línea 153 verás un parámetro que pone sessionKey=. Al lado irá un número de unos 7 dígitos (más o menos). Memoriza este número o escríbelo en un post-it. O mejor, cópialo al final de la orden que habías escrito en el punto 1.
  • Por ejemplo quedaría así:
  • Recuerda a cambiar los parámetros USERNAME, PASSWORD y HOST en el comando por los tuyos.

Si todo ha ido bien, esta configuración se habrá añadido correctamente y en interface ya no verás 32 sino ppp0. Correcto! Si ahora te vas al panel de dyndns verás que la ip está bien y aunque reinicies el router, esta configuración siempre funcionará.
Recuerda que si reseteas los parámetros por los de fábrica, tendrás que hacer esto nuevamente.

Espero que os sirva. Si tenéis dudas, dejad un comentario e intentaré resolverlas.

Siguiente »