Wiki Informatique - PowerDNS : Installation

PowerDNS : Installation

Source : https://kb.caliko.net/books/it-technique/page/installer-powerdns-powerdns-admin-master-secondaire

Sur une machine propre (Pas d’autre service, dans la mesure du possible), on installe PowerDNS et PowerDNS-Admin dockerisé pour créer un serveur DNS. Le but ici est de le faire deux fois, sur deux serveurs différents sur deux infras différentes afin d’avoir une redondance. Le deuxième serveur n’hébergera pas l’interface de management PowerDNS-Admin.

1.  Installation sur chaque serveur

On commence par mettre à jour la machine

apt update && apt upgrade -y

On installe MariaDB

apt install mariadb-server -y

On sécurise l’installation à la fin de l’installation. Il vaut mieux choisir un mot de passe pour root, qui ne sera pas celui de root système

mysql_secure_installation

On répond oui à toutes les questions pour supprimer les bases de test et les utilisateurs anonymes.

On désactive ensuite resolvd

systemctl disable systemd-resolved
systemctl stop systemd-resolved

On supprime le lien symbolique système vers le fichier de conf resolvd

rm -R /etc/resolv.conf

et on créé un nouveau fichier en dur cette fois, avec l’adresse d’un serveur DNS de notre choix

echo “nameserver 9.9.9.9” > /etc/resolv.conf

On installe PowerDNS et son backend SQL

apt install pdns-server pdns-backend-mysql -y

L’installeur nous demande si on veut que le backend SQL soit configuré automatiquement, ainsi qu’un mot de passe de connexion. Le mieux est de répondre oui et de taper “Entrée” lors de la demande de mot de passe. Il générera un mot de passe aléatoire

L’installation est à faire de la mème manière sur le serveur secondaire

2.  Configuration DNS sur le serveur primaire

On commence par éditer le fichier de conf PowerDNS

nano /etc/powerdns/pdns.conf

On y modifie les valeurs suivantes pour autoriser le(s) serveur(s) secondaire(s) à faire des mises à jour de zones, ajouter une clé API, mais aussi on y indique que nous éditons le serveur primaire

Inséré le script

On redémarre PowerDNS

systemctl restart pdns

3.  Configuration DNS sur le serveur secondaire

On édite le même fichier “/etc/powerdns/pdns.conf” que précédemment, mais sur le second serveur, cette fois.

Les seules modifications à faire sont les suivantes, permettant au serveur se savoir qu’il est secondaire

Inséré le script

Les étapes suivantes permettent d’activer le mode supermasters afin de recevoir les mises à jour de zones du master principal (Dans notre cas, le serveur primaire)

Pour ça, il faut se connecter au SGBD MySQL

mysql -p -u root

On y entre la commande SQL suivante

INSERT INTO pdns.supermasters VALUE (‘193.212.73.14’, ‘ns2.domaine.fr’, ‘admin’);

On quitte et on redémarre PowerDNS

systemctl restart pdns

4.  Installation de PowerDNS-Admin sur le serveur principal

Retour sur le serveur principal, on installe les prérequis pour Docker

  1. Paramétrer dans “apt” du repository de Docker
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

Remplacer $VERSION_CODENAME par la version de Debian correspondant 12=bookworm

  1. Installer les packages Docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Une fois terminé, on lance un container Docker pour l’interface de config de PowerDNS

docker run —net=host -d -v pda-data:/data ngoduykhanh/powerdns-admin:latest

Rien de fou dans cette étape, il nous suffit maintenant de nous connecter à l’interface web de PowerDNS-Admin à l’adresse du serveur : http://ns1.domaine.fr

On commence par créer un compte admin en cliquant sur “Create an account”