En una entrada anterior vimos cómo configurar a un servidor DNS BIND para contener un dominio, el loopback y una zona con los servidores raíz de Internet.
En esta ocasión veremos cómo activar el rndc y la actualización dinámica (DDNS).
Para esto utilizaré dos equipos Solaris 10, uno contendrá el servidor y otro lo utilizaremos como cliente.
Además del archivo con los servidores raíz (db.cache) y del loopback (db.127.0.0) voy a crear dos archivos más, uno para el dominio y otro para la resolución inversa de mi red local (192.168.100.0/24)
db.unixymas.com.mx
$TTL 3h
; Zona unixymas.com.mx
@ IN SOA draco.unixymas.com.mx. administrator.unixymas.com.mx. (
01 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; negative ttl
@ IN NS draco.unixymas.com.mx.
draco IN A 192.168.100.10
db.192.168.100
$TTL 3h
; Zona 100.168.192.in-addr.arpa
@ IN SOA draco.unixymas.com.mx. administrator.unixymas.com.mx. (
01 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; negative ttl
@ IN NS draco.unixymas.com.mx.
10 IN PTR draco.unixymas.com.mx.
Observen que en realidad los dos archivos solo contienen los registros SOA y NS, esto es porque los vamos a actualizar en forma dinámica.
Para actualizar en forma dinámica una zona es necesario otorgarle la autoridad a la zona mediante la opción allow-update en el archivo de configuración /etc/named.conf . Se le puede otorgar la autoridad a una IP, a una lista; pero la forma más segura es por medio de una llave. Dicha llave es una cadena cifrada con el algoritmo HMAC-MD5.
Lo primero es crear la llave por medio del comando dnssec-keygen en la forma: dnssec-keygen –a HMAC-MD5 –b 128 –n HOST llave
# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST update-key |
Con este comando generamos 2 archivos uno con terminación .key y otro con .private . En el caso de este algoritmo en realidad los dos archivos contienen información similar, vamos a revisar el .private
Kupdate-key.+157+04139.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: onuHJl6U5lqKEk8/9mbMQw==
Bits: AAA=
La cadena señalada como key es la que vamos a utilizar.
El archivo de configuración queda de la siguiente forma:
options {
directory "/var/named";
};
zone "." {
type hint;
file "db.cache";
};
zone "0.0.127.in.addr.arpa" {
type master;
file "db.127.0.0";
};
zone "unixymas.com.mx" {
type master;
file "db.unixymas.com.mx";
allow-update { key "update-key"; };
};
zone "100.168.192.in-addr.arpa" {
type master;
file "db.192.168.100";
allow-update { key "update-key"; };
};
key "update-key" {
algorithm hmac-md5;
secret "onuHJl6U5lqKEk8/9mbMQw==";
};
Ahora ya podemos iniciar el BIND, desde otro equipo, en el que ya configuramos al servidor draco.unixymas.com.mx como su servidor de dominio, vamos a agregar un nuevo nombre por medio del comando nsupdate en la formal: nsupdate –k archivo.key ó nsupdate –k archivo.private
Esto nos va a llevar al modo interactivo, desde el cual, podemos agregar o eliminar nombres con los siguientes comandos:
update add nombre ttl tipo dato
update delete nombre
En este ejemplo, vamos a agregar una dirección en el dominio unixymas.com.mx
# nsupdate -k Kupdate-key.+157+04139.private |
La línea en blanco al final, le indica que ejecute el cambio.
Para la resolución inversa la actualización es similar:
# nsupdate -k Kupdate-key.+157+04139.private |
Ahora vamos a ver cómo se activa el rndc, necesitamos como requisito indispensable una llave, puede ser la misma para el DNS dinámico, pero en este ejemplo vamos a crear una nueva:
# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST rndc-key |
Ahora vamos a activarlo en el archivo de configuración con la opción controls, el archivo queda finalmente así:
/etc/named.conf
options {
directory "/var/named";
};
zone "." {
type hint;
file "db.cache";
};
zone "0.0.127.in.addr.arpa" {
type master;
file "db.127.0.0";
};
zone "unixymas.com.mx" {
type master;
file "db.unixymas.com.mx";
allow-update { key "update-key"; };
};
zone "100.168.192.in-addr.arpa" {
type master;
file "db.192.168.100";
allow-update { key "update-key"; };
};
key "update-key" {
algorithm hmac-md5;
secret "onuHJl6U5lqKEk8/9mbMQw==";
};
controls {
inet * allow { any; } keys { "rndc-key"; };
};
key "rndc-key" {
algorithm hmac-md5;
secret "5V73kf47NK6HjvygCjCJ9w==";
};
En el cliente, es necesario crear el archivo /etc/rndc.conf
/etc/rndc.conf
options {
default-server 192.168.100.10;
default-key "rndc-key";
};
key "rndc-key" {
algorithm hmac-md5;
secret "5V73kf47NK6HjvygCjCJ9w==";
};
Por último observen que los archivos de zona ya fueron actualizados por el BIND:
db.unixymas.com.mx
$ORIGIN .
$TTL 10800 ; 3 hours
unixymas.com.mx IN SOA draco.unixymas.com.mx. administrator.unixymas.com.mx. (
2 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
3600 ; minimum (1 hour)
)
NS draco.unixymas.com.mx.
$ORIGIN unixymas.com.mx.
draco A 192.168.100.10
equuleus A 192.168.100.20
db.192.168.100
$ORIGIN .
$TTL 10800 ; 3 hours
100.168.192.in-addr.arpa IN SOA draco.unixymas.com.mx. administrator.unixymas.com.mx. (
2 ; serial
10800 ; refresh (3 hours)
3600 ; retry (1 hour)
604800 ; expire (1 week)
3600 ; minimum (1 hour)
)
NS draco.unixymas.com.mx.
$ORIGIN 100.168.192.in-addr.arpa.
10 PTR draco.unixymas.com.mx.
20 PTR equuleus.unixymas.com.mx.