So konfigurieren Sie die DNS-Replikation auf einem Slave-PowerDNS-Server unter Ubuntu 14.04

Einführung

In diesem Tutorial erfahren Sie, wie Sie PowerDNS in einer Master / Slave-Konfiguration mit automatischer Replikation vom Master-DNS-Server zum Slave einrichten. Dieses Tutorial ist das zweite Tutorial in unserem https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-powerdns-with-a-mariadb-backend-on-ubuntu-14-04 [ PowerDNS] -Serie für Ubuntu.

Eine Master / Slave-Konfiguration bietet zusätzliche Zuverlässigkeit. Wenn einer Ihrer PowerDNS-Server ausfällt, verfügen Sie über einen sekundären Server, der die Anforderungen verarbeitet.

Wir empfehlen, diese Server in separaten Rechenzentren bereitzustellen. Wenn sie sich an zwei physischen Standorten befinden, wirkt sich selbst ein Ausfall des Rechenzentrums nicht auf Ihren DNS-Dienst aus.

Am Ende dieses Tutorials werden wir zwei funktionierende PowerDNS-Server mit Master / Slave-Replikation haben.

Voraussetzungen

Bitte füllen Sie diese Anforderungen aus:

  • Zwei 512 MB Droplets oder größer mit Ubuntu 14.04 64-Bit. 512 MB sollten ausreichen, um einen PowerDNS-Server mit einer moderaten Anzahl von Zonen / Datensätzen zu betreiben

  • Ein sudo user

  • https://www.digitalocean.com/community/tutorials/installations- und konfigurationsanleitung- für-powerdns-mit-mariadb-backend-on-ubuntu-14-04[Installieren und Konfigurieren von PowerDNS mit a MariaDB Backend auf Ubuntu 14.04] (Details in Schritt 1)

  • Leimen Sie Datensätze und Nameserver-Einstellungen für Domains, die bei Ihrem Registrar konfiguriert wurden

In unserem vorherigen Lernprogramm haben wir drei Unterdomänen auf einen einzelnen PowerDNS-Server verwiesen. Wir werden nun eine dieser Subdomänen verwenden, um auf unseren Slave-Server zu verweisen. In unseren Beispielen ist unsere * Master-Server-IP * "" und unsere * Slave-Server-IP * "".

Sie müssen die Klebstoffaufzeichnungen bei Ihrem Anbieter entsprechend aktualisieren. Bitte verwenden Sie die folgenden Informationen als Richtlinie. Weitere Informationen zum Konfigurieren Ihrer DNS-Einträge finden Sie im vorherigen PowerDNS-Lernprogramm.

  • * hostmaster.example-dns.com * ++ (Master Server)

  • * ns1.example-dns.com * ++ (Master Server)

  • * ns2.example-dns.com * ++ (Slave Server)

Beachten Sie, dass Sie bei Ihrem Registrar sowohl Leimdatensätze als auch SOA-Datensätze für die Domain einrichten sollten, die für die Nameserver selbst verwendet wird. Andererseits benötigen Sie nur SOA-Einträge für andere Domänen, deren Zonendateien Sie auf Ihren benutzerdefinierten Nameservern hosten möchten.

Schritt 1 - Installieren Sie PowerDNS auf beiden Servern

Erstens benötigen wir zwei funktionierende PowerDNS-Server. Ein Server wird unser Master-Server, der zweite wird unser Slave-Server.

Wenn Sie dies noch nicht getan haben, folgen Sie bitte dem vorherigen Tutorial, https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-powerdns-with-a-mariadb-backend-on -ubuntu-14-04 [So installieren und konfigurieren Sie PowerDNS mit einem MariaDB-Backend unter Ubuntu 14.04].

Sie sollten dem vollständigen Tutorial auf Ihrem * Master-Server * folgen.

Sie können nur die Schritte 1 bis 7 auf Ihrem * Slave-Server * ausführen, da Poweradmin auf dem sekundären Server nicht benötigt wird.

Wenn Sie über zwei funktionierende PowerDNS-Server verfügen, auf denen mindestens einer Poweradmin ausführt, können Sie mit dem nächsten Schritt fortfahren.

Schritt 2 - Konfigurieren des Master-Servers (ns1.example-dns.com)

Jetzt können wir unseren Master-PowerDNS-Server konfigurieren.

Dies sollte der Server sein, auf dem Poweradmin installiert ist, und wird als Ihr * primärer DNS-Server * betrachtet. Wenn Sie Poweradmin auf beiden Servern installiert haben, können Sie einen der beiden Server verwenden. Wenn Sie diesem Beispiel folgen, sollte dies * ns1.example-dns.com * sein.

Sichern Sie die ursprüngliche Konfigurationsdatei.

cd /etc/powerdns
sudo mv pdns.conf pdns.conf.orig

Erstellen Sie unsere neue Konfigurationsdatei.

