Como instalar un server de DNS con BIND en linux
Posted in DNS on octubre 31st, 2008 by Itimag – Be the first to commentContinuando con el Curso de Administración de Servidores, hoy toca ver como instalar un servidor bind en una distribución basada en Debian (Debian etch, Ubuntu, Kubuntu, etc.)
En pocas palabras, ¿Qué hace un servidor de DNS?
Es el encargado de convertir distintos nombres de dominio (Ej: www.itimag.net) en su ip. Por lo tanto, cada vez que accedemos a un servidor mediante un dominio de internet, pasamos por un servidor de dns que se encarga de decirnos cúal es la ip del equipo en la que se encuentra la web a la que estamos accediendo.
Pasemos a la acción. Para instalar bind, ejecutamos el siguiente comando en una consola o shell:
suapt-get install bind9
Por razones de seguridad, vamos a ejecutar el BIND de tal forma que pueda correr en un directorio chroot. Lo hacemos de la siguiente forma:
/etc/init.d/bind9 stop
Editamos el fichero /etc/default/bind9 . Queremos que el demonio del bind se ejecute con el usuario bind sin privilegios, “chrooted” al directorio /var/lib/named. Para ello, buscamos donde pone <<OPTIONS=”-u bind”>> y lo substituimos por <<OPTIONS=”-u bind -t /var/lib/named”>>:
nano /etc/default/bind9
OPTIONS="-u bind -t /var/lib/named" # Set RESOLVCONF=no to not run resolvconf RESOLVCONF=yes
Ahora creamos los directorios necesarios en /var/lib:
mkdir -p /var/lib/named/etc mkdir /var/lib/named/dev mkdir -p /var/lib/named/var/cache/bind mkdir -p /var/lib/named/var/run/bind/run
Y a continuación movemos el directorio de configuración desde /etc hasta /var/lib/named/etc:
mv /etc/bind /var/lib/named/etc
Creamos un link simbólico al nuevo directorio de configuración partiendo del antiguo directorio (para evitar problemas cuando bind se actualice):
ln -s /var/lib/named/etc/bind /etc/bind
Hacemos “null” y “random”, y cambiamos los permisos de los directorios:
mknod /var/lib/named/dev/null c 1 3 mknod /var/lib/named/dev/random c 1 8 chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random chown -R bind:bind /var/lib/named/var/* chown -R bind:bind /var/lib/named/etc/bind
Ahora necesitamos modificar el fichero /etc/default/syslogd con la finalidad de registrar los mensajes que muestre bind el algún fichero de log. Debemos buscar la linea que pone <<SYSLOGD=”">> y lo substituimos por <<SYSLOGD=”-a /var/lib/named/dev/log”>>:
nano /etc/default/syslogd
El fichero resultante es el siguiente:
# # Top configuration file for syslogd # # # Full documentation of possible arguments are found in the manpage # syslogd(8). # # # For remote UDP logging use SYSLOGD="-r" # SYSLOGD="-a /var/lib/named/dev/log"
Reiniciamos el demonio del generador de logs:
/etc/init.d/sysklogd restart
Iniciamos o arrancamos BIND, y chequeamos /var/log/syslog para observar si se han producido errores:
/etc/init.d/bind9 start
Para ver si hay errores, hacemos:
less /var/log/syslog
Ahora pulsamos la z para recorrer el texto hasta el final y observamos si se ha producido algún error tras reiniciar:
Ejemplo:
Sep 22 13:13:01 ksxxxxx syslogd 1.4.1#18: restart. Sep 22 13:13:01 ksxxxxx /USR/SBIN/CRON[11162]: (root) CMD (/usr/local/rtm/bin/rtm 12 > /dev/null 2> /dev/null) Sep 22 13:13:15 ksxxxxx named[11217]: starting BIND 9.3.4-P1.1 -u bind -t /var/lib/named Sep 22 13:13:15 ksxxxxx named[11217]: found 1 CPU, using 1 worker thread Sep 22 13:13:15 ksxxxxx named[11217]: loading configuration from '/etc/bind/named.conf' Sep 22 13:13:15 ksxxxxx named[11217]: no IPv6 interfaces found Sep 22 13:13:15 ksxxxxx named[11217]: listening on IPv4 interface lo, 127.0.0.1#53 Sep 22 13:13:15 ksxxxxx named[11217]: listening on IPv4 interface eth0, 213.251.xxx.xxx#53 Sep 22 13:13:15 ksxxxxx named[11217]: command channel listening on 127.0.0.1#953 Sep 22 13:13:15 ksxxxxx named[11217]: zone 0.in-addr.arpa/IN: loaded serial 1 Sep 22 13:13:15 ksxxxxx named[11217]: zone 127.in-addr.arpa/IN: loaded serial 1 Sep 22 13:13:15 ksxxxxx named[11217]: zone 255.in-addr.arpa/IN: loaded serial 1 Sep 22 13:13:15 ksxxxxx named[11217]: zone localhost/IN: loaded serial 1 Sep 22 13:13:15 ksxxxxx named[11217]: running
En este ejemplo, no se observa ningún mensaje de error y, por lo tanto, la instalación ha sido un éxito.