Ich richte einen BIND-Nameserver (v9.16) ein.
Sein Hauptzweck besteht darin, als regulärer Rekursor für unsere internen Hosts zu fungieren. Für einige bestimmte Zonen (die, die wir hosten) muss ich es jedoch als Weiterleitung einrichten. Das Ziel besteht darin, eine Abhängigkeit von Root- und TLD-DNS-Servern zu vermeiden und unsere internen Dienste auch dann weiter nutzen zu können, wenn unsere externen Netzwerkverbindungen nicht verfügbar sind.
Dies war einfach einzurichten, hier die relevanten Teile meiner Konfiguration:
options {
allow-recursion {
// Here comes the list of our inside networks
};
};
zone "somedomain.example" IN {
type forward;
forward first;
forwarders {
// Here comes the list of the primary servers for this zone
};
// ... repeated for all forward zones
Dieses Setup funktioniert wie erwartet, allerdings mit einer kleinen Unannehmlichkeit. Die Liste der primären Server muss für alle „Forward“-Zonen wiederholt werden. Wir haben ziemlich viele davon, alle mit IPv4- und IPv6-Adressen, und die Liste für alle Zonen ist weder die eleganteste Lösung, die ich je gesehen habe, noch ist sie sehr DRY-kompatibel.
Ich weiß, dass die forwarders
Anweisung auch in den globalen Abschnitt aufgenommen werden kann options
, aber aus grundlegenden Experimenten weiß ich, dass diese Anweisung nicht für Weiterleitungszonen gilt, sondern nur für einen Nur-Weiterleitungs-Nameserver gedacht ist (die Dokumentation ist nicht ganz eindeutig, erwähnt aber, dass „wenn keine forwarders
Anweisung vorhanden ist, [...] die Auswirkungen aller Weiterleitungen in der options
Anweisung aufgehoben werden“).
Gibt es eine Möglichkeit, eine benannte Liste von Weiterleitungen zu erstellen, mehr oder weniger auf die gleiche Weise, wie wir ACLs erstellen, und diesen symbolischen Namen in der forwarders
Anweisung innerhalb der relevanten Zonen zu verwenden?
Antwort1
Wie viele andere Daemons und Dienste unterstützt ISC Bind eineinclude
Direktive in seinen Konfigurationsdateien.
Dadurch können Sie eine Liste mit Konfigurationseinstellungen und Anweisungen in eine andere Datei verschieben und bei Bedarf auf diesen Include verweisen.
Dadurch wird Ihr Verwaltungsaufwand verringert, da Sie Ihre Spediteurliste nur an einer einzigen Stelle pflegen und die Referenz nur dort kopieren müssen, wo sie benötigt wird.
// "/var/named/includes/forwarders.conf"
// master list of forwarders
forwarders {
192.0.2.21;
192.0.2.88;
};
und dann in deiner named.conf:
zone "somedomain.example" IN {
type forward;
forward first;
include "/var/named/includes/forwarders.conf";
}
zone "otherdomain.example" IN {
type forward;
forward first;
include "/var/named/includes/forwarders.conf";
}