El paquete BIND proporciona un servidor DNS y utilidades de cliente.
Descarga (HTTP): http://gd.tuwien.ac.at/infosys/servers/isc/bind9/9.2.2/bind-9.2.2.tar.gz
Descarga (FTP): ftp://ftp.isc.org/isc/bind9/9.2.2/bind-9.2.2.tar.gz
Tamaño del paquete: 4.8 MB
Estimación del espacio necesario en disco: 90 MB
Tiempo estimado de construcción: 0.89 SBU
Instala BIND ejecutando los siguientes comandos:
./configure --prefix=/usr --sysconfdir=/etc && make && make install |
named.conf, root.hints, 127.0.0, rndc.conf
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 |
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.
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.
dig interroga servidores DNS.
host es una utilidad para consultas DNS.
rndc controla las operaciones de BIND.
rndc-confgen genera ficheros rndc.conf.
named-checkconf comprueba la sintaxis de ficheros named.conf.
named-checkzone comprueba la validez de los ficheros de zona.
lwresd es un servidor de nombres que sólo busca consultas guardadas, para usar con procesos locales.
named es el demonio servidor de nombres.
dnssec-signzone genera versiones firmadas de los ficheros de zona.
dnssec-signkey firma grupos de llaves de ficheros de zona.
dnssec-keygen es un generador de llaves para DNS seguro.
dnssec-makekeyset genera un grupos de llaves a partir de una o más llaves creadas con dnssec-keygen.
nsupdate se utiliza para suministrar peticiones de actualización del DNS.