Apprenez à installer et configurer PowerDNS, un serveur DNS flexible, idéal pour gérer des domaines sur Internet ou des réseaux privés. Découvrez ses caractéristiques principales, ainsi que les étapes détaillées pour transformer votre PC en serveur DNS, assurant ainsi une gestion optimale et sécurisée de vos noms de domaines.
Un des services/protocoles les plus importants dans toute réseau de données est le DNS (Domain Name System). Comme son nom l’indique, le DNS traduit les noms en adresses IP et vice versa. Aujourd’hui, nous allons vous montrer comment installer et configurer le PowerDNS.

Le PowerDNS est un logiciel serveur de DNS qui peut être utilisé pour gérer et résoudre des domaines sur Internet ou dans des réseaux privés. C’est une alternative populaire à des serveurs comme BIND, offrant plus de flexibilité et un support pour des bases de données telles que MariaDB, PostgreSQL et SQLite.
Principales caractéristiques du PowerDNS
- Modularité
- Peut utiliser différents backends comme MySQL, PostgreSQL, LDAP, etc. pour stocker des enregistrements DNS.
- Efficiencen et scalabilité
- Supporte le multithreading et peut gérer un fort volume de trafic.
- Sécurité
- Inclut des fonctionnalités comme DNSSEC, qui protège contre les attaques de cache poisoning.
- Interface d’administration
- Peut être géré via PowerDNS Admin, une interface graphique.
- Deux modes de fonctionnement
- Peut être configuré comme un serveur DNS autoritatif ou comme un serveur récursif pour résoudre des requêtes.
Composants principaux du PowerDNS
- PowerDNS Authoritative Server – Répond aux requêtes DNS pour des domaines spécifiques.
- PowerDNS Recursor – Résout des noms de domaine en consultant d’autres serveurs DNS.
Resource Records utilisés dans les zones DNS
Toutes les informations associées à un domaine DNS sont enregistrées dans les fichiers de zones via des resource records. Ces enregistrements permettent de définir un type de pointeur vers des adresses IP, des noms, etc. Par exemple, pour créer un enregistrement DNS relatif à un serveur de messagerie, nous utilisons le resource record MX (Mail Exchanger).
Types de resource records les plus importants :
- A – Adresse : Association d’un nom à une adresse (mappage direct)
- AAAA – Adresse IPv6 ; Association d’un nom à une adresse IPv6
- NS (NameServer) ; Indique le nom d’un serveur DNS du domaine ou sous-domaine ;
- CNAME – (Canonical NAME) ; un alias pour un hôte ;
- MX – (Mail eXchanger) ; Définition des serveurs de courrier électronique du domaine ou sous-domaine ;
- PTR – (PoinTeR) ; Association d’une adresse à un nom (reverse DNS)
- SOA – (Start Of Authority) ; Identification des en-têtes de zones
- SRV – (SeRVice) ; permet de définir des services disponibles dans un domaine
- TXT – Définition d’informations textuelles sur le domaine
Comment transformer un PC en serveur DNS avec PowerDNS ?
Installation de PowerDNS
Lorsqu’il s’agit de services DNS pour Linux, les noms les plus populaires sont Bind9 ou djbdns. Pour aujourd’hui, notre suggestion se tourne vers PowerDNS car il s’agit d’un service léger et riche en fonctionnalités. Pour installer PowerDNS sur RockyLinux, commencez par installer un système de gestion de base de données.
Étape 1 : Installer MariaDB (ou MySQL)
sudo dnf install -y mariadb-server mariadb sudo systemctl enable --now mariadb |
Maintenant, exécutez l’assistant de configuration sécurisée :
sudo mysql_secure_installation
|
Étape 2 : Créer une base de données et un utilisateur
Accédez à MariaDB
Créez une base de données et un utilisateur pour PowerDNS :
CREATE DATABASE powerdns; GRANT ALL ON powerdns.* TO 'pdns'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; EXIT; |
Ensuite, téléchargez le schéma SQL pour créer les tables :
sudo dnf install -y wget wget https://raw.githubusercontent.com/PowerDNS/pdns/master/modules/gsql/backend-schema.mysql.sql mysql -u pdns -p powerdns < backend-schema.mysql.sql |
Étape 3 : Installer PowerDNS
Dans cette étape, nous allons installer PowerDNS et le backend MySQL
sudo dnf install -y epel-release sudo dnf install -y pdns pdns-backend-mysql |
Étape 4 : Configurer PowerDNS
Éditez le fichier de configuration
sudo nano /etc/pdns/pdns.conf |
Ajoutez ou modifiez les lignes suivantes :
launch=gmysql
gmysql-host=127.0.0.1
gmysql-dbname=powerdns
gmysql-user=pdns
gmysql-password=password
|
Enregistrez et quittez (CTRL+X, Y, Entrée).
Redémarrez le service :
sudo systemctl enable --now pdns sudo systemctl restart pdns |
Étape 5 : Configurer un résolveur
Avant de définir notre zone dans le DNS, il est nécessaire d’indiquer quel serveur de DNS va résoudre les noms en dehors de notre domaine. Pour cet exemple, nous allons utiliser le serveur de Google (8.8.8.8). Cette information est configurée dans le fichier /etc/powerdns/pdns.conf, que vous pouvez modifier avec la commande suivante :
sudo sed -i 's/# recursor=/recursor=8.8.8.8/g' /etc/powerdns/pdns.conf |
Après cette configuration, redémarrez le service pdns et installez dnsutils
sudo service pdns restart sudo apt-get install dnsutils |
Une fois le service redémarré et dnsutils installé, vous pouvez effectuer un test en utilisant, par exemple, la commande :
nslookup NETCOST.com localhost |
Configurer une ZONE dans PowerDNS
Comme mentionné, toutes les informations associées à un domaine DNS sont enregistrées dans les fichiers de zones. Ouvrons le fichier /etc/powerdns/bindbackend.conf et définissons la zone pour notre domaine DNS interne. Pour ce tutoriel, nous allons considérer que le domaine DNS est NETCOST.com.
zone "NETCOST.com" { type master; file "/etc/powerdns/bind/NETCOST.com.zone"; allow-update { none; }; }; |
Ensuite, créons le fichier /etc/powerdns/bind/NETCOST.com.zone où nous allons placer les informations de notre zone. Pour cela, commençons par créer le répertoire /etc/powerdns/bind afin d’organiser le service.
sudo mkdir /etc/powerdns/bind |
Ensuite, créons et éditons le fichier /etc/powerdns/bind/NETCOST.com.zone et ajoutons-y les informations suivantes :
Note : Notez que l’adresse 192.168.1.97 correspond à mon serveur. Vous devez la remplacer par l’IP attribuée à votre machine.
$ORIGIN NETCOST.com ; base for unqualified names $TTL 1h ; default time-to-live @ IN SOA ns.NETCOST.com hostmaster.NETCOST.com ( 1; serial 1d; refresh 2h; retry 4w; expire 1h; minimum time-to-live ) IN NS ns IN A 192.168.1.97 ns IN A 192.168.1.97 |
Et voilà. Notre serveur DNS est installé, configuré et prêt à être utilisé.
Ajouter de nouveaux enregistrements
Étant donné que ce service fonctionnera sur le réseau local, nous pouvons attribuer un nom à tous les appareils de ce réseau. Par exemple, si nous voulons donner le nom gwmeo au routeur ayant l’adresse 192.168.1.254, il suffit d’ajouter la ligne suivante au fichier précédent :
Si l’utilisateur souhaite que cet appareil ait un nom alternatif (CNAME), il peut le configurer ainsi :
gwmeo IN A 192.168.1.254 router IN CNAME gwmeo |
Avec les informations précédentes, tout appareil configuré avec le serveur DNS du Raspberry Pi pourra accéder au routeur en utilisant le nom gwmeo ou router.

À la fin de la configuration, n’oubliez pas de redémarrer le service pdns.
À chaque fois que vous souhaitez ajouter de nouvelles machines, il suffit d’ajouter ces informations au fichier /etc/powerdns/bind/NETCOST.com.zone.
