Prinero se tiene que contar con una cuenta confiurada y activa en EveryDNS. Lo bueno que tiene este servicio es que ofrce servidores DNS que pueden ser configurados directamente con nic.ar y nos ofrece la posibilidad de actualizar dinamicamente nuestra ip para el dominio configurado.
El servicio tambien nos ofrece un script en Perl que usa librerias base64 para realizar la tarea. En mi caso particular, quien gestiona la conexion a internet es un Linksys wrt54gl con OpenWRT, por lo que instalar Perl + libreria, me demandaria un gran espacio del pequeño root filesystem.
Por este motivo decidi desarrollar un pequeño script en "ash" que es nativo de esta distribucion y ahorrar en librerias proporcionandole el token en base64 generado a partir del usuario y password.
En este ejemplo, supongamos que tenemos configurado el dominio "MiPyme.com.ar", con el usuario "pepe" con el password "muleiro".
Lo primero que necesitamos es pasar nuestro usuario y password a notacion base64, ya que se usa athenticacion http basica a la hora de actualizar nuestra ip. Para esto existe la utilidad base64 en casi cualquier linux pero no esta disponible para OpenWRT.
echo "pepe:muleiro"| base64 - | sed s/Cg==//
cGVwZTptdWxlaXJv
Vale aclarar que se usa la nomenclatura USUARIO:PASSWORD, notese ":" entre las dos palabras. La linea resultante de texto es filtrada con el sed para sacarle "Cg==" que en este caso es basura resultando "cGVwZTptdWxlaXJv" que es lo que vamos a usar para configurar el script.
En caso de no contar con linux, este google applet puede hacer el mismo trabajo.
#!/bin/ash
### Configuracion
#
# Token generado en base64
token="cGVwZTptdWxlaXJv"
#
# Dominio
domain="MiPyme.com.ar"
#
# Interface WAN
# wan="eth0.1" # Linksys wrt54gl
wan="eth0.2" # Tplink wr1043nd
#
###
### Utilidades
#
# Averiguo la IP actual de la conexion a internet
ip=`ifconfig $wan | grep "inet addr" | cut -d: -f2 | cut -d\ -f1`
#
###
### Registracion
#
# Uso el "wget" para authenticarse y submitear la IP
wget -q -O /tmp/edns.log --header "Authorization: Basic $token" "http://dyn.everydns.net/index.php?ver=0.1&ip=$ip&domain=$domain"
#
###
Le damos permiso de ejecucion.
chmod 744 /root/edns.ash
Lo corremos.
/root/edns.ash
Verificamos.
cat /tmp/edns.log
Authentication given
Time check succeeded
Additional info: 1304708403 - 1304707555 = 848
Authentication succeeded
Version correct
IP address OK
IP change suceeded
IP now: 190.247.90.99
Exit code: 0
La mejor forma que encontre es hacerlo correr cada hora con cron.
crontab -e
0 * * * * /root/edns.ash