DNS-Replikation mit PowerDNS

  • Hallo zusammen,


    ich wollte kurz das von mir getestete Setup in Sachen DNS-Replikation vorstellen. Das Problem ist ja, dass LiveConfig andere DNS-Server nicht über neue DNS-Zonen benachrichtigen kann. Daher müssen die Zonen immer erst vorher angelegt werden, was durchaus mühselig sein kann.


    Ein denkbar simpler Workaround ist hier mit PowerDNS möglich. PowerDNS unterstützt den Superslave-Modus und ist damit in der Lage vom LiveConfig-BIND alle Zonen zu pullen und diese selbstständig anzulegen, zu löschen und zu updaten. Man kann die Replikations-Slaves also völlig unangetastet lassen nach der ersten Konfiguration.


    Ich habe mich an diesem Tutorial hier orientiert und es mit etwa 30 Domains getestet - es funktioniert einwandfrei.

  • ich wollte kurz das von mir getestete Setup in Sachen DNS-Replikation vorstellen. Das Problem ist ja, dass LiveConfig andere DNS-Server nicht über neue DNS-Zonen benachrichtigen kann. Daher müssen die Zonen immer erst vorher angelegt werden, was durchaus mühselig sein kann.


    nö.


    LiveConfig-Client dem Nameserver installieren und in den LC-Cluster einbinden. Läuft problemlos, so dass LiveCOnfig die Zonen dann auch auf den Slaves anlegt.


    Zitat

    PowerDNS unterstützt den Superslave-Modus und ist damit in der Lage vom LiveConfig-BIND alle Zonen zu pullen und diese selbstständig anzulegen, zu löschen und zu updaten. Man kann die Replikations-Slaves also völlig unangetastet lassen nach der ersten Konfiguration.


    Das Löschen halte ich - auch aus eigener Erfahrung - für ein Gerücht.


    Ich darf aus der Doku zitieren:


    Zitat von https://doc.powerdns.com/md/authoritative/modes-of-operation/

    Note: Removal of zones provisioned using the supermaster must be done on the slaves themselves. As there is no way to signal this removal from the master to the slave.


    Inwieweit das praktikabel ist, muss jeder selbst entscheiden. Ich empfinde es als suboptimal, wenn ein Slave auch weiterhin auf eine Zone reagiert, die schon gelöscht ist.

  • LiveConfig-Client dem Nameserver installieren und in den LC-Cluster einbinden. Läuft problemlos, so dass LiveCOnfig die Zonen dann auch auf den Slaves anlegt.


    Sicherheitstechnisch benötigt Liveconfig/BIND9 dabei mal ein Update.
    PowerDNS kann hmac-sha512. Liveconfig gibt den Algorithmus HMAC-MD5 bzgl. TSIG vor.


    Code
    pdnsutil generate-tsig-key slavesha512 hmac-sha512
    pdnsutil generate-tsig-key slavemd5 hmac-md5


    Dazu gibt es noch einpaar Fallstricke bei den IP-Adressen damit es an den anderen Server mit PowerDNS gemeldet wird.


    Bei der IPv4 wird wohl die erste IPv4 in der Liste genommen (oder Haupt-IPv4 vom Server) seitens Liveconfig/BIND9.
    Dagegen bei IPv6 die letzte IPv6 aus der Liste wenn eine Meldung an PowerDNS raus geht seitens Liveconfig/BIND9..
    Anderenfalls endet PowerDNS in Meldungen das man nicht berechtigt sei.


    Heißt in der Serverwaltung lauscht der BIND9 unter Liveconfig auf den eingestellten IP-Adressen aber nutzt es nicht für rausgehende Requests.


    Inwieweit das praktikabel ist, muss jeder selbst entscheiden. Ich empfinde es als suboptimal, wenn ein Slave auch weiterhin auf eine Zone reagiert, die schon gelöscht ist.


    Ja leider. Ein zusätzliches Skript für die Löschung ist nötig (oder per PowerDNS Webinterface/API mit Liveconfig lua gleich für alles nutzen). Als Test einfach mal die Domain in Liveconfig löschen und neu hinzufügen, schon hast ein Duplicate error bei PowerDNS im Log (loglevel=4).

  • Bei der IPv4 wird wohl die erste IPv4 in der Liste genommen (oder Haupt-IPv4 vom Server) seitens Liveconfig/BIND9.
    Dagegen bei IPv6 die letzte IPv6 aus der Liste wenn eine Meldung an PowerDNS raus geht seitens Liveconfig/BIND9..


    Das ist das reguläre Verhalten bei Source-Adress-Auswahl, wenn die Adresse nicht explizit gesetzt wird.


    Für IPv6 kann eine IP mit "preferred_lft 0" auf "nicht für ausgehende Verbindungen nutzen" gesetzt werden. Ob das dann das Mail-Outbound-IP-Szenario weiterhin funktioniert, weiß ich adhoc nicht.

  • Das ist das reguläre Verhalten bei Source-Adress-Auswahl, wenn die Adresse nicht explizit gesetzt wird.


    In Liveconfig selbst sind die gewünschten IP-Adressen (IPv4+IPv6) für BIND9 ausgewählt, nur werden die scheinbar lediglich für eingehende Verbindungen gesetzt bzw. genutzt.


    Für IPv6 kann eine IP mit "preferred_lft 0" auf "nicht für ausgehende Verbindungen nutzen" gesetzt werden. Ob das dann das Mail-Outbound-IP-Szenario weiterhin funktioniert, weiß ich adhoc nicht.


    Danke für den Tipp. Leider soll es nur für BIND9/Liveconfig/Powerdns sein, nicht für den ganzen Server.
    Der Server nutzt derzeit Ubuntu 20.04 LTS als Grundsystem.


    Habe es auch wie im Handbuch steht und im Thema Bind9 näher beschrieben es versucht aber scheinen nicht die richtigen Optionen bzw. Befehle für BIND9 zu sein.

  • Es gibt die Möglichkeit, die Quell-IPs bei BIND explizit zu konfigurieren.
    Bearbeiten Sie testweise mal die Datei /etc/bind/named.conf.options und fügen dort im options-Abschnitt folgende Einstellungen ein:


    Code
    transfer-source { 169.254.12.34; };
    notify-source { 169.254.12.34; };
    transfer-source-v6 { 2001:db8::1; };
    notify-source-v6 { 2001:db8::1; };


    IPs natürlich entsprechend anpassen. Danach BIND neu starten und beobachten, ob damit alles wie gewünscht funktioniert.
    Wenn ja, dann nehmen wir das gerne in ein kommendes Update mit auf.


    Bis dahin lässt sich das über z.B. /etc/liveconfig/lua.d/bind.lua mit folgendem Inhalt einrichten (siehe Handbuch:(

    Code
    bind.LOCALOPTIONS = {
      ['transfer-source'] = "{ 169.254.12.34; }",
      ['notify-source'] = "{ 169.254.12.34; }",
      ['transfer-source-v6'] = "{ 2001:db8::1; }",
      ['notify-source-v6'] = "{ 2001:db8::1; }"
    }


    Viele Grüße


    -Klaus Keppler

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!