Vous êtes sur la page 1sur 8

Serveur DNS

Julien Danjou jdanjou@linuxenrezo.org


Pour convertir les noms dordinateurs en adresses IP, la mthode la plus e simple consiste ` tenir ` jour un chier hosts contenant les adresses IP suivies a a des noms de chaque machine composant le rseau. e En voici un exemple: 127.0.0.1 localhost 192.168.1.1 quark 192.168.1.2 mulder Cette mthode nest valable que pour un petit rseau comportant un nombre e e rduit (une dizaine) de machines connectes, gres par un seul administrateur e e ee et ayant aucun contact avec le monde extrieur, cest-`-dire ntant pas raccord e a e e directement Internet. Avec un grand nombre de machine, une solution alternative consiste ` utiliser a le programme bind pour la rsolution des noms en adresses IP. e Avant de crer un serveur de nom, il faut attribuer un nom de domaine ` e a votre rseau. Surtout ne choisissez pas un nom qui existe dj` sur lInternet, e ea sinon vous risqueriez davoir quelques probl`mes. Jutilise le nom nunux.fr dans e mes exemples.

Le chier /etc/resolv.conf

Avant de congurer le DNS (Domain Name System - Syst`me des noms de doe maines), il faut vrier le contenu du chier /etc/resolv.conf. Il doit contenir e un champ domain suivi du nom de votre domaine (nunux.fr dans mon exemple). Il doit aussi contenir une ligne commenant par nameserver suivi de ladresse c IP du serveur DNS. Si ce dernier est votre PC personnel, alors ladresse sera 127.0.0.1.

Voici un exemple de chier /etc/resolv.conf : domain nunux.fr nameserver 127.0.0.1 Vous devez aussi installer le package bind qui contient le programme named qui est le serveur de nom.

Cration du chier /etc/named.conf e

Ce chier est gnralement de tr`s petite taille (quelques octets) et ne contient e e e que des pointeurs vers les chiers de rfrence. ee Voici ici un exemple de chier /etc/named.conf, que vous pourrez adapter selon votre rseau: e

zone 0.0.127.in-addr.arpa { type master; file /var/named/pz/127.0.0; }; zone 0.168.192.in-addr.arpa { type master; file /var/named/pz/192168.0; }; zone nunux.fr { type master; file /var/named/pz/nunux.fr; }; La premi`re partie sert ` la rsolution inverse des noms. Cela permet de e a e e conna le nom dun PC ` partir de son adresse IP. La deuxi`me partie sert ` tre a e a la rsolution de noms du domaine nunux.fr. e

Cration des chiers de zone e

Un chier de zone est compos de RR. RR est labrviation de Ressource Record, e e et est la plus petite donne du serveur DNS. Chaque RR a un type: A, par exe emple, fait correspondre un nom avec une adresse IP. Voici une liste de quelques-uns des principaux RR utiliss: e SOA: signie Start Of Authority et signale que lenregistrement qui suit contient les informations ayant autorit pour ce domaine. Chaque chier de e zone doit contenir un RR de type SOA. Il contient les champs suivants. Le numro de rvision du chier. On peut aussi le remplacer par la date. e e Le temps de rafra chissement (en secondes) des informations lues ` partir du a serveur principal (ou primaire). Le temps (en secondes) pendant lequel le serveur va essayer de joindre le serveur primaire si une requte ou le rafra e chissement choue. e Le temps (en secondes) au bout duquel un serveur secondaire doit liminer e toutes les informations de zones sil na pas pu contacter un serveur primaire. Le temps (en secondes aussi :-) pendant lequel les autres serveurs doivent conserver le RR (Ressource Record) dans leur cache. Le temps peut aussi tre cris sous une autre forme: 8H = 8 heures, 1W = 1 e e semaine, 1D = 1 jour, etc... A: cet enregistrement associe une adresse IP un nom de machine. Il ne a doit y avoir quun seul champ A par machine. NS: les enregistrements NS servent ` spcier un serveur primaire de zone, et a e tous ses serveurs secondaires. Le champ de donnes contient le nom du serveur e de noms primaire de cette zone. CNAME: cet enregistrement associe un alias au nom canonique dun hte. o Le nom canonique est celui indiqu par lenregistrement A. e PTR: ce type denregistrement est utilis pour associer les noms dans le e domaine in-addr.arpa avec les noms dhtes. Il sert ` la rsolution invers. Le o a e e nom indiqu doit tre le nom canonique. e e MX: cet enregistrement annonce un changeur de courrier (Mail eXchanger) e pour un domaine. il faut faire prcder le nom de lchangeur par un nombre ene e e tier, qui correspond la prfrence. Un agent de transport de courrier dsirant a ee e dlivrer un message ` un domaine (par exemple sendmail) essaiera tous les e a htes qui ont un enregistrement MX en commenant par celui qui a le plus peo c tit numro de prfrence. e ee

HINFO: cet enregistrement donne des informations sur le matriel et le e syst`me dexploitation utilis. Tout dabord il faut crer le chier /var/named/pz/127.0.0 e e e qui contiendra le nom des PC du rseau 127.0.0.0. En fait, ceci sera fait sur e nimporte quel rseau, puisque ladresse IP 127.0.0.1 est celle de linterface loope back (votre machine). Il est donc fortement recommande, voir obligatoire :-) e davoir ce chier. Il sert ` la rsolution de nom inverse, ce qui permet de dea e mander le nom dun PC ` partir de son adresse IP. a Voici un chier /var/named/pz/127.0.0:

PTR

SOA quark.nunux.fr surfman.nunux.fr ( 1 8H 2H 1W 1D) NS quark.nunux.fr localhost.

IN

Lenregistrement PTR a pour premier champ le numro de lhte, ici 1, ce e o qui donne 127.0.0.1. Il est suivi du nom correspondant ` ladresse IP, le nom a se nissant par un point. Tous les autres types de RR sont indiqus plus haut, e lisez leur dnition pour en savoir plus. e On a vu dans le chier /etc/named.conf que les adresses IP des machines de nunux.fr se trouvaient dans /var/named/pz/nunux.fr. Nous allons donc crer ce chier, dont voici un exemple:

