Con el comando inadyn
podemos actualizar la IP de nuestro dominio, o
dominios, en DynDNS, pero la IP no se pasa como argumento sino que
se hace una consulta a un servidor que devuelve la IP pública que
tenemos en ese momento. Por defecto, el servidor es
checkip.dyndns.org:80
.
Podemos hacer que el dominio apunte a la IP que queramos utilizando el
argumento --ip_server_name
para especificar un servidor controlado por
nosotros y que devuelva la IP que queramos.
Una manera sencilla de montar un servidor HTTP temporal es utilizar el
comando nc
. Antes de ejecutarlo, crearemos un fichero index.html
con
el siguiente contenido, modificando la IP por la que nosotros queramos:
Current IP Check
Current IP Address: 209.85.146.106
Lanzamos el servidor:
$ cat index.html | nc -l 8000
Y actualizamos nuestro dominio con la IP que pusimos en el archivo
index.html
:
$ /usr/sbin/inadyn -u user -p pass --iterations 1 --dyndns_system custom@dyndns.org
--ip_server_name localhost:8000 / -a anacreonte.homelinux.com
Ojo, no es recomendable ir escribiendo nuestras contraseñas en la línea de comandos.
Bueno, después de hacer algunas pruebas más, he visto que no hace falta crear un fichero HTML, basta con que nuestro servidor devuelva la IP que queremos asignar:
$ echo 209.85.146.106 | nc -l 8000
Otra manera sería utilizar un Apache, en el cual el fichero no tiene porqué estar en la raíz del dominio. En tal caso, la petición sería algo como:
$ /usr/sbin/inadyn -u user -p pass --iterations 1 --dyndns_system custom@dyndns.org
--ip_server_name smyrno.homelinux.com:8000 /path/ip.html -a anacreonte.homelinux.com
donde el fichero ip.html
es el que contiene la IP y se encuentra en el
subdirectorio /path/
.
Por último, también he probado con Python, ejecutando:
$ python -m SimpleHTTPServer 8000
pero esto no acaba de funcionar. inadyn
una vez conectado al servidor
realiza una petición que siempre recibe un error 404, dado que el
archivo solicitado no se encuentra.
Para mostrar este comportamiento, lazamos el servidor:
$ python -m SimpleHTTPServer 8000
y en otra consola intentamos realizar la actualización:
$ /usr/sbin/inadyn -u user -p pass --iterations 1 --dyndns_system custom@dyndns.org
--ip_server_name localhost:8000 / -a anacreonte.homelinux.com --verbose 5
INADYN: Started 'INADYN version 1.96.2' - dynamic DNS updater.
The request for IP server:
GET http://localhost:8000/ HTTP/1.0
DYNDNS: IP server response: HTTP/1.0 404 File not found
Server: SimpleHTTP/0.6 Python/2.6.6
Date: Thu, 30 Dec 2010 16:43:31 GMT
Content-Type: text/html
Connection: close
Error response
Error response
Error code 404.
Message: File not found.
Error code explanation: 404 = Nothing matches the given URI.
W:'RC_DYNDNS_INVALID_RSP_FROM_IP_SERVER' (0x42) updating the IPs. (it 0)
Este es el registro que muestra el servidor:
Serving HTTP on 0.0.0.0 port 8000 ...
localhost.localdomain - - [30/Dec/2010 17:43:31] code 404, message File not found
localhost.localdomain - - [30/Dec/2010 17:43:31] "GET http://localhost:8000/ HTTP/1.0" 404 -
Sin embargo, si abrimos un navegador y vamos a la direccion
localhost:8000
, en el navegador nos aparece la IP y esto es lo que
muestra el servidor:
localhost.localdomain - - [30/Dec/2010 17:51:15] "GET / HTTP/1.1" 200 -
Actualizado el 10 de junio de 2013
Actualmente, es posible actualizar el dominio con la IP que queramos, simplemente haciendo una petición como la siguiente:
$ USERNAME=username
$ PASSWORD=password
$ DOMAIN=example.homelinux.com
$ IP=1.2.3.4
$ curl https://$USERNAME:$PASSWORD@members.dyndns.org/nic/update?hostname=$DOMAIN&myip=$IP&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG
Debido a un cambio en la política de uso de las cuentas gratuitas, es necesario iniciar sesión mínimo una vez al mes para mantener los dominios.