# #️⃣ Créer un serveur DNS sur debian

Dans 
Publié 2021-10-20

ℹ️ Le serveur DNS s'occupe de traduire une adresse ip en nom de domaine.

Grâce à celui-ci, je peux par exemple joindre mon serveur nas: 172.16.20.20 avec nas.it.fr

➡️ Plutôt que de retenir une adresse ip, on retient un nom.


ℹ️ Voici la configuration de ce tutoriel:

IP du serveur DNS
Masque Réseau
Nom de la machine (hostname)
Nom de domaine

172.16.10.10

255.255.0.0

dns

it.fr

Ces 4 champs seront à remplacer tout au long du tutoriel par les vôtres (qui correspondent à votre configuration).


# #️⃣ Nommer la machine

sudo nano /etc/hostname
/etc/hostname
dns

➡️ Ici on nomme la machine dns


# ✔️ S'assurer que l'adresse IP du serveur est FIXE

ip a 
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 à pour adresse ip et masque 172.16.10.10/16

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

sudo nano /etc/network/interfaces
/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 host

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

IP_SERVEUR_DNS HOSTNAME.DOMAINE HOSTNAME
127.0.0.1 HOSTNAME


# 📝 Éditer le fichier resolv.conf

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

➡️ Après redémarrage de la machine, passez à l'étape suivante.


# ⤵️ Installez bind9

sudo apt update  &&  sudo apt install bind9 dnsutils

sudo apt update va mettre à 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 par la suite.


# 📝 Copier et renommer la template de configuration

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 des zones DNS

👉 Pour ce faire nous utilisons l'utilitaire sed:

sudo sed 'i/localhost/it.fr/g' db.it.fr

👉 Vérifiez votre configuration:

db.it.fr
;
; 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
Hostname
IN
Type
Adresse IP

nas

IN

A

172.16.30.30

db.it.fr
;
; 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:

A AAAA CNAME MX TXT NS SOA SRV PTR
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 à un autre domaine, ne fournit PAS d'adresse IP Dirige le courrier vers un serveur de messagerie Peux servir a enregistrer des notes. Il est souvent utilisé pour la sécurité mails. Stocke le serveur de noms pour une entrée DNS Stocke les informations administratives d'un domaine Spécifie un port pour des services spécifiques Fournit un nom de domaine dans les recherches inversées. La résolution inverse (le contraire du type A).

Liste complète
https://www.cloudflare.com/fr-fr/learning/dns/dns-records/


# 📝 Éditer le fichier named.conf

👉 Il est nécessaire de spécifier le chemin des fichiers de configurations des zones DNS:

sudo nano /etc/bind/named.conf.local
/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_DOMAIN"

Ligne 11 file "/etc/bind/db.MON_DOMAIN";

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_DOMAIN.inv";


# 📝 Éditer le fichier named.conf.options

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

sudo nano /etc/bind/named.conf.options
/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 forwaders définie les serveurs DNS.
Je renseigne donc l'adresse IP de mon serveur DNS.

👉 C'est aussi grâce à elle, que les machines du réseau peuvent sortir sur le WAN,
en spécifiant un DNS public (cloudflare: 1.1.1.1 ou google: 8.8.8.8 etc).