¡darandandunguen!

Namecheap, ddclient y Debian

ddclient es un software que permite actualizar tu IP en los servidores de nombres de forma automatizada para los que sufrimos IPs dinámicas. La versión de ddclient en Debian es la 3.6.2 y desgraciadamente el soporte para Namecheap es posterior. Namecheap es una empresa donde puedes registrar tus dominios por un precio bastante módico. De todos modos, lo mejor es instalar el paquete y después modificar dos archivos. Descarga la última versión de sourceforge, descomprime su contenido y machaca el archivo /usr/sbin/ddclient con el del archivo.

cd /usr/src
tar xjvf ddclient-3.6.7.tbz
mv ddclient-3.6.7/ddclient /sbin/ddclient

Elimina el archivo /etc/dclient.conf
rm /etc/ddclient.conf

Crea el archivo /etc/ddclient/ddclient.conf a partir del ejemplo y actualízalo con tus datos

cp ddclient-3.6.7/sample-etc_ddclient.conf /etc/ddclient/ddclient.conf

Al final del archivo está la sección destinada a Namecheap. La contraseña que debes poner es la que te aparece en la página de tu dominio en Namecheap en la pestaña Dynamic DNS. Como depende del dominio, deberás escribir una entrada distinta para cada uno de tus dominios.

ACTUALIZACIÓN

Parece que no todo está funcionando correctamente, por lo que esta mañana, cuando cambió la IP, el blog se ha ido al limbo. Sin embargo he encontrado en Marc @ blog un script que parece solucionar la tarea. El (pequeño) problema es que su script es para un único dominio y yo tengo varios. Las modificaciones que he hecho no las puedo publicar porque la licencia de Marc @ blog no permite trabajos derivados, pero no creo que tengáis problemas para hacerlos vosotros si los necesitáis. La prueba de fuego en el próximo cambio de IP.

ACTUALIZACIÓN 2

Me he puesto en contacto con Marc y no tiene ningún problema en que comporta mis cambios. Los cambios principales en el script son:

  • Soporte para varios dominios
  • Fuerza la actualización de la IP en la siguiente ejecución si la actualización falla
  • Manda un mensaje al syslog cuando actualiza la IP o cuando la actualización falla

ACTUALIZACIÓN 3

He hecho un pequño al script porque la página de whatismyip ha cambiado.

Para configurarlo debéis rellenar el campo CONFIG_PATH y escribir el fichero domains.list


#!/bin/bash

# Namecheap update script v1.01

# Path where the configuration files are is
CONFIG_PATH="/usr/local/etc/namecheap"


#==== No more config parameters past this line ====#

# Root only
if [ `id -u` -ne 0 ] ; then
echo "You MUST be root to execute this script!"
exit
fi

# Is domains file present?
if [ ! -e "${CONFIG_PATH}/domains.list" ]; then
mkdir -p ${CONFIG_PATH}
echo "${CONFIG_PATH}/domains.list not found!"
echo "This is a configuration file for namecheap script"
echo "Add one line to the file for each domain to keep updated"
echo "Line Format:"
echo "[domain] [password] [subdomain],[subdomain2],..."
echo "Lines starting with a # and blank lines will be ignored"
exit
fi

# What is my current IP?
NEW_IP=`lynx -dump http://www.whatismyip.org`

if [ -n "${NEW_IP}" ]; then

# First execution
if [ ! -e "${CONFIG_PATH}/old_ip" ]; then
mkdir -p ${CONFIG_PATH}
touch ${CONFIG_PATH}/old_ip
fi

OLD_IP=`cat ${CONFIG_PATH}/old_ip`

# Has my IP been updated?
if [ "${NEW_IP}" != "${OLD_IP}" ] ; then

# old_ip file update
echo ${NEW_IP} > ${CONFIG_PATH}/old_ip

# I make a HTTP GET request for every subdomain in each domain I have registered
exec < ${CONFIG_PATH}/domains.list while read LINE do if [[ -n `echo $LINE | grep -v '^#' | grep -v '^$'` ]] then NAMECHEAP_PWD=`echo ${LINE}| cut -d' ' -f2` DOMAIN=`echo ${LINE}| cut -d' ' -f1` SUBDOMAINS=`echo ${LINE}| cut -d' ' -f3 | sed -e 's/\,/\ /g'` for SUBDOMAIN in ${SUBDOMAINS} do LOG=`lynx -dump "http://dynamicdns.park-your-domain.com/update?host=${SUBDOMAIN}&domain=${DOMAIN}&password=${NAMECHEAP_PWD}&ip=${NEW_IP}"` LOG2=`echo ${LOG} | grep true` if [[ -n ${LOG2} ]]; then logger -t namecheap "Updated IP for ${SUBDOMAIN}.${DOMAIN}. Server Answers: ${LOG}" else logger -t namecheap "Error: can't update ip for ${SUBDOMAIN}.${DOMAIN}. Forcing an update on next run!. Server Answers: ${LOG}" echo ${LOG2} > ${CONFIG_PATH}/old_ip
fi
done
fi
done
fi
fi

El fichero domains.list debe ser como este


#Configuration file for namecheap script
#Add one line for each domain to update.
#Format:
#[domain] [password] [subdomain],[subdomain2],...

dominio1 password1 subdominio1,subdominio2

dominio2 password2 subdominio3,subdominio4,subdominio5
dominio3 password3 subdominio6

Por último, haz que se ejecute periodicamente añadiendo al crontab del root la línea

*/10 * * * * [path_al_script]/namecheap

Be Sociable, Share!

Categorised as: Tutoriales


4 Comments

  1. marc dice:

    Buenas Manu,

    Los canvios me parencen perfectos, sobretodo la posibilidad de poder actualizar varios Dominios. La verdad es que cuando hice el script no pensé en necesidades futuras. La acción de forzar la actualización cuando un subdominio falla entiendo que lo que hace es volver a actualizarlo todo no?

    Salu2

  2. manu dice:

    Efectivamente, reescribe el fichero con la IP antigua de forma que la siguiente vez que se ejecute el script actualizará de nuevo todos los dns (no sería demasiado complicado hacerlo sólo para los que fallen). De todos modos lo importante es que lo compruebe porque si no, de fallar, hasta que vuelva a cambiar la IP no intentará actualizarlo.

  3. Anónimo dice:

    Thanks a lot I was tring lynx -dump http://dynamicdns.park-your-domain.com/update?host=${SUBDOMAIN}&domain=${DOMAIN}&password=${NAMECHEAP_PWD}&ip=${NEW_IP}

    but missed the “” for url.

    Thanks for posting this

  4. jamón serrano dice:

    Hey there! Quick question that’s entirely off topic. Do you know how to make your site mobile friendly? My weblog looks weird when viewing from my iphone. I’m trying to find a theme or plugin that might
    be able to resolve this problem. If you have any suggestions, please share.
    Many thanks!