Comment configurer la réplication DNS sur un serveur PowerDNS esclave sur Ubuntu 14.04

introduction

Dans ce tutoriel, nous allons apprendre à configurer PowerDNS dans une configuration maître / esclave avec réplication automatique du serveur DNS maître vers l’esclave. Ce tutoriel est le deuxième tutoriel de notre https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-powerdns-with-a-mariadb-backend-on-ubuntu-14-04 [ PowerDNS] série pour Ubuntu.

Une configuration maître / esclave offre une fiabilité supplémentaire. Si l’un de vos serveurs PowerDNS tombe en panne, vous aurez un serveur secondaire pour gérer les demandes.

Nous vous recommandons de provisionner ces serveurs dans des centres de données distincts. S’ils se trouvent dans deux emplacements physiques, alors même une panne de centre de données n’affectera pas votre service DNS.

À la fin de ce didacticiel, nous aurons deux serveurs PowerDNS fonctionnels utilisant la réplication maître / esclave.

Conditions préalables

Veuillez remplir ces conditions:

Dans notre précédent tutoriel, nous avions indiqué trois sous-domaines sur un seul serveur PowerDNS. Nous allons maintenant utiliser l’un de ces sous-domaines pour pointer vers notre serveur esclave. Dans nos exemples, notre * adresse IP maître de serveur * sera «» et notre * adresse IP de serveur esclave sera «».

En conséquence, vous devrez mettre à jour les enregistrements de colle avec votre fournisseur. Veuillez utiliser les informations ci-dessous comme guide. Consultez le didacticiel PowerDNS précédent pour plus d’informations sur la configuration de vos enregistrements DNS.

  • * hostmaster.example-dns.com * ++ (serveur maître)

  • * ns1.example-dns.com * ++ (serveur maître)

  • * ns2.example-dns.com * ++ (serveur esclave)

Notez que vous devez configurer les enregistrements de liaison et les enregistrements SOA chez votre registraire pour le domaine utilisé pour les serveurs de noms eux-mêmes. D’autre part, vous n’avez besoin que des enregistrements SOA pour les autres domaines dont vous souhaitez héberger les fichiers de zone sur vos serveurs de noms personnalisés.

Étape 1 - Installez PowerDNS sur les deux serveurs

Premièrement, nous avons besoin de deux serveurs PowerDNS fonctionnels. Un serveur deviendra notre serveur maître, tandis que le second deviendra notre serveur esclave.

Si vous ne l’avez pas déjà fait, veuillez suivre le didacticiel précédent, https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-powerdns-with-a-mariadb-backend-on. -ubuntu-14-04 [Comment installer et configurer PowerDNS avec un backend MariaDB sur Ubuntu 14.04].

Vous devez suivre le tutoriel complet sur votre * serveur maître *.

Vous ne pouvez suivre que les étapes 1 à 7 sur votre * serveur esclave *, car nous n’avons pas besoin de Poweradmin sur le serveur secondaire.

Lorsque vous avez deux serveurs PowerDNS fonctionnels, dont au moins l’un d’entre eux exécute Poweradmin, vous pouvez passer à l’étape suivante.

Étape 2 - Configurer le serveur maître (ns1.example-dns.com)

Nous sommes maintenant prêts à configurer notre serveur maître PowerDNS.

Ce doit être le serveur sur lequel Poweradmin est installé et sera considéré comme votre * serveur DNS principal *. Si Poweradmin est installé sur les deux serveurs, vous pouvez utiliser l’un ou l’autre. Si vous suivez cet exemple, cela devrait être * ns1.example-dns.com *.

Sauvegardez le fichier de configuration d’origine.

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

Créez votre nouveau fichier de configuration.

sudo nano pdns.conf

Les détails ci-dessous concernent une configuration de serveur maître standard avec un seul serveur esclave. Nous allons entrer l’adresse IP du serveur esclave, lui permettant de communiquer avec ce serveur maître. N’oubliez pas de remplacer votre * adresse IP de serveur esclave * ci-dessous.

  • Remarque: / 32 est un sous-réseau IP unique, requis pour cette configuration. *

/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

Redémarrez le service PowerDNS pour que les modifications prennent effet.

sudo service pdns restart

Étape 3 - Configuration du serveur esclave (ns2.example-dns.com)

Nous sommes maintenant prêts à configurer notre * serveur esclave *. Ce serveur répliquera les zones DNS à partir du serveur maître que nous venons de configurer. Si vous suivez l’exemple, cela devrait être * ns2.example-dns.com *.

Sauvegardez le fichier de configuration d’origine.

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

Créez le nouveau fichier de configuration.

sudo nano pdns.conf

Les détails ci-dessous concernent une configuration de serveur esclave standard avec un intervalle d’actualisation de 60 secondes. Vous pouvez copier la configuration exactement.

/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

Toutes les 60 secondes, le serveur esclave interroge le serveur maître pour connaître les mises à jour de zone. Généralement, lorsqu’une zone est mise à jour, le serveur maître envoie une notification aux serveurs esclaves affectés à cette zone. Cependant, s’il y a un problème de connexion lors d’une mise à jour de zone, cela garantit que la mise à jour sera éventuellement transmise au serveur esclave lorsqu’il sera à nouveau en ligne.

