nsupdate es un comando que nos permite actualizar las entradas de un servidor DNS.
En este artículo configuraremos BIND para que permita ser actualizado por los clientes a través de nsupdate.
Tenemos que tener instalado el paquete dnsutils:
apt-get install dnsutils
Para que los clientes puedan actualizar el DNS generaremos una clave de autentificación.
Entramos en el directorio de configuración de BIND y generamos la clave con el comando "dnssec-keygen":
cd /etc/bind
dnssec-keygen -a HMAC-MD5 -b 512 -n HOST server
Esto habrá generado 2 ficheros: "Kserver.+157+56776.private" y "Kserver.+157+56776.key". La clave que nos interesa es la siguiente:
grep '^Key' Kamazon.+157+56776.private
FGbUIzPEbJgyEkDxEYccrxVTLQ==
Editamos el fichero de configuración de BIND y añadimos la clave:
vi /etc/bind/named.conf
key "server" {
algorithm HMAC-MD5;
secret "FGbUIzPEbJgyEkDxEYccrxVTLQ==";
};
En la zona que queramos actualizar dinámicamente añadimos la cláusula "allow-update":
zone "acme.com" {
type master;
file "/var/cache/bind/acme.com.db";
allow-update { key server; };
};donde "key server" es la clave que los clientes tendrán que utilizar para actualizar esta zona.
Reiniciamos el servicio para aplicar los cambios:
/etc/init.d/bind9 restart
Lo que queremos es actualizar en el DNS el hostname y la IP asignada a la interfaz eth0 de nuestros servidores. Para conseguir esto crearemos el script "nsupdate.sh":
vi /usr/local/bin/nsupdate.sh
#!/bin/bash
# Variables
KEYNAME="server"
HASH="FGbUIzPEbJgyEkDxEYccrxVTLQ=="
INTERFACE="eth0"
SERVER="ns.acme.com"
ZONE="acme.com"
HOST=`hostname -f`
# Discovering IP
IP=`ifconfig $INTERFACE | grep inet | cut -d ":" -f 2 | tr -d a-z,A-Z,- |sed 's/\s//g';`
# Update command
NSUPDATE="/usr/bin/nsupdate -y $KEYNAME:$HASH"
# DNS data
EXEC="server $SERVER\n
zone $ZONE\n
update delete $HOST A\n
update add $HOST 1440 A $IP\n
show\n
send"
# Updating DNS
echo -e $EXEC | $NSUPDATE
donde:
Para actualizar la entrada en el servdor DNS simplemente ejecutamos el script:
./nsupdate.sh
Comentarios recientes
8 weeks 1 day ago
22 weeks 2 days ago
27 weeks 5 days ago
36 weeks 3 days ago
44 weeks 2 days ago
51 weeks 5 days ago
1 year 3 days ago
1 year 12 weeks ago
1 year 12 weeks ago
1 year 15 weeks ago