Académique Documents
Professionnel Documents
Culture Documents
1.Contexte
2.Problème
3.Une première solution
4.Fonctionnement du DNS
5.Déploiement d'un serveur BIND9
6.DNS Dynamique
2
Contexte
●
Les programmes se réfèrent aux applications réseaux au
moyens des adresses réseaux : @IP ou nom
●
Le DNS est souvent utilisé par d'autres protocoles niveau
applicatif : HTTP, FTP, MAIL
●
Exemple : recherche de l'URL www.info-l3-RS.com/index.html
– La machine cliente exécute un client DNS
– Le navigateur extrait le nom de machine www.info-l3-RS.com de
l'URL
– Le client DNS envoie une requête contenant le nom de la machine au
serveur DNS
– Le client DNS reçoit éventuellement une réponse qui contient l'adresse
IP du client
– Le navigateur peut alors initier une connexion TCP au serveur HTTP
qui écoute sur le port 80
3
Problème
●
Les machines en réseaux ne communiquent
qu'avec les adresses IP et non avec les noms
●
Si les programmes utilisateurs travaillent
uniquement avec des adresses IP, le changement
d'une adresse IP
– Informer tous les clients
●
Solution : « noms » lisible, facile à retenir, introduit
afin de dissocier le nom des machines de leur
adresse
– Exemple : www.info-l3-RS.com
– Question : Comment gérer ces noms de machine pour
faciliter la correspondance « @IP<=>Nom de machine »
4
Première solution
●
ARPAnet
– Un fichier « hosts.txt » répertoriait tout les noms
d'ordinateurs avec leur adresse IP
– Chaque nuit, tous les hôtes téléchargeaient le fichier
depuis le site ou il était conservé et géré
– Solution efficace pour un réseau de petite taille.
●
Avec la croissance du réseau ARPAnet, inefficace
pour au moins deux raisons :
– La taille du fichier : stockage, maintenance
– Des conflits sur les noms d'hôtes
●
DNS mis sur pied en 1988 pour résoudre ce
problème : RFC 1034, RFC 1035, RFC 2181
5
DNS : Espace de nom(1/4)
●
Une adresse dans le service postale est composée
de :
– Le nom du pays, de l’État ou de la province
– Le nom de la localité
– Son code postal
– Le nom et le numéro de la rue
– Numéro du bâtiment dans la rue
– Le nom du destinataire
●
Pas de confusion possible même si les
destinataires portent le même nom.
6
DNS : Espace de nom(2/4)
●
Le système DSN fonctionne de la même manière
●
Une base de données distribuée est maintenue et nom
un fichier « hosts.txt »
●
Une structure hiérarchique est utilisée, Chaque nœud de
la hiérarchie garde une partie des données.
●
Pour Internet :
– Le haut de la hiérarchie de nommage est géré par l'ICANN
(Internet Coorperation for Assigned Names and Numbers)
– 200 domaines de premier niveau TLD (Top Level Domain)
qui couvre chacun de nombreux hôtes.
– Chaque domaine est divisé en sous-domaines qui sont à leur
tour divisés en d'autre sous-domaines, et ainsi de suite.
7
DNS : Espace de nom(3/4)
8
DNS : Espace de nom(4/4)
●
Les feuilles de l'arbre représentent les domaines qui
ne comprennent pas de sous-domaines, mais des
machines
●
Un domaine feuille peut contenir un seul hôte, ou
représenter une société et contenir des milliers
d'hôtes.
●
Les domaines de premier niveau sont de deux types:
– Générique : com, org, edu, net,.....
– Nationaux : fr, us, cm, ci, .....
●
Les noms de domaines de premier ordre (génériques
et nationaux) sont gérés par des registraires nommés
par l'ICANN
9
DNS : Enregistrement de ressources
de domaines (1/3)
●
On associe à chaque domaine un ensemble
d'enregistrement de ressources (Ressources Records: RR)
●
Cet ensemble constitue la base de données DNS
●
Dans le cas d'un hôte, cet enregistrement peut être
simplement une adresse IP
●
Les RR se composent de 05 éléments :
– Nom_de_domaine Durée_de_vie Classe Type Valeur
– Nom de domaine: Domaine auquel s'applique l'enregistrement.
C'est la clé de recherche principale pour satisfaire les requêtes.
– Durée de vie: Information sur la stabilité de l'enregistrement.
– Classe: Concernant l'Internet, sa valeur est toujours IN.
– Type: Type d'enregistrement (SOA, A, AAAAA, NS, MX, CNAME,
PTR, SPF, SRV, TX)
10
DNS : Enregistrement de ressources
de domaines (2/3)
●
Un enregistrement SOA (Start of Authority) contient le
nom du serveur primaire pour la zone, l'adresse
électronique administrateur, numéro de série de la zone
(unique), et divers fanions et temporisateurs.
●
Un enregistrement de type A contient l'adresse IP sur 32
bits (IPv4). AAAA est pour la version 6 d'IP.
●
MX indique le nom de l'hôte qui gère le courrier
électronique dans le domaine
●
NS spécifie un serveur de nom pour le domaine
●
CNAME (Canonical Name) permet de créer des alias.
●
PTR est généralement utilisé pour retrouver le nom à
partir de l'adresse IP
11
DNS : Enregistrement de ressources
de domaines (3/3)
●
Exemple
cs.vu.nl 86400 IN SOA star bass (9527,720,....)
cs.vu.nl 86400 IN MX '11 zephir'
cs.vu.nl 86400 IN MX '2 top'
cs.vu.nl 86400 IN NS 'star'
star 86400 IN A 192.168.120.1
zephir 86400 IN A 192.168.120.2
top 86400 IN A 192.168.120.3
www 86400 IN CNAME star.cs.vu.nl
ftp 86400 IN CNAME zephir.cs.vu.nl
12
DNS : Notion de zone(1/2)
13
DNS : Notion de zone (2/2)
●
L'espace de nom DSN est divisé en zones distinctes.
●
Il incombe à l'administrateur de chaque zone de définir
les limites en fonction du nombre de serveur de nom
souhaité et de leur emplacement
●
Chaque zone est associée à un ou plusieurs serveurs
de nom
●
Il existe également les hôtes chargés de stocker la BD
pour chaque zone
●
On peut avoir un serveur de nom primaire qui obtient
ses informations à partir de son disque dur et d'un ou
plusieurs serveurs de nom secondaires qui obtiennent
leurs informations à partir du serveur primaire
14
DNS : Résolution de nom
●
Lorsque S ne peut pas répondre directement à flits.cs.vu.nl, il se
charge de la requête jusqu'à obtention d'un résultat définitif : requête
récursive
●
S reçoit des réponses potentielles des serveurs intermédiaire et fait
plusieurs requêtes : requêtes itératives
15
Les types de serveurs DNS
●
Primaire :
– Garde les informations sur l'ensemble des domaines sur lesquels
il a autorité
– Sauvegarde également dans son cache les informations sur les
domaines précédemment interrogés
●
Secondaire :
– Télécharge les données d'une zone à partir d'un serveur de nom
primaire en utilisant un processus appelé « transfert de zones»
– TCP pour le transfert de zones (UDP pour les requêtes DNS)
●
Cache
– Serveurs non autoritaires qui ont des caches permettant de
stocker les informations de zones les plus sollicitées
– Utile pour le traitement rapide des requêtes
16
DNS : Principe de configuration
●
Au niveau du serveur
– Le nom de domaine
– Les serveurs DNS maîtres
– La base de données, le système de cache
●
Au niveau du client
– Le nom de domaine
– L'adresse IP du serveur DNS
– Pour un client Linux, il suffit d'éditer le fichier
/etc/resolv.conf.
– Et pour un client Windows, la configuration se fait au
niveau du panneau de configuration (icône « Réseau »).
17
Installation de BIND9
●
Paquets à installer :
– Pour installer le serveur BIND9, il suffit d'installer le
paquet bind9
– Le paquet dnsutils fournit des outils très pratiques pour
tester et débugger le service DNS
– La documentation BIND9 peut également être trouvée
dans le paquet bind9-doc
●
La commande d'installation est donc :
– sudo apt-get install bind9 dnsutils bind9-doc
18
Configuration de BIND9
●
Trois options de configuration de BIND9
– Serveur cache : Les réponses aux requêtes sont
cherchées auprès des DNS du FAI.
– Serveur maître : BIND9 lit les données d'une zone à
partir d'un fichier sur son hôte et fait autorité pour cette
zone
– Serveur secondaire : BIND9 obtient les données de la
zone d'un autre serveur de noms faisant autorité pour la
zone
●
Les fichiers de configuration de BIND9 sont stockés
dans le répertoire /etc/bind/ ; le principal étant
/etc/bind/named.conf
19
BIND9 comme serveur cache
●
C'est la configuration par défaut.
●
Il faut juste éliminer les commentaires et modifier les
lignes ci-dessous du fichier
/etc/bind/named.conf.options
forwarders {
X.XX.X;
8.8.8.8;
};
●
X.X.X.X et 8.8.8.8 sont à remplacer par les adresses
des serveurs DNS de votre système.
●
Redémarrer ensuite le serveur BIND9 pour prendre en
compte la nouvelle configuration.
●
Tester
20
BIND9 comme serveur maître
●
On considère le réseau 192.168.120.0/24.
●
Le nom de zone info-l3-RS.com
●
Créations des zones pour les résolutions directes et
inverse
●
Configuration de la base de données pour les
résolutions directes et inverses.
21
BIND9 comme serveur maître :
résolution directe (1/3)
●
Définition de la zone info-l3-RS.com dans le fichier
/etc/bind/named.conf.local
zone "info-l3-RS.com" {
type master;
file "/etc/bind/db.info-l3-RS.com";
};
●
Le mot clé type permet de préciser le type de zone
●
file permet de préciser le fichier qui va stocker les
informations pour cette zone.
22
BIND9 comme serveur maître :
résolution directe (2/3)
●
Base de données (/etc/bind/db.info-l3-RS.com) pour la
zone info-l3-RS.com
●
Construite à partir du fichier /etc/bind/db.local
– sudo cp db.local db.info-l3-RS.com
●
Dans le fichier /etc/bind/db.info-l3-RS.com
– Remplacer « localhost. » par le nom de domaine « info-l3-
RS.com. »
– Remplacer « 127.0.0.1 » par l'adresse IP de votre serveur BIND9
– Remplacer « root.localhost. » par une adresse émail valide.
Dans cette adresse, remplacer le « @ » par le point « . »
– Créer un enregistrement de type A pour le nom « ns.info-l3-
RS.com »
– Modifier également le commentaire pour indiquer qu'il s'agit du
fichier pour la zone « info-l3-RS.com » 23
BIND9 comme serveur maître :
;
résolution directe (3/3)
; BIND data file for l3di-fs-uy1
;
$TTL 604800
@ IN SOA ns.info-l3-RS.com. admin.info-l3-RS.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
info-l3-RS.com. IN NS ns.info-l3-RS.com.
info-l3-RS.com. IN A 192.168.120.1
info-l3-RS.com. IN MX 10 mail.info-l3-RS.com.
ns IN A 192.168.120.1
www IN CNAME ns.info-l3-RS.com.
server1 IN A 192.168.120.2
ftp IN CNAME server1.info-l3-RS.com.
mail IN A 192.168.120.5
●
Incrémenter le numéro de série chaque fois que ce fichier est
modifié
●
Redémarrer pour prendre en compte les changements.
24
BIND9 comme serveur maître :
résolution inverse (1/2)
●
Définition de la zone : éditez le fichier
/etc/bind/named.conf.local comme suit :
zone "120.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
●
120.168.192 ici représente les trois premiers octets
de l'adresse du réseau configuré.
●
La base de données.
– À partir du fichier /etc/bind/db.127 :
– sudo cp db.127 db.192
25
BIND9 comme serveur maître :
résolution inverse (2/2)
;
; BBIND reverse data file for local 192.168.120.XXX net
;
$TTL 604800
@ IN SOA ns.info-l3-RS.com. admin.info-l3-RS.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
1 IN PTR ns.info-l3-RS.com.
2 IN PTR server1.info-l3-RS.com.
5 IN PTR mail.info-l3-RS.com.
26
BIND9 comme serveur maître : Tests
●
Toujours redémarrer après avoir modifier les
configurations :
– sudo service bind9 restart
– ping info-l3-RS.com
– named-checkzone info-l3-RS.com /etc/bind/db.info-l3-RS.com
– named-checkzone 120.168.192.in-addr.arpa /etc/bind/db.192
– dig info-l3-RS.com
27
BIND9 comme serveur secondaire
(1/2)
●
Configurer BIND9 comme serveur secondaire
suppose qu'il existe déjà un serveur BIND primaire
●
Au niveau du serveur maître,
– Les transferts de zone doivent être autorisés
zone "info-l3-RS.com" {
type master;
file "/etc/bind/db.info-l3-RS.com";
allow-transfer { 192.168.120.2; }
};
zone "120.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
allow-transfer { 192.168.120.2; }
};
●
192.168.120.2 est l'adresse IP du serveur secondaire
28
BIND9 comme serveur secondaire
(2/2)
●
Au niveau du serveur secondaire,
– Installer BIND9 comme dans le cas d'un serveur
primaire
– Modifier par la suite le fichier
/etc/bind/named.conf.local en ajoutant les déclarations
suivantes :
zone "info-l3-RS.com" {
type slave;
file "/etc/bind/db.info-l3-RS.com";
masters { 192.168.120.1; }
};
zone "120.168.192.in-addr.arpa" {
type slave;
file "/etc/bind/db.192";
masters { 192.168.120.1; }
};
29
Les LOG de bind9 (1)
●
Création des fichiers de log
✔ mkdir /var/log/bind9
✔ touch /var/log/bind9/bind9.log
✔ touch /var/log/bind9/update_debug.log
✔ touch /var/log/bind9/security_info.log
30
Les LOG de bind9 (2)
●
Edition du fichier /etc/bind/named.conf.options
●
Créer un bloc logging {….} ; et dans ce bloc
insérer :
channel update_debug {
file "/var/log/bind9/update_debug.log"
versions 3 size 100k;
severity debug;
print-severity yes;
print-time yes;
print-category yes;
};
31
Les LOG de bind9 (3)
●
Edition du fichier /etc/bind/named.conf.options
●
Créer un bloc logging {….} ; et dans ce bloc
insérer :
channel security_info {
file "/var/log/bind9/security_info.log"
versions 1 size 100k;
severity info;
print-severity yes;
print-time yes;
print-category yes;
};
32
Les LOG de bind9 (4)
●
Edition du fichier /etc/bind/named.conf.options
●
Créer un bloc logging {….} ; et dans ce bloc
insérer :
channel warning_log {
file "/var/log/bind9/bind9.log" versions 3
size 1m;
severity warning;
print-category yes;
print-severity yes;
print-time yes;
};
33
Les LOG de bind9 (5)
●
Edition du fichier /etc/bind/named.conf.options
●
Créer un bloc logging {….} ; et dans ce bloc
insérer :
category default { warning_log; };
category update_debug { update_debug; };
category security_info { security_info; };
34
Les LOG de bind9 (6)
●
channel : Un channel regroupe les instructions permettant à
bind de constituer ses logs
●
file :Adresse du fichier de log.
●
version :Le nombre de fichiers de log à conserver sur le
serveur.
●
size :La taille maximum du fichier de log.
●
severity :Le niveau minimum des erreurs à relever
●
print-time :Inscrit l’heure lors de l’enregistrement des logs.
●
print-severity :Inscrit le niveau de sécurité (client, config,
network, security, default…) dans les logs.
●
print category : ajoute la catégorie des messages dans les logs
●
category default {} : Les messages de la catégorie default
seront gérés par le channel default_log
35
Couplage DHCP et DNS
●
Comment permettre au DHCP de mettre à jour
automatiquement les clients au niveau de la base
de données DNS ?
●
Le serveur DHCP à besoin du nom du client
– Les clients Windows envoient par défaut leur nom dans
les requêtes DHCP, ce n'est pas le cas pour les clients
linux
– Sous Linux
●
Créer le fichier /etc/dhcp3/dhclient.conf
●
Ajouter la ligne : send host-name "nomdelamachine" ;
36
DHCP-DNS : Modifications à
apporter au serveur DHCP (1)
●
Au niveau du serveur DHCP
server-identifier 192.168.120.7;
ddns-updateson;
ddns-update-style interim;
ddns-domainname "info-l3-RS.com.";
ddns-rev-domainname "120.168.192.in-
addr.arpa.";
allow unknown-clients;
ignore client-updates; 37
DHCP-DNS : Modifications à
apporter au serveur DHCP (2)
●
Au niveau du serveur DHCP
include "/etc/bind/rndc.key";
#Les zones qui seront mis à jour automatiquement
zone info-l3-RS.com. {
primary 192.168.120.7;
key "rndc-key";
}
Zone 120.168.192.in-addr.arpa. {
primary 192.168.120.7;
key "rndc-key";
} 38
DHCP-DNS : Modifications à
apporter au serveur DHCP (3)
●
Si jamais vous obtenez une erreur du genre
impossible de lire le fichier /etc/bind/rndc.key
– Ouvrer ce fichier
– Remplacer include "/etc/bind/rndc.key" par le
bloc suivant que vous avez copié dans ce fichier
key "rndc-key" {
algorithm hmac-md5;
secret "xxxxxxxxxxxxxxx";
}
– Ou configurer correctement le service APPARMOR
39
DHCP-DNS : Modifications à
apporter BIND9 (1)
●
Modifier la définition des zones dans le fichier /etc/bind/named.conf.local
pour que ça ressemble à ce qui est ci-dessous
zone "info-l3-RS.com" in {
type master;
file "/etc/bind/db.info-l3-RS.com";
allow-update { key "rndc-key"; };
notify yes;
};
zone "120.168.192.in-addr.arpa" in {
type master;
file "/etc/bind/db.192";
allow-update { key "rndc-key"; };
notify yes;
};
40
include "/etc/bind/rndc.key";
DHCP-DNS : Modifications à
apporter BIND9 (2)
●
Modifier la définition des zones dans le fichier
/etc/bind/named.conf.options pour que ça
ressemble à ce qui est ci-dessous
….............
controls {
inet 127.0.0.1 allow { localhost; } keys { "rndc-
key"; };
};
41
DHCP-DNS : Autres paramétrage
●
Assignation des droits
– sudo chmod g+w /etc/bind
– sudo chmod +r /etc/bind/rndc.key
●
Apparmor
– Soit vous le désactiver
– Sinon :
●
Ouvrez le fichier /etc/apparmor.d/usr.sbin.dhcpd
●
Ajouter les lignes suivantes avant le caractére « } »
/var/lib/bind/** rw,
/var/lib/bind/ rw,
●
Modifier le fichier /etc/apparmor.d/usr.sbin.named et
ajouter la ligne /etc/bind/** rw 42
Tests
●
Redémarrer les services
– sudo /etc/init.d/apparmor restart
– sudo /etc/init.d/isc-dhcp-server restart
– sudo /etc/init.d/bind9 restart
●
Renouveller l'adresse d'un client et consulter les
logs, la base de données DNS pour vérifier
43