40.4. El archivo de configuración /etc/named.conf

La configuración de BIND se realiza por completo con el archivo /etc/named.conf. Los datos propios de la zona, que son los nombres de los ordenadores, direcciones IP, etc. de los dominios administrados, se han de anotar en archivos adicionales dentro del directorio /var/lib/named. Esta información se ampliará más adelante.

A grandes rasgos, /etc/named.conf se estructura en dos secciones: la primera es options para la configuración general y la siguiente es la que contiene las entradas zone para los diferentes dominios. También es posible utilizar una sección logging o una con entradas del tipo acl (Access Control List). Las líneas comentadas comienzan con el símbolo # o //. El Ejemplo 40.2, “Archivo /etc/named.conf” representa un archivo /etc/named.conf muy sencillo.

Ejemplo 40.2. Archivo /etc/named.conf

options { 
        directory "/var/lib/named"; 
        forwarders { 10.0.0.1; };
    notify no;
};

zone "localhost" in {
                type master;
                file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
                type master;
                file "127.0.0.zone";
};

zone "." in {
                type hint;
                file "root.hint";
};

40.4.1. Información adicional sobre la configuración de BIND

directory "filename";

especifica el directorio que contiene los archivos con los datos de zona. Este es normalmente /var/lib/named.

forwarders { ip-address; };

se utiliza para indicar uno o varios servidores de nombres (generalmente los del proveedor) para pasarles las consultas DNS que no se pueden resolver directamente. En lugar de ip-address utilice una dirección IP como 10.0.0.1.

forward first;

hace que las consultas DNS se reenvíen antes de tratar de resolverlas mediante un servidor de nombres raíz. En lugar de forward first también es posible utilizar forward only para que todas las consultas sean siempre reenviadas sin acceder nunca a los servidores de nombres raíz. Esta es una opción razonable para una configuración con cortafuegos.

listen-on port 53 {127.0.0.1; ip-address; };

indica las interfaces de red y el puerto que debe utilizar BIND para atender las peticiones DNS realizadas por los clientes. Es posible suprimir port 53, ya que éste es el puerto estándar. Por medio de 127.0.0.1 se autorizan las consultas del ordenador local. Si se omite esta entrada, se utilizan por defecto todas las interfaces.

listen-on-v6 port 53 {any; };

indica a BIND el puerto en el que ha de esperar las consultas de los clientes que utilizan IPv6. Además de any sólo se admite none, ya que el servidor siempre escucha en la dirección comodín de IPv6.

query-source address * port 53;

Esta entrada puede resultar útil si un cortafuegos bloquea las consultas DNS externas, ya que BIND deja de utilizar los puertos altos (superiores a 1024) y realiza las consultas externas desde el puerto 53.

query-source-v6 address * port 53;

Esta entrada debe utilizarse para las consultas realizadas a través de IPv6.

allow-query {127.0.0.1; net; };

determina desde qué redes está permitido hacer consultas DNS. En lugar de net debe introducirse una dirección como 192.168.1/24. /24 es una abreviatura que representa el número de bits en la máscara de red, en este caso 255.255.255.0.

allow-transfer ! *;;

determina qué ordenadores pueden solicitar transferencias de zonas. ! * prohibe totalmente la transferencia. Suprimiendo esta entrada, cualquier ordenador puede solicitar las transferencias de zona.

statistics-interval 0;

Sin esta entrada, BIND crea cada hora varias líneas con datos estadísticos en /var/log/messages. Indicando 0, los mensajes se suprimen. El tiempo se expresa en minutos.

cleaning-interval 720;

Esta opción indica el intervalo de limpieza de la cache de BIND. Cada vez que se realiza esta acción se crea una entrada en /var/log/messages. El tiempo se indica en minutos y el valor predeterminado es de 60 minutos.

interface-interval 0;

BIND busca continuamente interfaces de red nuevas o canceladas Esta opción se suprime introduciendo el valor 0. De este modo, BIND sólo escucha en las interfaces que existían en el momento del inicio. Es posible indicar un intervalo en minutos; el valor predeterminado es 60 minutos.

notify no;

significa que el cambio de los datos de zona o el reinicio del servidor de nombres no se notifica a ningún otro servidor de nombres.

40.4.2. El apartado de configuración de registro Logging

Existen muchas posibilidades de registrar eventos con BIND. Normalmente la configuración predeterminada es suficiente. El Ejemplo 40.3, “Registro suprimido” muestra la forma más sencilla de una configuración que suprime totalmente el “registro”:

Ejemplo 40.3. Registro suprimido

logging {
        category default { null; };
};

40.4.3. Estructura de las entradas de zona

Ejemplo 40.4. Zone Entry for my-domain.de

zone "my-domain.de" in {
      type master;
      file "my-domain.zone";
      notify no;
};

Después de zone se indica el nombre de dominio a administrar (en este caso mi-dominio.es) seguido de in y un bloque de opciones entre corchetes; véase el Ejemplo 40.4, “Zone Entry for my-domain.de”. Para definir una zona esclava o slave zone, sólo es necesario cambiar type a slave e indicar un servidor de nombres que administre esta zona como master (también puede ser un “slave”); véase el Ejemplo 40.5, “Configuración de mi-dominio.es”.

Ejemplo 40.5. Configuración de mi-dominio.es

zone "otro-dominio.es" in {
      type slave;
      file "slave/otro-dominio.zone";
      masters { 10.0.0.1; }; 
};

Las opciones de zona:

type master;

master significa que esta zona se administra en este servidor de nombres. Es algo que requiere un archivo de zona muy bien configurado.

type slave;

Esta zona se transfiere de otro servidor de nombres. Hay que usarlo junto con masters.

type hint;

La zona . del tipo hint se utiliza para indicar los servidores de nombres raíz. Es una definición de zona que no se modifica.

file mi-dominio.zone o file “slave/otro-dominio.zone”;

Esta entrada indica el archivo que contiene los datos de zona para el dominio. En caso de un slave no hace falta que el archivo exista, ya que se trae desde otro servidor de nombres. Para separar los archivos de esclavo y de maestro, se indica slave como directorio de los archivos slave.

masters { server-ip-address; };

Esta entrada sólo se requiere para zonas esclavo e indica desde qué servidor de nombres se debe transferir el archivo de zona.

allow-update {! *; };

Esta opción regula el acceso de escritura desde el exterior a los datos de zona. Es una opción que permite a los clientes de crear su propia entrada en el DNS, lo que no es deseable por razones de seguridad. Sin esta entrada las actualizaciones de zona están prohibidas, cosa que no cambia nada en este ejemplo, ya que ! * prohibe igualmente todo.