BIND-9.2.2

Introducción a BIND

El paquete BIND proporciona un servidor DNS y utilidades de cliente.

Información sobre el paquete

Instalación de BIND

Instala BIND ejecutando los siguientes comandos:

./configure --prefix=/usr --sysconfdir=/etc &&
make &&
make install

Configuración de BIND

Ficheros de configuración

named.conf, root.hints, 127.0.0, rndc.conf

Información sobre la configuración

Configuraremos BIND para que se ejecute en una jaula chroot como usuario sin privilegios (named). Esta configuración es más segura pues un compromiso en el DNS sólo puede afectar a unos pocos ficheros en el directorio HOME del usuario named.

Primero crearemos el usuario y grupo sin privilegios named:

groupadd -g 200 named &&
useradd -m -g named -u 200 -s /bin/false named

Ahora crearemos algunos ficheros, directorios y dispositivos que necesita BIND:

cd /home/named &&
mkdir -p dev etc/namedb/slave var/run &&
mknod /home/named/dev/null c 1 3 &&
mknod /home/named/dev/random c 1 8 &&
chmod 666 /home/named/dev/{null,random} &&
mkdir /home/named/etc/namedb/pz &&
cp /etc/localtime /home/named/etc

Crea el fichero named.conf, del cual named leerá la localización de los ficheros de zona, servidores raices de nombres y llaves DNS seguras:

cat > /home/named/etc/named.conf << "EOF"
 options {
     directory "/etc/namedb";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";

 };
 controls {
     inet 127.0.0.1 allow { localhost; } keys { rndc_key; };
 };
 key "rndc_key" {
     algorithm hmac-md5;
     secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
 };
 zone "." {
     type hint;
     file "root.hints";
 };
 zone "0.0.127.in-addr.arpa" {
     type master;
     file "pz/127.0.0";
 };
EOF

Crea un fichero de zona con el siguiente contenido:

cat > /home/named/etc/namedb/pz/127.0.0 << "EOF"
$TTL 3D
@      IN      SOA     ns.local.domain. hostmaster.local.domain. (
                        1       ; Serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.local.domain.
1               PTR     localhost.
EOF

Crea el fichero root.hints con los siguientes comandos:

Nota: Debes tener la precaución de asegurarte de que no dejas espacios sobrantes en este fichero.

cat > /home/named/etc/namedb/root.hints << "EOF"
.                       6D  IN      NS      A.ROOT-SERVERS.NET.
.                       6D  IN      NS      B.ROOT-SERVERS.NET.
.                       6D  IN      NS      C.ROOT-SERVERS.NET.
.                       6D  IN      NS      D.ROOT-SERVERS.NET.
.                       6D  IN      NS      E.ROOT-SERVERS.NET.
.                       6D  IN      NS      F.ROOT-SERVERS.NET.
.                       6D  IN      NS      G.ROOT-SERVERS.NET.
.                       6D  IN      NS      H.ROOT-SERVERS.NET.
.                       6D  IN      NS      I.ROOT-SERVERS.NET.
.                       6D  IN      NS      J.ROOT-SERVERS.NET.
.                       6D  IN      NS      K.ROOT-SERVERS.NET.
.                       6D  IN      NS      L.ROOT-SERVERS.NET.
.                       6D  IN      NS      M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     6D  IN      A       128.9.0.107
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     6D  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     6D  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     6D  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
EOF

El fichero root.hints es una lista de servidores raices de nombres. Este fichero debe actualizarse periódicamente con la utilidad dig. Consulta el Manual de Referencia del Administrador de BIND 9 para mas detalles.

Crea el fichero rndc.conf con los siguientes comandos:

cat > /etc/rndc.conf << "EOF"
key rndc_key {
algorithm "hmac-md5";
    secret
    "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K";
    };
options {
    default-server localhost;
    default-key    rndc_key;
};
EOF

El fichero rndc.conf contiene información para controlar las operaciones de named con la utilidad rndc.

Crea o modifica resolv.conf para utilizar el nuevo servidor de nombres con los siguientes comandos:

Nota: Sustituye yourdomain.com con el nombre válido de tu propio dominio.

cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search yourdomain.com
nameserver 127.0.0.1
EOF

Establece los permisos de la jaula chroot con el siguiente comando:

chown -R named.named /home/named

Crea el guión de arranque de BIND:

cat > /etc/rc.d/init.d/bind << "EOF"
#!/bin/bash
# Inicio $rc_base/init.d/bind
# Basado en el guión sysklogd de LFS-3.1 y anteriores.
# Reescrito por Gerard Beekmans  - gerard@linuxfromscratch.org
source /etc/sysconfig/rc
source $rc_functions
case "$1" in
	start)
		echo "Iniciando named..."
		loadproc /usr/sbin/named -u named -t /home/named -c \
		        /etc/named.conf
		;;
	stop)
		echo "Parando named..."
		killproc /usr/sbin/named
		;;
	restart)
		$0 stop
		sleep 1
		$0 start
		;;
   reload)
                echo "Recargando named..."
                /usr/sbin/rndc -c /etc/rndc.conf reload
                ;;

	status)
		statusproc /usr/sbin/named
		;;
	*)
		echo "Uso: $0 {start|stop|restart|status}"
		exit 1
		;;
