Ich habe zwei DNS-Server mit BIND9, einen Master und einen Slave. Wenn die Zonendatei auf dem Master aktualisiert wird, möchte ich, dass der Slave-Server sofort mit der Bereitstellung der geänderten Datensätze beginnt, aber BIND gibt mir ein wenig Ärger.
Die DNS-Zonenübertragung zwischen Master und Slave funktioniert bereits ordnungsgemäß. Ich kann mich beim Slave-Server anmelden und ausführen dig @dnsmaster myzone. AXFR
und er druckt den gesamten Inhalt der Zone aus. Damit dies funktioniert, ist der DNS-Master mit notify yes
und konfiguriert also-notify { dnsslave }
. Ebenso ist der Slave mit konfiguriert allow-transfer { dnsmaster }
.
Wenn dnsmaster aktualisiert wird, werde ich ausgeführt rndc reload
und es wird mir mitgeteilt, dass Benachrichtigungen gesendet werden. Dies wird auf dem Slave durch Überprüfen der Zonendateien in bestätigt /var/named/slavedata/
. Sie enthalten die neuesten Daten, die dem entsprechen, was der Master weiß.
Jetzt kommt der seltsame Teil.
Der Slave-Server stellt weiterhin alte, veraltete DNS-Einträge bereit und ignoriert vollständig die Tatsache, dass neue Daten auf der Festplatte verfügbar sind, nachdem sie vom Master benachrichtigt wurden. Ich verwende dig
, um die Ergebnisse mit diesem Befehl zu überprüfen : dig @slaveserver record.zone.tld
.
Ich dachte, BIND könnte einen In-Memory-Cache seiner autorisierenden Zonen behalten, also habe ich max-cache-size
und max-cache-ttl
auf 0 gesetzt, aber das hatte keine Auswirkung.
Ich habe versucht, diesen angeblichen Cache auf andere Weise zu leeren, indem ich Befehle wie rndc flush
und rndc reload
auf dem Slave-Server ausgeführt habe, aber es werden immer noch die alten veralteten Datensätze zurückgegeben.
Schließlich bemerkte ich, dass MINTTL
in der Zone 86400 (24 Stunden) eingestellt war, also änderte ich vorübergehend die MINTTL
auf 15 Sekunden und startete den Slave-Server neu. Keine Auswirkung - Der Slave würde erst nach dem Neustart des Dienstes aktualisierte DNS-Ergebnisse bereitstellen.
Was ist denn hier los? Was ist das erwartete Verhalten von BIND9 beim Empfang einer Benachrichtigung, dass eine Zone aktualisiert wird? Respektiert es immer TTL
und MINTTL
? Ich würde davon ausgehen, dass immer die neuesten verfügbaren Daten verwendet werden.
Am Ende meines Witzes denke ich darüber nach, eine Crontab einzurichten, um die BIND-Slaves stündlich neu zu starten, um zu vermeiden, dass veraltete Daten bereitgestellt werden. Gibt es etwas Besseres?
rndc reload
.