sudo nano pdns.conf

Die folgenden Details beziehen sich auf eine Standard-Master-Server-Konfiguration mit einem einzelnen Slave-Server. Wir geben die IP-Adresse des Slave-Servers ein, damit dieser mit diesem Master-Server kommunizieren kann. Denken Sie daran, Ihre eigene * Slave-Server-IP-Adresse * unten zu ersetzen.

  • Hinweis: / 32 ist ein einzelnes IP-Subnetz und für diese Konfiguration erforderlich. *

/etc/powerdns/pdns.conf

allow-recursion=0.0.0.0/0
allow-axfr-ips=/32
config-dir=/etc/powerdns
daemon=yes
disable-axfr=no
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
log-failed-updates=on
loglevel=3
module-dir=/usr/lib/powerdns
master=yes
slave=no
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
include-dir=/etc/powerdns/pdns.d

Starten Sie den PowerDNS-Dienst neu, damit die Änderungen wirksam werden.

sudo service pdns restart

Schritt 3 - Slave-Server konfigurieren (ns2.example-dns.com)

Jetzt können wir unseren * Slave-Server * konfigurieren. Dieser Server repliziert DNS-Zonen von dem Master-Server, den wir gerade konfiguriert haben. Wenn Sie dem Beispiel folgen, sollte dies * ns2.example-dns.com * sein.

Sichern Sie die ursprüngliche Konfigurationsdatei.

cd /etc/powerdns
sudo mv pdns.conf pdns.conf.orig

Erstellen Sie die neue Konfigurationsdatei.

sudo nano pdns.conf

Die folgenden Details gelten für eine Standard-Slave-Server-Konfiguration mit einem Aktualisierungsintervall von 60 Sekunden. Sie können die Konfiguration genau kopieren.

/etc/powerdns/pdns.conf

allow-recursion=0.0.0.0/0
config-dir=/etc/powerdns
daemon=yes
disable-axfr=yes
guardian=yes
local-address=0.0.0.0
local-port=53
log-dns-details=on
log-failed-updates=on
loglevel=3
module-dir=/usr/lib/powerdns
master=no
slave=yes
slave-cycle-interval=60
setgid=pdns
setuid=pdns
socket-dir=/var/run
version-string=powerdns
include-dir=/etc/powerdns/pdns.d

Alle 60 Sekunden fragt der Slave-Server den Master-Server nach Zonenaktualisierungen ab. In der Regel sendet der Masterserver beim Aktualisieren einer Zone eine Benachrichtigung an die dieser Zone zugewiesenen Slave-Server. Wenn jedoch während einer Zonenaktualisierung ein Verbindungsproblem auftritt, wird dadurch sichergestellt, dass die Aktualisierung schließlich auf den Slave-Server übertragen wird, wenn dieser wieder online ist.

Als Nächstes müssen wir PowerDNS mitteilen, wie mit dem Master-Server kommuniziert werden soll.

Melden Sie sich bei MariaDB mit dem PowerDNS-Benutzernamen und dem Kennwort an, die Sie im vorherigen Lernprogramm erstellt haben. In unserem Beispiel wurde "+ powerdns_user +" verwendet.

mysql -u  -p

Geben Sie Ihr Passwort an der Eingabeaufforderung ein:

OutputEnter password:

Wechseln Sie zu der PowerDNS-Datenbank, die Sie im vorherigen Lernprogramm konfiguriert haben. Unsere Empfehlung war "+ powerdns +".

USE powerdns;

Als nächstes erstellen wir eine neue Zeile in der Tabelle "+ super master". In dieser Zeile werden die * Master-Server-IP * -Adresse und der vollqualifizierte Domänenname * (FQDN) des Slave-Servers * angegeben, den wir gerade konfigurieren.

insert into supermasters values ('', '', 'admin');

Wir können jetzt die MariaDB-Shell verlassen.

exit;

Starten Sie den PowerDNS-Dienst neu, damit die Änderungen wirksam werden.

sudo service pdns restart

Schritt 4 - Master / Slave-Verbindung testen

Für diesen Schritt muss * ns1.example-dns.com * auf Ihren Masterserver und * ns2.example-dns.com * auf Ihren Slave-Server verweisen.

Wenn Ihre Leimdatensätze, SOA-Datensätze und A-Datensätze noch nicht weitergegeben wurden, können Sie Ihrer + / etc / hosts + - Datei eine Überschreibung hinzufügen. Sie möchten dies auf * beiden Servern * tun.

Öffne das + / etc / hosts + mit nano.

sudo nano /etc/hosts

Fügen Sie die Einträge zu Ihrer Datei "+ / etc / hosts +" hinzu.

/ etc / hosts

Stellen wir sicher, dass unsere beiden Server jetzt kommunizieren können.

Senden Sie von Ihrem * Master-Server * aus einen Ping-Befehl an beide Hostnamen.

