Hier ist das Schnelle und Schmutzige: Unter BIND9 mit einer dynamischen Zone, die von Ansichten gemeinsam genutzt wird, funktioniert das Aktualisieren / Erstellen / Löschen eines Datensatzes einwandfrei, wenn ich diesen Datensatz von einem Client abfrage, der in dieselbe Ansicht fällt wie das nsupdate von.
Wenn Sie aus einer Ansicht abfragen , die nicht mit der Ansicht übereinstimmt, die ich für nsupdate verwendet habe, wird NXDOMAIN ausgelöst (wenn ein neuer Datensatz hinzugefügt wird) oder es werden alte Datensatzinformationen im Falle einer Änderung / Aktualisierung bis zu einer beliebigen Zeitspanne angezeigt (z. B. 15) Minuten) vergeht, oder ich tue es gewaltsam $ rndc freeze && rndc thaw
. $ rndc sync
scheint überhaupt nichts zu tun, um das Problem zu beheben - ich hatte gehofft, dass es sich nur um eine Journaldateisache handelt, da dokumentiert ist, dass das Löschen des Journals etwa 15 Minuten dauert.
Wenn das nicht klar ist, finden Sie hier einen Pseudocode, um uns den Einstieg zu erleichtern:
BIND-Ansichten
view "cdn-redir" {
match-clients { 10.1.1.0/24; 10.1.2.0/24; };
include "cdn-zone.db";
include "dynamic-zone.db";
};
view "default" {
match-clients { any; };
include "dynamic-zone.db";
};
Beispiel Befehlszeile
user@ns:~$ nsupdate -k rndc.key
> server localhost
> zone example.com.
> update add foohost.example.com. 600 A 10.5.6.7
> send
> quit
user@ns:~$ dig foohost.example.com (resolv.conf points to 127.0.0.1)
[ responds with correct answer 10.5.6.7 ]
An anderer Stelle fällt ein Host in dieselbe Ansicht wie das nsupdate
[email protected]:~$ foohost.example.com (resolv.conf points to above nameserver)
[ responds with correct answer 10.5.6.7 ]
An anderer Stelle fällt der Host in eine andere Ansicht als das nsupdate
[email protected]:~$ dig foohost.example.com (resolv.conf points to above nameserver)
[ responds with NXDOMAIN even though I'm asking the same server ]
Wenn ich geduldig bin, wird sich das Problem zu diesem Zeitpunkt von selbst lösen (vielleicht 15 Minuten), aber ich habe häufig nicht den Luxus der Geduld, so dass ich gezwungen bin, $ rndc freeze && rndc thaw
auf dem Nameserver das Problem zwangsweise zu beheben.
Auf der Kehrseite
Auf der perfekt umgekehrten Seite kehrt sich das Problem um, wenn ich das nsupdate für den Server von einer Adresse aus durchführe, die in die Ansicht "cdn-redir" fällt. Nachfolgende Anfragen von Clients „CDN-redir“ erhalten die korrekte Aufzeichnung unmittelbar nach nsupdate passend ohne mit „rndc Frost / Tau - “ Hantieren, aber von Adressen abfragt , die außerhalb der Sicht von „CDN-redir“ fallen nun die Verzögerung / rndc silliness haben.
Meine letzte Frage
Wenn es so einfach wie 42 wäre, würde ich es mit offenen Armen nehmen ...
Ich möchte vermeiden, dass ich "rndc freeze && rndc thaw" muss, aus Angst, ein dynamisches Update vom DHCP-Server zu verpassen. Weiß jemand, wie die aktualisierten Datensätze effektiver / effizienter zwischen Ansichten synchronisiert werden können, oder kann er Aufschluss darüber geben, wo ich möglicherweise falsch liege?
Edit: BIND 9.9.5 / Ubuntu 14.04, aber es ist in früheren Versionen von Ubuntu und BIND passiert.
Vielen Dank an alle!
Wie von Andrew B angefordert , ist hier die redigierte (und teilweise) Zone:
$ORIGIN .
$TTL 3600
example.com IN SOA ns1.example.com. HOSTMASTER.example.com. (
2009025039 ; serial
900 ; refresh 15
600 ; retry 10
86400 ; expire 1 day
900 ; minimum 15 min
)
NS ns1.example.com.
$ORIGIN example.com.
$TTL 30
AEGIS A 10.2.1.60
TXT "31bdb9b3dec929e051f778dda5abd0dfc7"
$TTL 86400
ts-router A 10.1.1.1
A 10.1.2.1
A 10.1.3.1
A 10.1.4.1
A 10.1.5.1
A 10.1.6.1
A 10.1.7.1
A 10.1.8.1
A 10.2.1.1
A 10.2.2.1
A 10.2.3.1
ts-server A 10.2.1.20
ts-squid0 A 10.2.2.20
ts-squid1 A 10.2.2.21
$TTL 600
tssw4 A 10.2.3.4
tssw5 A 10.2.3.5
tssw6 A 10.2.3.6
tssw7 A 10.2.3.7
; wash rinse repeat for more hosts
$TTL 30
wintermute A 10.2.1.61
TXT "003f141e5bcd3fc86954ac559e8a55700"
quelle
zone
Erklärung sehen, weil meine Gedanken in eine ähnliche Richtung gingen wie die von Håkan.server
anstelle vonlocal external-ip-address
den MNAME der Zone (in der SOA der Zone) konsultiert und Sie möglicherweise zu einem anderen Nameserver führt, um Ihr DNS-Update durchzuführen (insbesondere, wenn Sie einen versteckten Master / öffentlichen Slave haben) oder Stealth-Master-Netzwerktopologie).Antworten:
Unterschiedliche Ansichten werden separat ausgeführt. Dies ist im Wesentlichen ein Vorteil gegenüber der Ausführung separater Instanzen von Named. Wenn es Zonen mit demselben Namen in verschiedenen Ansichten gibt, ist dies nur ein Zufall. Es handelt sich immer noch um völlig separate Zonen, die nicht mehr miteinander verbunden sind als alle anderen Zonen.
Wenn mehrere separate Zonen dieselbe Zonendatei verwenden, funktioniert dies nicht in Situationen, in denen bind den Zoneninhalt selbst aktualisiert (Slave-Zonen, Zonen mit dynamischen Aktualisierungen usw.). Ich bin mir nicht sicher, ob überhaupt die Gefahr besteht, dass die Zonendatei selbst beschädigt wird.
Möglicherweise können Sie so etwas wie das festlegen, was Sie tun möchten, indem Sie die Zone in einer Ansicht als Slave für die Zone mit demselben Namen in der anderen Ansicht festlegen. Dies wird eindeutig eine etwas komplizierte Konfiguration sein, aber die Verwendung von TSIG-Schlüsseln für Match-Clients sowie die Benachrichtigung / Übertragung sollte meiner Meinung nach machbar sein.
Bearbeiten: ISC hat einen KB-Artikel für dieses Szenario veröffentlicht. Wie kann ich eine dynamische Zone für mehrere Ansichten freigeben? Dies deutet auf die oben erwähnte Konfiguration hin.
Dies ist ihr Konfigurationsbeispiel mit etwas verbesserter Formatierung:
quelle
transfer-source 10.0.1.1;
(ohne die geschweiften Klammern) mit Binden 9.9.5 verwenden.Da ich ähnliche Probleme mit Ansichten hatte, beschloss ich, sie zu entfernen und die Autorisierung stattdessen in die Zonen zu verschieben.
Sie können die Ansichten in Fragen durch einfache Includes beider Zonendateien ersetzen, die aktuell freigegebenen Zonen unberührt lassen und der Definition "dynamic-zone.db" die Erlaubnis-Abfrage {} hinzufügen, wie:
Auf diese Weise erreichen Sie Ihr vermutetes Ziel, dynamic.zone nur von bestimmten Netzwerken aus zugänglich zu machen und andere Zonen öffentlich zu machen.
quelle