Nous devons ensuite indiquer à PowerDNS comment communiquer avec le serveur maître.

Connectez-vous à MariaDB avec le nom d’utilisateur et le mot de passe PowerDNS que vous avez créés dans le didacticiel précédent. Notre exemple utilisait + powerdns_user +.

mysql -u  -p

Entrez votre mot de passe à l’invite:

OutputEnter password:

Passez à la base de données PowerDNS que vous avez configurée dans le didacticiel précédent. Notre recommandation était + powerdns +.

USE powerdns;

Nous allons ensuite créer une nouvelle ligne dans la table + super master. Cette ligne spécifiera l’adresse * du serveur maître, ainsi que le nom de domaine complet * (FQDN) du serveur esclave * que nous sommes en train de configurer.

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

Nous pouvons maintenant quitter le shell MariaDB.

exit;

Redémarrez le service PowerDNS pour que les modifications prennent effet.

sudo service pdns restart

Étape 4 - Tester la connexion maître / esclave

Pour cette étape, * ns1.example-dns.com * doit pointer sur votre serveur maître et * ns2.example-dns.com * doit pointer sur votre serveur esclave.

Si vos enregistrements glue, SOA et A ne se sont pas encore propagés, vous pouvez ajouter une substitution à votre fichier + / etc / hosts +. Vous voudrez le faire sur * les deux serveurs *.

Ouvrez le + / etc / hosts + en utilisant nano.

sudo nano /etc/hosts

Ajoutez les entrées à votre fichier + / etc / hosts +.

/ etc / hosts

Veillons à ce que nos deux serveurs puissent communiquer maintenant.

Depuis votre * serveur maître *, envoyez une requête ping aux deux noms d’hôte.

ping ns1.example-dns.com

Votre résultat devrait ressembler à ceci:

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

Ping le serveur esclave:

ping ns2.example-dns.com

Résultat attendu:

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

Maintenant, envoyez une requête ping aux deux noms d’hôte à partir de votre * serveur esclave *, en utilisant les mêmes commandes. Une fois que vous pouvez envoyer un ping aux deux serveurs à partir des deux serveurs, continuez.

Étape 5 - Configurer une zone DNS avec la réplication

Si les deux serveurs communiquent correctement, nous sommes prêts à créer notre première zone DNS avec une réplication maître / esclave.

Connectez-vous à Poweradmin sur votre serveur maître en visitant + http: /// poweradmin / + dans votre navigateur.

image: https: //assets.digitalocean.com/articles/poweradmin-slave/SMepFsRh.png [Écran de connexion Poweradmin]

Connectez-vous avec les informations d’identification d’administrateur que vous avez définies précédemment.

Cliquez sur le lien * Ajouter une zone maître * pour créer un nouveau fichier de zone. Vous pouvez le tester avec le nom d’origine ou un nouveau domaine, * test.com *.

image: https: //assets.digitalocean.com/articles/poweradmin-slave/AVTowJ0h.png [Cliquez sur le lien Ajouter une zone maître]

Entrez votre nom de domaine de premier niveau et cliquez sur le bouton * Ajouter une zone * pour créer la zone.

image: https: //assets.digitalocean.com/articles/poweradmin-slave/DLbU5kMh.png [Entrez votre nom de domaine dans le champ Nom de la zone]

Créez des entrées * NS * pour vos serveurs de noms:

  • * hostmaster.example-dns.com *

  • * ns1.example-dns.com *

  • * ns2.example-dns.com *

Créez au moins un * enregistrement A * pour tester la réplication.

image: https: //assets.digitalocean.com/articles/poweradmin-slave/ftZDoc7h.png [Ajoutez vos enregistrements NS et A]

  • Remarque: Si votre serveur esclave n’est pas répertorié en tant que serveur de noms pour la zone, il ne répliquera pas la zone. *

Après quelques secondes, les nouvelles entrées devraient se propager sur votre serveur esclave.

Testez l’enregistrement DNS enregistré sur * ns1.example-dns.com * en utilisant + dig +.

dig  A @

Il devrait répondre avec un résultat similaire à celui ci-dessous.

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

Testez l’enregistrement DNS enregistré sur * ns2.example-dns.com * en utilisant + dig +.

dig  A @

Il devrait répondre avec un résultat similaire à celui ci-dessous.

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

N’oubliez pas que les paramètres de * test.com * ne deviendront actifs qu’après avoir défini vos serveurs de noms sur * ns1.example-dns.com * et * ns2.example-dns.com * auprès de votre registraire.

Conclusion

Nous avons maintenant deux serveurs PowerDNS fonctionnels utilisant un serveur MariaDB dans une configuration maître / esclave.

Chaque fois que des modifications sont apportées à une zone maître sur le serveur maître, il en avertira tous les serveurs esclaves répertoriés avec leurs propres enregistrements * NS *.

Le serveur esclave interroge automatiquement le serveur maître pour les enregistrements qui n’ont pas été mis à jour récemment, garantissant ainsi que vos enregistrements DNS restent synchronisés entre vos nœuds PowerDNS.

Related