#
#️⃣ Créer un serveur DNS sur debian
Cette documentation est en cours d'écriture ✍️
Il pourrait il y a avoir quelques erreures.
Si vous en remarquez une, contactez-moi ici 🙂
Vous pouvez directement utiliser la barre de recherche.
Ou l'onglet de droite pour trouver la section qui vous intéresse.
Toutes les adresses ip et masques de cette documentation, sont proposés à titre d'exemple, et peuvent donc, ne pas coïncider avec votre configuration.
Faites attention, à bien renseigner les vôtres 🙂
ℹ️ 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.
Si vous configurez votre serveur directement en root. N'oubliez pas de retirer le sudo
de chaque commande.
🔄 Si vous avez mis un mot de passe au compte root, la commande sudo
ne sera pas acceptée.
Connectez-vous directement en 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 de ce tutoriel:
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
dns
➡️ Ici on nomme la machine dns
#
✔️ S'assurer que l'adresse IP du serveur est FIXE
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
# 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
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
domain it.fr
search it.fr
nameserver 172.16.10.10
Il est nécessaire de redémarrer la machine:
sudo reboot
➡️ 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 gagner du temps, on va directement remplacer les champs "localhost" par "it.fr" (notre domaine), dans le fichier de configuration.
👉 Pour ce faire nous utilisons l'utilitaire sed:
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'enregistreament A
nommé client
nous permet d'atteindre 172.16.20.20
avec client.it.fr
nas
IN
A
172.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:
#
📝 É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
//
// 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
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).