Logo
Créer un serveur DNS sur Debian
Overview
Créer un serveur DNS sur Debian

Créer un serveur DNS sur Debian

20 octobre 2021
12 janvier 2025
6 min de lecture
Disponible en :
  • Le serveur DNS gère la traduction des adresses IP en noms de domaine.

Grâce à ceci, je peux par exemple atteindre mon serveur nas : 172.16.20.20 avec nas.it.fr

  • Plutôt que de se souvenir d’une adresse IP, on retient un nom.
Un problème avec sudo ?
Danger (N'utilisez pas le compte root)

Si vous configurez votre serveur directement en tant que root, n’oubliez pas de retirer sudo de chaque commande.
Si vous définissez un mot de passe pour le compte root, la commande sudo ne sera pas acceptée. Connectez-vous directement en tant que root pour exécuter les commandes.
Vous pouvez aussi réinstaller votre système en laissant le mot de passe root vide lors de l’installation.
sudo s’installera et fonctionnera correctement.

ℹ️ Voici la configuration pour ce tutoriel :

IP Serveur DNSMasque RéseauNom de la machine (hostname)Nom de domaine
172.16.10.10255.255.0.0dnsit.fr

Ces 4 champs doivent être remplacés tout au long du tutoriel par les vôtres (correspondant à votre configuration).

Nommer la machine

Terminal window
sudo nano /etc/hostname
dns
  • Ici nous nommons la machine dns

S’assurer que l’adresse IP du serveur est STATIQUE

Terminal window
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0c:29:cd:01:1a brd ff:ff:ff:ff:ff:ff
altname enp11s0
inet 172.16.10.10/16 brd 172.16.255.255 scope global ens192
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fecd:11a/64 scope link
valid_lft forever preferred_lft forever
  • ip a affiche la configuration réseau des interfaces connectées à la machine.

Mon interface ens192 possède l’adresse IP et le masque 172.16.10.10/16

Si vous avez fixé l’adresse de la machine lors de l’installation (configuration réseau manuelle), passez à l’étape suivante.

Passer l’adresse IP de l’interface en statique
sudo nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens192
iface ens192 inet static
address 172.16.10.10
netmask 255.255.0.0
gateway 172.16.1.1

Éditer le fichier hosts

Terminal window
sudo nano /etc/hosts
172.16.10.10 dns.it.fr dns
127.0.0.1 dns

IP_SERVEUR_DNS HOSTNAME.DOMAINE HOSTNAME

Éditer le fichier resolv.conf

Terminal window
sudo nano /etc/resolv.conf
domain it.fr
search it.fr
nameserver 172.16.10.10
Danger

Il est nécessaire de redémarrer la machine :

Terminal window
sudo reboot

Après le redémarrage de la machine, passez à l’étape suivante.

Installer bind9

Terminal window
sudo apt update && sudo apt install bind9 dnsutils
  • sudo apt update mettra à jour la liste des paquets en se basant sur le fichier sources.list

  • sudo apt install bind9 dnsutils installe bind9 pour gérer les zones DNS.

Copier et renommer le modèle de configuration

Terminal window
sudo cp /etc/bind/db.local /etc/bind/db.it.fr

La commande cp nous permet de copier db.local (le fichier de configuration par défaut de bind9), et de le renommer en un nouveau fichier db.it.fr

Éditer le fichier de configuration de zone DNS

Tip

Pour gagner du temps, nous allons directement remplacer les champs “localhost” par “it.fr” (notre domaine), dans le fichier de configuration.

  • Pour ce faire, nous utilisons l’utilitaire sed :
Terminal window
sudo sed 'i/localhost/it.fr/g' db.it.fr
  • Vérifiez votre configuration :
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA it.fr. root.it.fr. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 172.16.10.10
@ IN AAAA ::1
dns IN A 172.16.10.10
client IN A 172.16.20.20

L’enregistrement A nommé client nous permet d’atteindre 172.16.20.20 avec client.it.fr

Ajouter un enregistrement DNS
HostnameINTypeAdresse IP
nasINA172.16.30.30
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA it.fr. root.it.fr. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS localhost.
@ IN A 172.16.10.10
@ IN AAAA ::1
dns IN A 172.16.10.10
client IN A 172.16.20.20
nas IN A 172.16.30.30

Voici une description des principaux types d’enregistrements DNS :

AAAAACNAMEMXTXTNSSOASRVPTR
Associe un nom d’hôte à une adresse IPv4 (32 bits)Associe un nom d’hôte à une adresse IPv6 (128 bits)Transfère un domaine ou un sous-domaine vers un autre domaine, ne fournit pas d’adresse IPDirige le courrier vers un serveur de messageriePeut être utilisé pour enregistrer des notes. Il est souvent utilisé pour la sécurité du courrier.Stocke le serveur DNS pour une entréeStocke les informations administratives d’un domaineSpécifie un port pour des services spécifiquesFournit un nom de domaine dans les recherches inversées. La résolution inverse (l’inverse du type A).

Liste complète

📝 Éditer le fichier named.conf

Il est nécessaire de spécifier le chemin des fichiers de configuration pour les zones DNS :

Terminal window
sudo nano /etc/bind/named.conf.local
//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "it.fr" {
type master;
file "/etc/bind/db.it.fr";
allow-query { any; };
};
zone "10.16.172.in-addr.arpa" {
type master;
file "/etc/bind/db.it.fr.inv";
};
  • Ligne 9 zone "MON_DOMAINE"

  • Ligne 11 file "/etc/bind/db.MON_DOMAINE";

  • Ligne 14 Adresse inversée : zone "3_PREMIERS_OCTETS_ADDRESSE_RESEAU.in-addr.arpa"

Exemple : Si mon adresse réseau est : 192.168.1.0/24 inversée : 1.168.192

  • Ligne 16 file "/etc/bind/db.MON_DOMAINE.inv";

📝 Éditer le fichier named.conf.options

Nous allons maintenant configurer le fichier qui gère les options de redirection des requêtes :

Terminal window
sudo nano /etc/bind/named.conf.options
options {
directory "/var/cache/bind";
// If there is a firewall between you and nameservers you want
// to talk to, you may need to fix the firewall to allow multiple
// ports to talk. See http://www.kb.cert.org/vuls/id/800113
// If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0's placeholder.
forwarders {
172.16.10.10;
1.1.1.1;
};
//========================================================================
// If BIND logs error messages about the root key being expired,
// you will need to update your keys. See https://www.isc.org/bind-keys
//========================================================================
dnssec-validation auto;
auth-nxdomain no; # conform to RFC1035
version none;
forward only;
// listen-on-v6 { any; };
};
  • Ligne 13, l’option forwarders définit les serveurs DNS.
    Je saisis donc l’adresse IP de mon serveur DNS.

  • C’est aussi grâce à cela que les machines du réseau peuvent accéder au WAN,
    en spécifiant un DNS public (cloudflare: 1.1.1.1 ou google: 8.8.8.8 etc).