bind9: So fragen Sie externe Nameserver in der lokalen Zonenkonfiguration ab

bind9: So fragen Sie externe Nameserver in der lokalen Zonenkonfiguration ab

Ich habe in meiner bind9Installation eine Zone konfiguriert. Es soll ein öffentlicher Nameserver sein, den ich über ein Python-Skript für DynDNS-Subdomains verwalte. Aber meine Hauptwebsite wird von einem Drittanbieter woanders gehostet und in naher Zukunft möchte ich sie auch lokal hosten. Im Moment möchte ich, dass Bind9 in der lokalen Datenbank nach der Namensauflösung sucht und im Fehlerfall zu externen DNS umleitet (oder von diesen abruft). Hier ist meine Konfiguration, aber sie funktioniert nicht für externe Abfragen (example.com und 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

Antwort1

Ich denke, das ist nicht möglich, da einer Ihrer Nameserver lokal ist (vom anderen aus nicht erreichbar). Technisch gesehen können Sie die Forwarder- oder Multi-Master-Option ausprobieren. Aber selbst wenn es funktioniert, ist das für eine kleine Konfiguration nicht die beste Lösung.

DNS basiert auf der Information, welcher Server der Zonenmaster ist – dies wird durch den Typ festgelegt. Eine Zone masterist dafür verantwortlich, die aktuellen Informationen zu haben, und daher sollte es nur eine geben (da es zwischen den Instanzen Unterschiede geben kann). Zonen slavekennen den Master und können ihn direkt für die gesamte Zone abfragen. Wenn der Master auch seine Slaves kennt, kann er auch die gesamte Zone übertragen. Das sollten Sie tun.

Behalten Sie den öffentlichen Nameserver, wo er ist, und lassen Sie ihn als Master. Installieren Sie in Ihrer lokalen Umgebung den zweiten Bind und fügen Sie die Zone als Slave hinzu. Fügen Sie den Slave auch zum Master hinzu, damit das automatische Update funktioniert. Zum Nachweis sollten Sie in die Protokolle beider schauen, es sollten AXFR- oder IXFR-Anfragen gestellt worden sein.

Ihre Zonendefinitionen könnten also folgendermaßen aussehen, vorausgesetzt, der Master ist 1.2.3.4 und der Slave 5.6.7.8:

Meister:

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

Sklave:

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; };
};

Wie Sie sehen, muss der Slave vom Master aus erreichbar sein, da seine Adresse statisch konfiguriert ist.

verwandte Informationen