bind9: cómo consultar servidores de nombres externos en la configuración de la zona local

bind9: cómo consultar servidores de nombres externos en la configuración de la zona local

He configurado una zona en mi bind9instalación. Se supone que es un servidor de nombres público que administro a través de un script en Python para los subdominios de Dyndns. Pero mi sitio web principal está alojado en un tercero en otro lugar y, en un futuro próximo, también quiero alojarlos localmente. Por ahora, quiero que bind9 busque en la base de datos local la resolución de nombres y, en caso de falla, redirija a (o obtenga de) DNS externo. Aquí está mi configuración, pero no funciona para consultas externas (example.com y www.example.com).

$ cat /etc/bind/named.conf.local
include "/etc/bind/zones.rfc1918";
zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    allow-transfer { any; };
    update-policy local;
};

$ cat /etc/bind/zones/db.example.com
$ORIGIN .
$TTL 172800     ; 2 days
example.com               IN SOA  ns1.example.com. hostmaster.example.com. (
                          116        ; serial
                          7200       ; refresh (2 hours)
                          900        ; retry (15 minutes)
                          1857600    ; expire (3 weeks 12 hours)
                          8400       ; minimum (2 hours 20 minutes)
                          )
                    NS      ns1.example.com.
                    NS      ns1.external-host.com.
                    NS      ns2.external-host.com.
ns1.external-host.com      A       1.2.3.1
ns2.external-host.com      A       1.2.3.2

$ORIGIN example.com.
ns1                     A       1.1.1.1
@            IN         NS      ns1.external-host.com.
@            IN         NS      ns2.external-host.com.
www            IN         NS      ns1.external-host.com.
www           IN         NS      ns2.external-host.com.
clients                 A       1.1.1.1
$ORIGIN clients.example.com.
$TTL 3600       ; 1 hour
test                    A       2.2.2.2

Respuesta1

Creo que esto no es posible porque uno de sus servidores de nombres es local (no se puede acceder desde el otro). Técnicamente, puedes probar los reenviadores o la opción multimaestro. Pero no es la mejor manera para una configuración pequeña, incluso si funciona.

DNS se basa en la información de qué servidor es el maestro de zona; esto se establece por tipo. Una zona masterresponsable de tener la información actual y por lo tanto debe haber una sola (ya que puede haber diferencias entre instancias). Las zonas slaveconocen al maestro y pueden preguntarle directamente por toda la zona. Si el maestro también sabe que son esclavos, también puede transferir toda la zona. Esto es lo que deberías hacer.

Mantenga el servidor de nombres públicos donde está y manténgalo como maestro. En su entorno local instale el segundo enlace y agregue la zona como esclava. También agregue el esclavo al maestro para que funcione la actualización automática. Para comprobar los registros de ambos, se deben realizar solicitudes AXFR o IXFR.

Entonces sus definiciones de zona pueden verse así, suponiendo que maestro sea 1.2.3.4 y esclavo 5.6.7.8:

maestro:

zone "example.com" {
    type master;
    file "/etc/bind/zones/db.example.com";
    also-notify { 5.6.7.8; };
    notify yes;
};

esclavo:

zone "example.com" {
    type slave;
    file "/etc/bind/zones/db.example.com"; // this is the file updated.
    allow-notify { 1.2.3.4; };
    allow-transfer { 1.2.3.4; };
};

Como puede ver, el esclavo debe ser accesible desde el maestro ya que su dirección está configurada estáticamente.

información relacionada