Configurar un DNS de horizonte dividido maestro/esclavo con Bind

Por qué un maestro / esclavo

Contents

Ningún sistema o instalación tiene un tiempo de actividad perfecto del 100% y, dado que el DNS puede ser un componente bastante crítico de la red, se recomienda tener un DNS secundario para proporcionar una copia de seguridad en caso de que el primario falle. Podríamos simplemente tener dos servidores DNS iguales que tengan la misma configuración y datos. Aunque esto funcionaría perfectamente, requeriría que hicieramos todos los cambios dos veces. Una en el primario y otra en el secundario.
Configurando un servidor como maestro y el otro como esclavo, el esclavo replicará sus datos de zona desde el maestro. De esta manera, cuando se hacen cambios en alguna zona en el maestro, el esclavo recibe una notificación y se hace cargo de los cambios casi instantáneamente sin necesidad de hacer ninguna configuración en el lado del esclavo.
El principal archivo de configuración para bind es /etc/bind/named.conf. Incluye punteros a otros archivos que bind necesita para comprobar las configuraciones. Veamos un archivo named.conf típico.

# cat /etc/bind/named.conf
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

La configuración anterior sólo indica a bind que busque en los archivos /etc/bind/named.conf.options, /etc/bind/named.conf.local, /etc/bind/named.conf.default-zones.
El archivo /etc/bind/named.conf.options contiene el conjunto de opciones generales para bind. Cosas como las siguientes se mencionan en ese archivo.

  • Escuchar en puerto e interfaz
  • Permitir consulta
  • Permitir la transferencia a las direcciones de origen
  • Permitir la recursión o no
  • Ubicación del archivo PID
  • Lista de IPs permitidas para consultar este servidor DNS
  • Habilitar/Deshabilitar DNSSEC para la transferencia de zonas
  • Ubicación de la caché… etc
# cat /etc/bind/named.conf.options
options {
        directory       "/var/cache/bind/";
        dnssec-validation auto;
        auth-nxdomain no;
        listen-on-v6 { none; };
        listen-on port 53 { 127.0.0.1; 10.10.20.2;};
        allow-query     { any;};
        allow-recursion { localhost; ::1; 10.10.20.0/24; };
        allow-transfer { none; };
        pid-file "/var/run/named/named.pid";
        notify yes;
};

La característica más importante de bind que permite esta configuración de horizonte dividido se llama “vistas”. Las vistas en bind permiten alojar un conjunto de configuración para algunos, y uno distinto para otros.
Bueno, técnicamente, incluso si no se configura ninguna vista… bind creará una vista y esa vista se sirve internamente a todas las consultas de todas las fuentes.
Las vistas en bind se crean usando la cláusula view como se muestra a continuación.

view "ejemplovista" {
};

Las secciones de vistas están organizadas debajo de la sección de opciones que vimos antes. Así que vamos a mantener nuestras vistas en el archivo /etc/bind/named.conf.options, que ya incluimos en named.conf.
Para definir las direcciones de origen que serán aplicables a la vista utilizaremos declaraciones acl.

acl "ejemploacl" { 10.10.10.0/24; 10.10.20.0/24; };
     view "ejemplovista" {
		match-clients { "ejemploacl"; };
	 };

Sólo hay que tener en cuenta que es necesario definir la declaración acl fuera de la declaración views.