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. AXFRund er druckt den gesamten Inhalt der Zone aus. Damit dies funktioniert, ist der DNS-Master mit notify yesund konfiguriert also-notify { dnsslave }. Ebenso ist der Slave mit konfiguriert allow-transfer { dnsmaster }.
Wenn dnsmaster aktualisiert wird, werde ich ausgeführt rndc reloadund 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-sizeund max-cache-ttlauf 0 gesetzt, aber das hatte keine Auswirkung.
Ich habe versucht, diesen angeblichen Cache auf andere Weise zu leeren, indem ich Befehle wie rndc flushund rndc reloadauf dem Slave-Server ausgeführt habe, aber es werden immer noch die alten veralteten Datensätze zurückgegeben.
Schließlich bemerkte ich, dass MINTTLin der Zone 86400 (24 Stunden) eingestellt war, also änderte ich vorübergehend die MINTTLauf 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 TTLund 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.