Serveur DNS
Définition
Le serveur DNS permet d’accomplir deux tâches :
Résolution de nom de domaine
Les DNS servent à traduire les noms de domaine en adresse IP utilisable par votre
machine. Votre machine ne sachant que traîter des adresses numériques, elle
aura toujours besoin d’un serveur DNS qui l’aide à traduire les noms de domaines
"pratiques" en IP.
Résolution inverse
Les résolutions inverses traduisent les adresses IP en nom de domaine (Fully
Qualified Domain Name). Elles ne sont pas aussi utiles que les résolutions directes
et ne servent principalement qu’à des fins de vérifications, débogage etc. Cette
tâche sera également acquittée par mon serveur.
Découverte du serveur DNS utilisé
Pour les distributions GNU/Linux, l'information se trouve généralement dans le
fichier )/etc/resolv.conf : (capt)
gedit /etc/resolv.conf
nameserver
nameserver
Test de résolution
Debian propose la commande host, qui permet d'effectuer une résolution
manuellement. Exemple : capt
# host www.google.com
Construire un serveur DNS
Pourquoi faire ?
• pour comprendre mieux comment ça fonctionne ;
• pour disposer d'une solution de secours si le(s) serveur(s) DNS de notre
fournisseur d'accès montre(nt) des signes de faiblesse ;
• pour se créer un petit intranet sympa, même avec un nom de domaine « en
bois » qui ne sera fonctionnel que sur notre LAN.
NB : Ce que nous allons faire ici est destiné à l'usage exclusif de notre LAN. le
principe reste le même pour la mise en place d'un serveur DNS public, il faudra
prendre en compte tous les risques d'agression et ils sont nombreux.
Création de notre zone
Maintenant créons une zone pour notre LAN, avec un nom de domaine « en bois »
comme par exemple est.lan. Le TLD n'existe pas, le domaine est.lan ne peut donc
exister sur l'internet, mais il peut parfaitement fonctionner sur notre LAN.
Pour ce faire, il nous faut tout de même entrer un peu plus dans le détail des
informations que peut donner un serveur DNS.
$TTL
Indique en secondes la durée de vie de l'information fournie. Les serveurs DNS
récursifs conserveront en cache les informations récoltées pendant la durée
indiquée dans ce paramètre. 0 devrait indiquer que les valeurs ne doivent pas
être conservées en cache.
SOA
Start Of Authority. Si nous avons plusieurs serveurs DNS qui servent la même
zone, nous avons vu l'exemple pour yahoo.com qui en a deux, mais il pourrait y en
avoir plus, il y en a un qui est le serveur « maitre », les autres n'étant que des «
escalves », c'est à dire de simples répliquas. L'administrateur met à jour le maitre,
qui notifiera ses esclaves .Le champ SOA indique donc quel est le serveur « maitre
». capt
host -t soa yahoo.com
yahoo.com has SOA record ns1.yahoo.com. hostmaster.yahoo-inc.com. 2009012906 3600 300
1814400 600
C'est ns1.yahoo.com.
Serial
Numéro de série qu'il faut incrémenter à chaque modification de la zone. Il est d'usage de le
construire à partir de la date de modification. Ainsi, dans l'exemple précédent, nous
pouvons imaginer que le serveur a été mis à jour à telle date, ou alors ce serait la ième
modification opérée ce jour. Cette façon de faire est une recommandation, mais pas
une obligation. Un simple incrément suffit. Ce numéro de série permet aux serveurs «
esclaves » de savoir s'il y a eu ou non une modification de la zone depuis leur dernière
synchronisation.
Refresh
Indique en seconde le temps au bout duquel les serveurs « esclaves », aussi
appelés secondaires, devront demander à rafraichir leur données pour cette zone.
Retry
Indique en secondes au bout de combien de temps un serveur esclave doit ré-
essayer de se synchroniser si la tentative a échoué après le temps refresh.
Expire
Si toutes les tentatives de synchronisation échouent, indique le temps (en
secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne
savent plus répondre aux requêtes concernant cette zone.
NS, A,
Le champ NS (Name Server) indique le nom d'un serveur de noms. Pour une zone
donnée, s'il y a plusieurs serveurs de noms, il y aura plusieurs champs NS.
Le champ A (Address) fait correspondre un nom à une adresse IPv4, alors que le
champ AAAA fera correspondre un nom à une adresse IPv6.
Le symbole « @ »
Dans un fichier de configuration de zone, ce symbole représente exactement le
nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone
maison.mrs, écrire :
maison.mrs. IN SOA ...
Nous pourrons écrire :
@ IN SOA ...
Installation
Le serveur DNS s’installe avec
Apt-get install bind9
DNS direct
Nous en savons assez pour créer notre zone « est ». Notre serveur va s'appeler
est.lan et dispose de l'adresse IP 192.168.2.25 :
Créons d'abord dans /etc/bind/ un fichier nommé: db.est.lan
Creation du fichier avec la commande touch /etc/bind/db.est.lan
Editons ce fichier et il contiendrait ceci
ZONE est.LAN (/etc/bind/db.est.lan)
$TTL 1600
@ IN SOA houda.est.lan. root.houda.est.lan. (
2010012901 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
1600 ) ; Negative Cache TTL
@ IN NS houda.est.lan.
@ IN A 192.168.2.25
Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine
est.lan, de répondre aussi aux requêtes de type A pour houda.est.lan Il nous faut
maintenant indiquer à bind que cette zone existe.
Nous allons le faire dans le fichier /etc/bind/named.conf.local : (capt)
Indication de la zone dans /etc/bind/named.conf.local
zone "est.lan" {
type master;
file "/etc/bind/db.est.lan";
};
Enfin, nous redémarrons bind avec un /etc/init.d/bind9 restart.
DNS inverse
Créons d'abord dans /etc/bind/ un fichier nommé: 2.168.192.in-addr.arpa
Creation du fichier avec la commande touch /etc/bind/2.168.192.in-addr.arpa
Editons ce fichier et il contiendrait ceci
ZONE est.LAN (/etc/bind/)2.168.192.in-addr.arpa
$TTL 1600
@ IN SOA houda.est.lan. root.houda.est.lan. (
2010012901 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
1600 ) ; Negative Cache TTL
IN NS houda.est.lan.
25 IN PTR houda.est.lan.
Nous allons le faire dans le fichier /etc/bind/named.conf.local : (capt)
Indication de la zone dans /etc/bind/named.conf.local
zone "2.168.192.in-addr.arpa" {
type master;
file "/etc/bind/ 2.168.192.in-addr.arpa ";
};
Enfin, nous redémarrons bind avec un /etc/init.d/bind9 restart.
Machine Windows
Machine debian