esac
# End $rc_base/init.d/bind
EOF

Añade los enlaces simbólicos en los niveles de arranque:

chmod 754 /etc/rc.d/init.d/bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc0.d/K49bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc1.d/K49bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc2.d/K49bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc3.d/S22bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc4.d/S22bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc5.d/S22bind &&
ln -s  /etc/rc.d/init.d/bind /etc/rc.d/rc6.d/K49bind

Ahora inicia BIND con el nuevo guión de arranque:

/etc/rc.d/init.d/bind start

Comprobación de BIND

Comprueba la nueva instalación de BIND 9. Primero consulta la dirección de la máquina local con dig:

dig -x 127.0.0.1

Ahora prueba la búsqueda de un nombre externo, tomando nota de la diferencia de velocidad en repetidas consultas debido al caché. Lanza el comando dig dos veces sobre la misma dirección:

dig beyond.linuxfromscratch.org &&
dig beyond.linuxfromscratch.org

Verás que el resultado es casi instantáneo cuando named consulta las direcciones almacenadas. Para saber todas las opciones de configuración consulta bind-9.2.2/doc/arm/Bv9ARM.html, el Manual de Referencia del Administrador de BIND.

Contenido

El paquete BIND contiene dig, host, rndc, rndc-confgen, named-checkconf, named-checkzone, lwresd, named, dnssec-signzone, dnssec-signkey, dnssec-keygen, dnssec-makekeyset y nsupdate.

Descripciones

dig

dig interroga servidores DNS.

host

host es una utilidad para consultas DNS.

rndc

rndc controla las operaciones de BIND.

rndc-confgen

rndc-confgen genera ficheros rndc.conf.

named-checkconf

named-checkconf comprueba la sintaxis de ficheros named.conf.

named-checkzone

named-checkzone comprueba la validez de los ficheros de zona.

lwresd

lwresd es un servidor de nombres que sólo busca consultas guardadas, para usar con procesos locales.

named

named es el demonio servidor de nombres.

dnssec-signzone

dnssec-signzone genera versiones firmadas de los ficheros de zona.

dnssec-signkey

dnssec-signkey firma grupos de llaves de ficheros de zona.

dnssec-keygen

dnssec-keygen es un generador de llaves para DNS seguro.

dnssec-makekeyset

dnssec-makekeyset genera un grupos de llaves a partir de una o más llaves creadas con dnssec-keygen.

nsupdate

nsupdate se utiliza para suministrar peticiones de actualización del DNS.