ping ns1.example-dns.com

Ihr Ergebnis sollte folgendermaßen aussehen:

Output64 bytes from ns1.example-dns.com (111.111.111.111): icmp_seq=1 ttl=64 time=0.061 ms

Pingen Sie den Slave-Server:

ping ns2.example-dns.com

Erwartetes Ergebnis:

Output64 bytes from ns2.example-dns.com (222.222.222.222): icmp_seq=1 ttl=64 time=48.8 ms

Pingen Sie nun beide Hostnamen von Ihrem * Slave-Server * mit denselben Befehlen. Wenn Sie beide Server von beiden Servern aus anpingen können, fahren Sie fort.

Schritt 5 - Konfigurieren Sie eine DNS-Zone mit Replikation

Wenn beide Server ordnungsgemäß kommunizieren, können wir unsere erste DNS-Zone mit Master / Slave-Replikation erstellen.

Melden Sie sich bei Poweradmin auf Ihrem Master-Server an, indem Sie in Ihrem Browser "+ http: /// poweradmin / +" aufrufen.

Melden Sie sich mit den zuvor festgelegten Administratoranmeldeinformationen an.

Klicken Sie auf den Link * Master-Zone hinzufügen *, um eine neue Zonendatei zu erstellen. Sie können dies mit dem ursprünglichen Namen oder einer neuen Domain, * test.com *, testen.

image: https: //assets.digitalocean.com/articles/poweradmin-slave/AVTowJ0h.png [Klicken Sie auf den Link Masterzone hinzufügen]

Geben Sie Ihren Domänennamen der obersten Ebene ein und klicken Sie auf die Schaltfläche * Zone hinzufügen *, um die Zone zu erstellen.

image: https: //assets.digitalocean.com/articles/poweradmin-slave/DLbU5kMh.png [Geben Sie Ihren Domainnamen in das Feld Zonenname ein.]

Erstellen Sie * NS * -Einträge für Ihre Nameserver:

  • * hostmaster.example-dns.com *

  • * ns1.example-dns.com *

  • * ns2.example-dns.com *

Erstellen Sie mindestens einen * A * -Datensatz, um die Replikation zu testen.

image: https://assets.digitalocean.com/articles/poweradmin-slave/ftZDoc7h.png [Fügen Sie Ihre NS- und A-Datensätze hinzu]

  • Hinweis: Wenn Ihr Slave-Server nicht als Nameserver für die Zone aufgeführt ist, wird die Zone nicht repliziert. *

Nach einigen Sekunden sollten sich die neuen Einträge auf Ihrem Slave-Server verbreiten.

Testen Sie den unter * ns1.example-dns.com * gespeicherten DNS-Eintrag mit + dig +.

dig  A @

Es sollte mit einem ähnlichen Ergebnis wie dem folgenden reagieren.

Outputroot@ns1:/etc/powerdns# dig test.com A @ns1.example-dns.com

; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> test.com A @ns1.example-dns.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44833
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;test.com.                      IN      A

;; ANSWER SECTION:


;; Query time: 2 msec
;; SERVER: 45.55.217.94#53(45.55.217.94)
;; WHEN: Tue Apr 28 18:06:54 EDT 2015
;; MSG SIZE  rcvd: 53

Testen Sie den unter * ns2.example-dns.com * gespeicherten DNS-Eintrag mit + dig +.

dig  A @

Es sollte mit einem ähnlichen Ergebnis wie dem folgenden reagieren.

Outputroot@ns1:/etc/powerdns# dig test.com A @ns2.example-dns.com

; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> test.com A @ns2.example-dns.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11530
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 2800
;; QUESTION SECTION:
;test.com.                      IN      A

;; ANSWER SECTION:


;; Query time: 3 msec
;; SERVER: 45.55.217.132#53(45.55.217.132)
;; WHEN: Tue Apr 28 18:08:06 EDT 2015
;; MSG SIZE  rcvd: 53

Denken Sie daran, dass die Einstellungen für * test.com * erst aktiv werden, wenn Sie Ihre Nameserver bei Ihrem Registrar auf * ns1.example-dns.com * und * ns2.example-dns.com * setzen.

Fazit

Wir haben jetzt zwei funktionierende PowerDNS-Server, die ein MariaDB-Backend in einer Master / Slave-Konfiguration verwenden.

Jedes Mal, wenn Änderungen an einer Masterzone auf dem Master-Server vorgenommen werden, werden alle Slave-Server benachrichtigt, die mit ihren eigenen * NS * -Datensätzen aufgeführt sind.

Der Slave-Server fragt den Master-Server automatisch nach Datensätzen ab, die in letzter Zeit nicht aktualisiert wurden, um sicherzustellen, dass Ihre DNS-Datensätze zwischen Ihren PowerDNS-Knoten synchron bleiben.