localhost quark mail quark ns1

A A CNAME HINFO CNAME

SOA quark.nunux.fr surfman.nunux.fr ( 199907241 8H 2H 1W 1D) NS quark MX 10 mail 127.0.0.1 192.168.1.1 192.168.1.1 Pentium 150 MHz Linux 2.2.9 quark

IN

www ftp pop mulder mulder quake

CNAME CNAME CNAME A HINFO CNAME

quark quark quark 192.168.1.2 Celeron 500 MHz Windows 98 mulder

On voit dabord que nunux.fr est compos de deux machines: e quark.nunux.fr avec 192.168.1.1 comme adresse mulder.nunux.fr avec 192.168.1.2 comme adresse quark.nunux.fr a aussi dautres nom (CNAME): mail.nunux.fr www.nunux.fr ftp.nunux.fr pop.nunux.fr mulder.nunux.fr a un seul autre nom, qui est quake.nunux.fr Le champ de lenregistrement MX est mail, ce qui signie mail.nunux.fr. Si on veut indiquer le nom en entier, il faudra crire mail.nunux.fr.. Notez bien le point la n ! Il reste un probl`me: si on veut connaitre le nom dune machine ` partir e a de son adresse IP. Cela sappele la recherche de noms inverse: il faut crer un e chier /var/named/pz/192.168.1. En voici un exemple:

1 2

IN SOA quark.nunux.fr surfman.nunux.fr ( 1 8H 2H 1W 1D) NS quark.nunux.fr PTR quark.nunux.fr. PTR mulder.nunux.fr.

Pensez ` mettre un point apr`s le nom, sinon vous aures des surprises ! Tout a e est ni, vous pouvez lancez le serveur en tapant ndc start et larrter en tapant e ndc stop. Il est bien sur conseiller de le mettre au dmarrage :-) e

Utilisation de nslookup

nslookup est un programme permettant linterrogation dun serveur de noms. Il lit les adresses des serveurs de noms dans le chier /etc/resolv.conf. Voici un exemple de session avec nslookup:

[root@quark /]# nslookup Default Server: localhost Address: 127.0.0.1 [root@quark /]# nslookup quark.nunux.fr Server: localhost Address: 127.0.0.1 Name: quark.nunux.fr Address: 192.168.1.1 [root@quark /]# nslookup www.nunux.fr Server: localhost Address: 127.0.0.1 Name: quark.nunux.fr Address: 192.168.1.1 Aliases: www.nunux.fr [root@quark /]# nslookup set q=ns nunux.fr. Server: localhost Address: 127.0.0.1 nunux.fr nameserver = quark.nunux.fr quark.nunux.fr internet address = 192.168.1.1 set q=any mulder.nunux.fr Server: localhost Address: 127.0.0.1 mulder.nunux.fr CPU = Celeron 500 MHz OS = Windows 98 mulder.nunux.fr internet address = 192.168.1.2 nunux.fr nameserver = quark.nunux.fr quark.nunux.fr internet address = 192.168.1.1

Serveur DNS pour le rseau local et lInternet

Mon rseau tant parfois connect lInternet (je dis souvent lInternet, car un e e e internet est un rseau, tout comme lintranet ou lextranet) jen avais marre de e changer le chier resolv.conf pour quil utilise mon serveur DNS quand je ne suis pas connect, et le serveur DNS de mon FAI lorsque je me connecte lInternet. e a Alors jai transform mon serveur DNS. Je lui ai ajout une option an quil e e aille chercher tous les autres domaines sur dautres serveurs. Il faut rajouter ceci dans votre /etc/named.conf:

zone . { type hint; file /var/named/root.hints; }; Il faut aussi crer le chier /var/named/root.hints qui contiendra les serveurs e de noms de lInternic. Pour obtenir un tel chier il faut utiliser le programme dig et lancer:

dig @rs.internic.net . ns >/var/named/root.hints Le probl`me est que lorsque vous demanderez, par exemple, une image dans e un chier HTML sur un serveur qui nest pas sur le rseau, named va interroger un serveur dont le nom apparat dans le chier root.hints et cela ne va jamais, sarrter (il ne vous reste plus qu killer Netscape quand il se met faire ) Pour viter cela, il sut de crer un chier root.hints vide lorsque lon nest e e pas connect ` lInternet. A chaque connexion, on lance un script qui remplace ea temporairement le chier root.hints vide par un chier root.hints cr avec la ee commande dig ci-dessus. De cette mani`re, lorsque vous serez dconnect, le chier root.hints sera e e e vide et aucun autre serveur ne sera interrog ! e

En pratique, crez un chier root.hints vide et un chier root.hints.full qui e contient le rsultat de la commande dig, et vous pourrez ajouter ` vos scripts e a ip-up et ip-down:

ip-up mv /var/named/root.hints /var/named/root.hints.empty mv /var/named/root.hints.full /var/named/root.hints ip-down mv /var/named/root.hints /var/named/root.hints.full mv /var/named/root.hints.empty /var/named/root.hints