Serveur DNS
Présentation
Introduction
DNS est un protocole permettant d'associer à une IP un nom de machine et réciproquement. Le service utilisé pour assurer cette fonction est Bind.
L'inventaire des zones gérés par le serveurs DNS sont renseignés dans le fichier /var/named/chroot/etc/named.conf. Les fichiers de zone sont stockés /var/named/chroot/var/named/.
Le nom de domaine
Bind est un serveur de DNS. Le DNS permet de gérer les noms de domaines qui régissent aujourd'hui le nommage du réseau Internet. Aujourd'hui, il est rare que l'on accède à un serveur directement par son adresse IP sauf si l'on veut se soustraire à l'étape de résolution DNS (pour du debuggage, par exemple).
Un nom de domaine est composé généralement de deux parties. Voici par exemple un nom de domaine : ncad.fr Avec :
- ncad : qui désigne le domaine;
- fr : qui désigne l'extension de domaine.
Le rôle du Registry ou Registre
Le DNS est un système hiérarchisé. L'extension de domaine est gérée par une entité nationale - dans le cadre des extensions ccTLD comme .fr pour la France - ou par des entités tiers internationales - pour les extensions génériques gTLD comme l'extension .com.
Ces entités qui assure la gestion technique d'une ou plusieurs extensions de domaine ccTLD et/ou gTLD sont appelées registry ou registre pour l’appellation française.
|
Les registres ne s'occupent uniquement de l'aspect technique de leur extension. L'aspect commercial est délégué aux registrars / bureaux d'enregistrement. |
Le rôle du Registrar ou Bureau d'enregistrement
Lors de son lancement, le registre peut faire la promotion de son extension. Cependant, sa vente et son dépôt sont gérées par les Bureaux d'enregistrement ou Registrars.
Ces Registrars sont des sociétés de service, ils peuvent être des hébergeurs web ou encore des opérateurs de télécommunication. Ils sont l'interface entre le Registrant (celui qui veut déposer un nom de domaine) et le Registry (l'organisme qui gère l'extension du domaine).
Pour pouvoir exister, un domaine doit obligatoirement être déposé dans l'une des nombreuses extensions de domaine. Le dépôt doit être effectué via le Registrar en respectant les conditions de dépôt propres à chaque extension (nationalité du Registrant, âge, pays de résidence, forme juridique, ...).
Une fois déposé, le nom de domaine doit être hébergé sur deux serveurs DNS. Le premier est désigné comme serveur primaire. C'est sur ce serveur que les modifications sur la zone seront opérées. Le seconde serveur est un serveur secondaire. C'est un serveur de sauvegarde en cas de panne du serveur primaire. Ces serveurs doivent être indiqués au Registre lors du dépôt du nom de domaine. Généralement, le Registrar fournit deux serveurs DNS pour héberger la zone DNS du nom de domaine déposé.
Ainsi, la zone DNS est la matérialisation du nom de domaine d'un point de vue technique sur le DNS. Cette zone est hébergée sur au moins deux serveurs DNS. Le Registre déclare le nom de domaine et indique quels serveurs DNS hébergent la zone DNS du nom de domaine déposé pour permettre sa résolution.
Le WHOIS
Le whois est une base de données propres à chaque Registry. Cette base administrative permet d'enregistrer les contacts d'un nom de domaine qui sont :
- le registrant : la personne qui a déposé le nom de domaine et qui est titulaire de ce dernier;
- le contact administratif : souvent le même contact désigné que pour le registrant. Cette personnes peut effectuer les opérations aussi bien techniques (ajout, modification, suppression d'enregistrements sur la zone DNS) que administratives (modification des contacts pour le nom de domaine, changement des serveurs de zone DNS, demande de l'auth-code pour le transfert du nom de domaine) sur le nom de domaine.
- le contact technique : Ce contact peut effectuer les opérations techniques sur le nom de domaine.
|
Il est important de tenir à jour cette base WHOIS. En cas de litige (propriété du nom de domaine, modifications techniques) seuls les contacts figurant dans cette base sont juridiquement reconnus. |
Pour consulter la base WHOIS d'un Registry, il suffit de se rendre sur le site web du Registre. Par exemple, pour l'extension .fr c'est le site du Registry AFNIC. On peut également la consulter en ligne de commande depuis un terminal grâce à la commande Whois. Si le système d'exploitation ne connaît pas le serveur Whois à interroger on peut spécifier ce dernier avec l'argument -h :
|
|
|
|
Le Whois indique quels serveurs de DNS seront interrogés pour résoudre le nom de domaine. Prenons l'exemple du nom de domaine ncad.fr en interrogeant le Whois de l'Afnic sur son site Internet :
Dans cette exemple, les serveurs DNS autoritaires pour la zone DNS ncad.fr sont :
- en primaire : dns10.ovh.net
- en secondaire : ns10.ovh.net
Ce sont ces serveurs qui seront sollicités pour toutes résolutions de la zones DNS ncad.fr.
Bind9
Présentation
Bind9 est un serveur DNS. Il permet d'héberger une voir plusieurs zones DNS. Bind9 est un service fonctionnant sous Linux qui est gratuit sous licence libre.
Pour héberger un nom de domaine sur un serveur DNS personnel il faudra valider les conditions techniques suivantes : - disposer de deux machines assurant le service DNS; - les deux machines doivent disposer de deux adresses IPv4 fixes, publiques et différentes; - les deux machines devront être déclarer sur le Whois du Registry en tant que serveur DNS pour les noms de domaines dont elles hébergerons les zones DNS.
Installation
Depuis les dépôts
Bind9 est disponible dans les dépôts Debian et Ubuntu. Il suffit donc d'installer le paquet le bind9 :
|
|
Une fois installé, Bind9 dispose des fichiers et répertoires suivants :
- /etc/bind/ : répertoire où sont stockés les fichiers de configuration généraux du service et ceux des zones;
- /etc/init.d/bind9 : script permettant d'arrêter, démarrer, redémarrer le service bind9.
Création d'une zone DNS
Dans cet exemple, nous allons définir sur le serveur DNS Bind9 la zone ncad.fr. Pour cela, nous allons agir sur deux fichiers :
- /etc/bind/named.conf.default-zones : pour déclarer le nom de domaine et son fichier de zone dans Bind9;
- /etc/bind/ncad.fr.hosts : fichier de zone à créer contenant tous les enregistrements DNS du nom de domaine ncad.fr.
Définition du nom de domaine
Nous allons indiquer à Bind9 quel fichier il doit consulter pour résoudre le nom de domaine ncad.fr. Ce fichier hébergera la zone DNS du nom de domaine ncad.fr et devra donc être crée. On édite le fichier /etc/bind/named.conf.default-zones et on y ajoute les informations suivantes :
zone "ncad.fr" { type master; file "/etc/bind/ncad.fr.hosts"; };
Avec :
- type master : pour indiquer à Bind9 qu'il est le serveur primaire pour cette zone;
- file "/etc/bind/ncad.fr.hosts" : fichier où sera hébergé la zone DNS.
Création de la zone DNS ncad.fr
Maintenant, il faut créer le fichier contenant la zone DNS permettant la résolution du nom de domaine ncad.fr. Dans cette zone on va y renseigner un enregistrement SOA (Start Of Autority) et un enregistrement NS (Name System).
$ttl 38400 $ORIGIN ncad.fr. @ IN SOA 10.0.0.170. tech.ncad.fr. ( 2012121601 // sérial number au forma aaaammjjnn 10800 3600 604800 38400 ) NS 10.0.0.170.
L'enregistrement SOA permet de définir le serveur primaire de la zone, son numéro de série et des informations relatives à sa durée de vie et à sa mise en cache. Les deux enregistrements NS permettent d'indiquer sur quels serveurs DNS (primaire et secondaire(s)) sont hébergés la zone DNS.
|
Ceci est une configuration minimale de la zone. Il sera nécessaire d'y ajouter des enregistrements DNS supplémentaires si l'on souhaite héberger un site web ou créer des boîtes mails avec son nom de domaine. |
Ajout d'un enregistrement A
Les enregistrements DNS de type A permettent d'affecter à une un nom de domaine une adresse IP.
Par exemple, on souhaite héberger un site web qui aura pour adresse www.ncad.fr. Pour cela on définit les paramètres suivants :
- adresse IP du serveur hébergeant le site web : 10.0.0.140.
- adresse du site web : www.ncad.fr.
Dans la zone DNS, ces paramètres prendrons la forme suivante :
www IN A 10.0.0.140
Au final, la zone DNS ressemblera à ceci :
$ttl 38400 $ORIGIN ncad.fr. @ IN SOA 10.0.0.170 tech.ncad.fr. ( 2012121602 // serial number à incrémenterà chaque modification 10800 3600 604800 38400 ) IN NS 10.0.0.170. www IN A 10.0.0.140
|
L'enregistrement DNS s'ajoute à la suite. Chaque ligne dans le fichier de configuration de la zone correspond à un enregistrement DNS. |
Une fois l'enregistrement crée il faut redémarrer la service Bind9 pour que les modifications soient prises en compte. Il faut également incrémenter le serial number dans la zone.
|
|
Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur DNS primaire :
|
|
Ajout d'enregistrements MX
Les enregistrements MX (Mail eXchange) sont des enregistrements DNS qui permettent de définir le(s) serveur(s) de messagerie assurant le traitement des mails entrant pour le nom de domaine.
Par exemple, pour le nom de domaine ncad.fr ce sont les serveurs de messagerie de l'hébergeur OVH qui gèrent les boîtes mails en @ncad.fr. Il faut donc définir les enregistrements MX pointant vers les serveurs de messagerie d'OVH :
IN MX 5 mx1.ovh.net. IN MX 10 mx2.ovh.net.
|
Les valeurs 5 et 10 sont des poids qui permettent de définir des priorités pour les serveurs déclarés. L'enregistrement qui a le poids le plus faible est prioritaire. |
La commande dig mx permet d'obtenir la liste des serveurs de messagerie pour une zone DNS donnée. Ainsi on peut vérifier si les enregistrements DNS ci-dessus ont bien été pris en compte :
|
|
Et qui retourne les informations suivantes :
; <<>> DiG 9.7.3 <<>> mx ncad.fr @10.0.0.170 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20841 ;; flags: qr aa rd; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;ncad.fr. IN MX ;; ANSWER SECTION: ncad.fr. 86400 IN MX 5 mx1.ovh.net. ncad.fr. 86400 IN MX 10 mx2.ovh.net. ;; Query time: 43 msec ;; SERVER: 10.0.0.170#53(10.0.0.170) ;; WHEN: Sun Dec 16 23:00:40 2012 ;; MSG SIZE rcvd: 158
Ajout d'un enregistrement CNAME
Un enregistrement CNAME (Canonical NAME) désigne un alias. Ce type d'enregistrement pointe donc vers un nom de domaine plutôt qu'une adresse IP.
Par exemple, on veut créer l'enregistrement ftp.ncad.fr afin d'accéder au serveur FTP hébergeant le site web www.ncad.fr. Or, le serveurs FTP et le site web désignent la même machine et donc la même IP. On va donc insérer l'enregistrement suivant :
ftp IN CNAME www
On aurait pus créer un enregistrement de type A à la place. Cette enregistrement aurait été définit de cette manière :
ftp IN A 10.0.0.140
Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur DNS primaire :
|
|
Contenu final de la zone ncad.fr
Au final, la zone DNS de ncad.fr ressemble à ceci :
$ttl 38400 $ORIGIN ncad.fr. @ IN SOA 10.0.0.170 tech.ncad.fr. ( 2012121604 10800 3600 604800 38400 ) NS 10.0.0.170. IN MX 5 mx1.ovh.net. IN MX 10 mx2.ovh.net. www IN A 10.0.0.140 ftp IN CNAME www
Certains outils existent pour vérifier le contenu d'une zone DNS et ainsi détecter les erreurs. L'Afnic propose un outil nommé ZoneCheck qui permet de vérifier la validité d'une zone.
Création de la zone DNS inverse pour le réseau IPv4 10.0.0.0/24
Dans cet exemple, nous allons définir sur le serveur DNS Bind9 la zone inverse 0.0.10.in-addr.arpa qui gérera la résolution inverse des adresses IP du réseau 10.0.0.0/24. Pour cela, nous allons agir sur deux fichiers :
- /etc/bind/named.conf.default-zones : pour déclarer la zone inverse et son fichier de zone dans Bind9;
- /etc/bind/ncad.fr.hosts : fichier de zone à créer contenant tous les enregistrements DNS de la zone inverse du réseau 10.0.0.0/24.
Définition de la zone inverse
Nous allons indiquer à Bind9 quel fichier il doit consulter pour effectuer la résolution inverse de toutes les IP du réseau 10.0.0.0/24. Ce fichier hébergera la zone DNS inverse du réseau 10.0.0.0/24 et devra donc être crée. On édite le fichier /etc/bind/named.conf.default-zones et on y ajoute les informations suivantes :
zone "0.0.10.in-addr.arpa" { type master; file "/etc/bind/0.0.10.in-addr.hosts"; };
Avec :
- type master : pour indiquer à Bind9 qu'il est le serveur primaire pour cette zone;
- file "/etc/bind/ncad.fr.hosts" : fichier où sera hébergé la zone DNS inverse.
Création de la zone DNS inverse
Maintenant, il faut créer le fichier contenant la zone DNS inverse permettant la résolution inverse des adresses IP du réseau 10.0.0.0/24. Dans cette zone on va y renseigner un enregistrement SOA (Start Of Autority) et un enregistrement NS (Name System).
$ttl 38400 $ORIGIN 0.0.10.in-addr.arpa. @ IN SOA 10.0.0.170. tech.ncad.fr. ( 2012121601 10800 3600 604800 38400 ) NS 10.0.0.170.
|
La définition d'une zone inverse est identique à celle d'une zone DNS standard. Il n'y a que le nom de la zone qui diffère. |
Ajout d'un enregistrement PTR
Les enregistrements DNS de type PTR (PoinTer Record) permettent d'affecter à une adresse IP un nom de domaine.
Précédemment, on avait définit un enregistrement DNS de type A avec pour nom de domaine www.ncad.fr pointant vers l'adresse IP 10.0.0.140. On avait vérifié l'enregistrement grâce à la commande nslookup qui donnait le résultat suivant :
|
|
Cependant, si on effectue la commande nslookup sur l'adresse IP, cette dernière ne retournera aucun résultat :
|
|
Pour définir un reverse DNS il faut utiliser l'enregistrement PTR avec les informations suivantes dans cet exemple :
- adresse IP : 10.0.0.170.
- le nom du reverse DNS : www.ncad.fr.
Dans la zone DNS inverse, ces paramètres prendrons la forme suivante :
140 IN PTR www.ncad.fr.
Au final, la zone DNS ressemblera à ceci :
$ttl 38400 $ORIGIN 0.0.10.in-addr.arpa. @ IN SOA 10.0.0.170 tech.ncad.fr. ( 2012121602 10800 3600 604800 38400 ) IN NS 10.0.0.170. 140 IN PTR www.ncad.fr
Pour vérifier que l'enregistrement a bien été chargé sur la zone, on peut exécuter la commande suivante en interrogeant directement le serveur DNS primaire :
|
|
|
La définition d'un reverse DNS pour un serveur de messagerie est important. La vérification de la présence d'un reverse est un test afin d'éliminer les serveurs de SPAM qui n'en possèdent généralement pas (PC zombis). |
PTR et IP publique
Si vous souhaitez personnaliser le reverse DNS de votre adresse IP publique (autre que 192.168.0.0/16 - 172.16.0.0/12 - 10.0.0.0/8), vous devez prendre contact avec votre FAI ou votre hébergeur web. Pour connaître le propriétaire d'une adresse IP, il suffit d'utiliser la commande whois suivit de l'adresse IP :
|
|
Cette commande retourne les informations suivantes pour l'adresse IP 109.0.0.1 :
% This is the RIPE Database query service. % The objects are in RPSL format. % % The RIPE Database is subject to Terms and Conditions. % See http://www.ripe.net/db/support/db-terms-conditions.pdf % Note: this output has been filtered. % To receive output for a database update, use the "-B" flag. % Information related to '109.0.0.0 - 109.0.15.255' inetnum: 109.0.0.0 - 109.0.15.255 netname: N9UF-PRO descr: MPLS network country: FR admin-c: LDC50-RIPE tech-c: LDC76-RIPE status: ASSIGNED PA remarks: ********************************** remarks: * Abuse email: abuse@gaoland.net * remarks: ********************************** mnt-by: LDCOM-MNT mnt-lower: LDCOM-PRO-MNT source: RIPE # Filtered role: NEUF PRO address: Groupe N9uf Cegetel address: Immeuble Quai Ouest address: 40-42 Quai du point du jour address: 92659 Boulogne Billancourt address: France phone: +33 1 70 18 52 00 fax-no: +33 1 70 18 19 07 admin-c: LD699-RIPE admin-c: HN532-RIPE admin-c: GT705-RIPE tech-c: LDC76-RIPE nic-hdl: LDC50-RIPE abuse-mailbox: abuse@gaoland.net mnt-by: LDCOM-MNT source: RIPE # Filtered role: LDCOM Networks Tech Contact address: SFR address: Immeuble Quai Ouest address: 40-42 Quai du point du jour address: 92659 Boulogne Billancourt address: France phone: +33 1 70 18 52 00 admin-c: LD699-RIPE admin-c: LM5867-RIPE tech-c: LDC76-RIPE tech-c: DG1056-RIPE nic-hdl: LDC76-RIPE abuse-mailbox: abuse@gaoland.net mnt-by: LDCOM-MNT source: RIPE # Filtered % Information related to '109.0.0.0/11AS15557' route: 109.0.0.0/11 descr: LDCOM-NET origin: AS15557 mnt-by: LDCOM-MNT source: RIPE # Filtered % This query was served by the RIPE Database Query Service version 1.47 (WHOIS2)
L'adresse IP 109.0.0.1 appartient à l'opérateur SFR. C'est donc cette opérateur qui gère le reverse DNS associé à cette adresse IP. C'est donc avec cette opérateur qu'il faudra prendre contact si l'on souhaite personnaliser le reverse DNS de cette IP - si cette dernière nous a été attribuée évidement. Par défaut, le reverse de cette IP est le suivant :
|
|
Ceci est un reverse DNS générique (ici de la forme <reverse_ip>.rev.sfr.net). La plupart des opérateurs bloquent les mails en provenance de serveurs mails hébergés derrières des adresses IP ayant ce type de reverse DNS générique.