O Reilly Bind9
O Reilly Bind9
O Reilly Bind9
DNS et Bind
[12/01/08]
DNS et Bind
DNS et BIND
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
DNS et BIND
5e dition
[12/01/08]
DNS et Bind
Ldition originale de ce livre a t publie aux tats-Unis par OReilly Media, Inc., sous le titre DNS and BIND, 5th Edition, ISBN 0-596-10057-4. 2006 OReilly Media, Inc.
http://www.oreilly.fr/catalogue/9782841774098
Les programmes gurant dans ce livre ont pour but dillustrer les sujets traits. Il nest donn aucune garantie quant leur fonctionnement une fois compils, assembls ou interprts dans le cadre dune utilisation professionnelle ou commerciale.
ISBN 2-35402-122-4
Toute reprsentation ou reproduction, intgrale ou partielle, faite sans le consentement de lauteur, de ses ayants droit, ou ayants cause, est illicite (loi du 11 mars 1957, alina 1er de larticle 40). Cette reprsentation ou reproduction, par quelque procd que ce soit, constituerait une contrefaon sanctionne par les articles 425 et suivants du Code pnal. La loi du 11 mars 1957 autorise uniquement, aux termes des alinas 2 et 3 de larticle 41, les copies ou reproductions strictement rserves lusage priv du copiste et non destines une utilisation collective dune part et, dautre part, les analyses et les courtes citations dans un but dexemple et dillustration.
[12/01/08]
DNS et Bind
2.
3.
4.
[12/01/08]
DNS et Bind
vi
Table des matires Abrviations .......................................................................................................64 Tester les noms dhtes ......................................................................................68 Outils ..................................................................................................................70 Dmarrer un serveur primaire .........................................................................71 Dmarrer un serveur-esclave ............................................................................77 Grer plusieurs zones ........................................................................................83 Et maintenant ? .................................................................................................84
5.
6.
7.
8.
[12/01/08]
DNS et Bind
vii
9.
[12/01/08]
DNS et Bind
viii
Table des matires Manipulations de base ....................................................................................334 Utilisation avance...........................................................................................337 Problmes avec nslookup................................................................................344 La cerise sur le gteau......................................................................................348 Utiliser dig ........................................................................................................348
[12/01/08]
DNS et Bind
ix
A. Format des messages et des enregistrements de ressource du DNS........................................................................................ 487 B. C. Compatibilit des versions de BIND ......................................... 507 Compilation et installation de BIND dans Linux..................... 509
D. Domaines de niveau suprieur.................................................. 513 E. Conguration dun serveur de noms et dun resolver BIND ... 523
Index................................................................................................... 563
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
Prface
Mme en tant nophyte au sujet du systme de noms de domaine (Domain Name System, DNS), ds que lon utilise lInternet, on y a recours ; on en dpend chaque fois que lon envoie un courrier lectronique ou que lon surfe sur le World Wide Web. Alors que les tres humains prfrent retenir des noms dordinateurs, les ordinateurs prfrent se dsigner entre eux par un nombre. Dans un rseau internet, ce nombre a une longueur de 32 bits soit environ une valeur comprise entre 0 et 4 milliards1. Les ordinateurs peuvent facilement stocker ces adresses numriques en mmoire, ce qui nest pas le cas pour un humain. Prenez dix numros de tlphone au hasard dans lannuaire et essayez de les mmoriser. Pas facile ! Maintenant, associez au hasard chaque numro de tlphone un indicatif gographique. Mmorisez nouveau le tout. Cela donne une ide de la difcult de mmoriser dix adresses internet quelconques. Cest en partie pour cette raison que le systme de noms de domaine est indispensable. Le DNS gre les correspondances entre les noms dhte, pratiques pour les humains, et les adresses internet que manipulent les ordinateurs. En fait, le DNS est le mcanisme standard de lInternet pour la diffusion et laccs toutes sortes dinformations concernant les adresses et les htes eux-mmes. Le DNS est utilis par quasiment tous les logiciels rseau, dont le courrier lectronique, les programmes de terminal distant comme ssh, les programmes de transfert de chiers comme ftp et les navigateurs web comme Microsoft Internet Explorer. Une autre caractristique importante du DNS est quil rend disponibles des informations sur les htes partout sur lInternet. Le stockage dinformations concernant les htes dans un chier structur localis sur une machine spcique nest utile quaux utilisateurs de cette machine. Le DNS fournit un moyen daccder ces informations distance, o que lon soit dans le rseau.
1.
Avec IPv6, il aura une longueur de 128 bits, soit une valeur comprise entre 0 et un nombre dcimal 39 chiffres.
[12/01/08]
DNS et Bind
xii
Prface
De plus, le DNS permet de distribuer la gestion des informations concernant les htes vers plusieurs sites et organisations. Il nest pas ncessaire de fournir de donnes un site central, ni de rcuprer rgulirement des copies de la base de donnes matre . On sassure simplement que sa propre partie, appele zone, est jour sur ses propres serveurs de noms. Ces derniers rendent les donnes de la zone disponibles tous les autres serveurs de noms du rseau. Puisque la base de donnes est distribue, le systme doit galement pouvoir puiser les donnes recherches dans divers endroits. Le systme de noms de domaine fournit aux serveurs de noms lintelligence ncessaire pour naviguer travers la base de donnes et retrouver les donnes de toute zone. Bien sr, le DNS a aussi ses problmes. Par exemple, le systme permet plusieurs serveurs de stocker les donnes dune mme zone, par souci de redondance, mais des incohrences peuvent survenir entre les diffrentes copies des donnes. Mais le pire est que, malgr son utilisation universelle sur lInternet, la documentation sur la gestion et la maintenance du DNS est vraiment trs succincte. Beaucoup dadministrateurs ne travaillent quavec les informations fournies par les vendeurs et celles glanes dans les listes de diffusion de lInternet ou les forums de Usenet. Ce manque de documentation rvle que la comprhension dun service aussi fondamental pour lInternet daujourdhui ne repose que sur sa transmission dadministrateur administrateur comme un trsor de famille, ou sur un dfrichage rpt par chaque programmeur ou ingnieur. Les nouveaux administrateurs de zone se heurtent souvent aux mmes erreurs que leurs ans ! Cet ouvrage vise contribuer rsoudre cette situation. Bien sr, chacun na peut-tre pas lambition de devenir un expert du DNS, du fait des nombreuses tches accomplir, autres que la gestion dune zone ou dun serveur de noms : administration des systmes, ingnierie rseau ou dveloppement de logiciel. Seule une institution de taille importante peut se permettre daffecter une personne temps plein pour le DNS. Nous essaierons de fournir les informations utiles, que ce soit pour la gestion dune petite zone ou dune multinationale tentaculaire, un unique serveur de noms ou une centaine dentre eux. Pour lheure, il nest pas ncessaire de faire une lecture exhaustive de louvrage mais plutt une lecture cible en fonction des besoins. Le DNS est un vaste sujet, sufsamment large pour requrir deux auteurs, mais nous avons essay de le prsenter aussi nement et clairement que possible. Les deux premiers chapitres sont un prambule thorique et fournissent assez dinformations pratiques pour dmarrer. Les chapitres suivants approfondissent les diffrentes questions. Plus loin se trouve une description dtaille pour cheminer dans louvrage, au gr du travail et de lintrt de chacun. Lorsque nous parlerons des logiciels actuels de DNS, nous nous concentrerons presque exclusivement sur BIND (Berkeley Internet Name Domain), mise en uvre du DNS la plus rpandue (et celle que nous connaissons le mieux). Nous avons tent dmailler cet ouvrage de notre exprience en matire de gestion et de maintenance de zones avec BIND (lune de ces zones comptait parmi les plus vastes de lInternet lpoque). Lorsque cela est possible, nous avons inclus les programmes rels que nous utilisons pour la gestion, la plupart dentre eux tant rcrits en Perl pour la vitesse et lefcacit.
[12/01/08]
DNS et Bind
Versions
xiii
Nous esprons que ce livre sera une bonne prise de contact avec le DNS et BIND pour les dbutants, un moyen dafner la comprhension pour ceux qui en sont familiers, et un clairage et une exprience apprciables pour ceux qui les connaissent dj comme le fond de leur poche.
Versions
La cinquime dition de ce livre traite des nouvelles versions 9.3.2 et 8.4.7 de BIND mais aussi des anciennes versions 8 et 9. Les versions 9.3.2 et 8.4.7 sont les plus rcentes au moment o nous crivons, mais elles sont encore peu intgres dans les distributions commerciales dUnix, dune part parce quelles sont rcentes, dautre part parce que de nombreux diteurs sont sur leurs gardes ds quil sagit dutiliser des nouveaux logiciels. Nous ferons galement rfrence dautres versions de BIND car de nombreux diteurs continuent les utiliser au sein de leurs produits Unix. Chaque fois quune caractristique nest disponible que dans une des versions 8.4.7 ou 9.3.2, ou quil y a une diffrence de comportement entre les versions, nous essaierons de la caractriser. Nous utilisons nslookup, un utilitaire pour serveurs de noms, pice matresse dans nos exemples. La version utilise est celle fournie avec le code de BIND 9.3.2. Les versions plus anciennes disposent de la plupart des caractristiques de nslookup 9.3.2 (mais pas de toutes). Dans nos exemples, nous avons essay dutiliser des commandes communes la plupart des nslookup ; quand cela nest pas possible, nous lindiquons.
SPF (Sender Policy Framework), au Chapitre 5 ; mise jour dynamique et NOTIFY, et tude dtaille de la mise jour dynamique
signe et du nouveau mcanisme de BIND 9, update-policy, au Chapitre 10 ;
transfert incrmental de zone, galement au Chapitre 10 ; zones rediriges ( forward zones) et redirection conditionnelle, au Chapitre 10 ; redirection et rsolution inverse en IPv6 laide, respectivement, des enregistrements de ressource AAAA et de ip6.arpa, en n de Chapitre 10 ;
scurisation des serveurs de noms, au Chapitre 11 ; fonctionnement avec pare-feu Internet, au Chapitre 11 ; rvision des extensions de scurit (DNS Security Extensions ou DNSSECbis), procd
de signature numrique sur les donnes dune zone, au Chapitre 11 ;
conception dune architecture DNS complte pour une entreprise au Chapitre 16,
un chapitre nouveau ;
[12/01/08]
DNS et Bind
xiv
Prface
mise en relation dActive Directory et de BIND, au Chapitre 17, dans une section
entirement revue.
Organisation de louvrage
Cet ouvrage est structur, autant que possible, de manire suivre lvolution dune zone et de son administrateur. Les chapitres 2 et 3 prsentent la thorie du systme de noms de domaine. Les chapitres 4 7 guident dans les choix de conguration dune zone, puis dans sa mise en uvre. Les chapitres intermdiaires, 8 12, dcrivent comment entretenir une zone, congurer les htes pour utiliser des serveurs de noms, grer la croissance dune zone, crer des sous-domaines et scuriser les serveurs de noms. Les derniers chapitres, 13 15, traitent des outils dintervention, des problmes, ainsi que de lart de la programmation avec les procdures de la bibliothque du resolver. Le chapitre 16 lie lensemble au sein dune architecture complte. Voici une description plus dtaille, chapitre par chapitre : Chapitre 1, Contexte Aprs un rappel historique, il expose les raisons qui ont men au dveloppement du DNS, puis prsente la thorie du DNS. Chapitre 2, Principes du DNS Il approfondit les aspects thoriques du DNS en abordant lorganisation de lespace de noms du DNS, les domaines, les zones et les serveurs de noms. Nous introduisons galement des concepts importants comme la rsolution de noms et la mmoire cache. Chapitre 3, Premiers pas dans la mise en uvre Il indique comment obtenir le logiciel BIND, envisager la conguration de son domaine et choisir son nom, et comment contacter lorganisation qui peut dlguer la gestion de la zone. Chapitre 4, Mise en uvre de BIND Il dtaille la manire dinitialiser ses deux premiers serveurs de noms avec BIND, en crant la base de donnes, dmarrant les serveurs et testant leur fonctionnement. Chapitre 5, DNS et courrier lectronique Il traite des enregistrements MX du DNS, qui permettent aux administrateurs de dsigner des htes alternatifs pour grer le courrier vers une destination donne. Ce chapitre couvre les stratgies de routage du courrier pour une grande diversit de rseaux et dhtes, y compris pour des rseaux avec pare-feu de scurit et htes sans connectivit directe lInternet. Enn, il dcrit SPF (Sender Policy Framework), qui utilise le DNS pour autoriser les serveurs de messagerie expdier des courriers partir dadresses spciques.
[12/01/08]
DNS et Bind
Organisation de louvrage
xv
Chapitre 6, Prparation des clients Il explique comment congurer un resolver BIND. Nous avons ajout des indications sur les particularits des resolvers de Windows. Chapitre 7, Exploitation de BIND Il dcrit la gestion dune zone que doit effectuer un administrateur, comme le test de ltat et de lautorit des serveurs de noms. Chapitre 8, Expansion de domaine Il traite de lvolution dune zone : croissance, planication des migrations et interruptions. Chapitre 9, Gestion de sous-domaines Il prsente les joies de devenir une zone-parent. Nous y expliquons quand devenir un parent (cest--dire quand crer un sous-domaine) et comment appeler, crer et surveiller les enfants. Chapitre 10, Fonctionnalits avances Il traite des options de conguration moins courantes pouvant aider ajuster les performances dun serveur de noms et faciliter son administration. Chapitre 11, Scurit Il dcrit comment scuriser un serveur de noms et comment le faire fonctionner avec un pare-feu internet. Il dcrit aussi deux nouvelles fonctions de scurit : les extensions de scurit du DNS et la signature de transaction. Chapitre 12, nslookup et dig Il prsente les outils de dbogage du DNS les plus rpandus, ainsi que des techniques daccs aux informations situes dans les serveurs de noms distants. Chapitre 13, Interprtation des informations de dbogage de BIND Il est la Pierre de Rosette des informations de dbogage de BIND. Ce chapitre devrait vous aider donner un sens aux informations de dbogage mises par BIND et mieux comprendre un serveur de noms. Chapitre 14, Dpannage du DNS et de BIND Il aborde de nombreux problmes usuels du DNS et de BIND, ainsi que leurs solutions, puis dcrit des cas plus rares, difciles diagnostiquer. Chapitre 15, Programmation avec les bibliothques du service de noms Il montre comment utiliser les procdures du resolver de BIND pour interroger les serveurs de noms et rcuprer les informations par un programme en C ou en Perl. Nous prsentons un programme utile (nous lesprons !) pour tester ltat et lautorit dun serveur de noms. Chapitre 16, Architecture Il prsente une infrastructure DNS complte, comprenant des serveurs de noms externes, des redirecteurs et des serveurs de noms internes.
[12/01/08]
DNS et Bind
xvi
Prface
Chapitre 17, Divers Il regroupe tous les autres petits dtails. Nous y abordons les mta-caractres, les htes et les rseaux connects lInternet de faon intermittente par rseau tlphonique commut, le codage dun nom, des types denregistrement supplmentaires, ENUM, IDN et Active Directory. Annexe A, Format des messages et des enregistrements de ressource du DNS Elle dcrit, octet par octet, les formats utiliss dans les requtes et les rponses, ainsi quune liste des types denregistrements de ressource actuellement dnis. Annexe B, Compatibilit des versions de BIND Elle rsume les principales caractristiques de BIND, version par version. Annexe C, Compilation et installation de BIND dans Linux Elle dcrit pas pas les oprations de compilation de la version 9.3.2 de BIND dans Linux. Annexe D, Domaines de niveau suprieur Elle numre les domaines de niveau suprieur actuels (top-level domains) de lespace de noms de lInternet. Annexe E, Configuration dun serveur de noms et dun resolver BIND Elle rsume la syntaxe et la smantique des paramtres utilisables pour congurer un serveur de noms et un resolver.
Notre public
Cet ouvrage est tout dabord destin aux administrateurs systme qui grent une zone et un ou plusieurs serveurs de noms, mais il comporte galement des informations pour les ingnieurs rseaux ou pour les gestionnaires de messagerie. Tous les chapitres ne sont peut-tre pas intressants au mme degr, et vous navez peut-tre pas envie de le parcourir jusquau chapitre 17 pour y trouver ce qui vous concerne. Nous esprons que la description suivante vous aidera mieux vous reprer : Administrateurs systme initialisant leur premire zone Il devraient lire les chapitres 1 et 2 pour la thorie du DNS, le chapitre 3 pour les instructions de dmarrage et le choix judicieux dun nom de domaine, puis les chapitres 4 et 5 pour apprendre congurer une premire zone. Le chapitre 6 explique comment prparer un hte pour utiliser les nouveaux serveurs de noms. Ultrieurement, ils pourraient lire le chapitre 7 qui explique comment tendre leur mise en uvre de zone par le dmarrage de serveurs de noms supplmentaires et par lajout de donnes. Enn, les chapitres 12 14 dcrivent des outils et des techniques dintervention. Administrateurs systme expriments Ils trouveront un intrt au chapitre 6 pour tudier la mise en uvre dun resolver sur des htes diffrents et au chapitre 7 pour les informations sur la maintenance de leur zone. Le chapitre 8 contient des instructions sur la planication de lextension et lvolution dune zone, ce qui est particulirement intressant pour un
[12/01/08]
DNS et Bind
xvii
administrateur de grande zone. Le chapitre 9 explique la liation (cration de sousdomaines), lire absolument pour ceux qui envisagent des migrations de service. Le chapitre 10 dcrit de nombreuses caractristiques avances des serveurs de noms BIND 9.2.3 et 8.4.7. Le chapitre 11 traite de la scurisation des serveurs de noms, ce qui peut tre utile aux administrateurs expriments. Les chapitres 12 14 dcrivent les outils et techniques dintervention, dans lesquels mme les administrateurs expriments pourront trouver une valeur ajoute. Le chapitre 16 peut les aider aborder une vue densemble. Administrateurs systme de rseaux sans connexion directe lInternet Ils peuvent lire le chapitre 5 pour tudier la conguration de la messagerie sur de tels rseaux et les chapitres 11 et 17 pour la mise en uvre dune hirarchie DNS indpendante. Programmeurs Ils peuvent lire les chapitres 1 et 2 pour la thorie du DNS, puis le chapitre 15 pour les dtails sur la programmation avec les procdures de la bibliothque du resolver de BIND. Administrateurs rseau non directement responsables dune zone Ils devraient tout de mme lire les chapitres 1 et 2 pour la thorie du DNS, le chapitre 12 pour apprendre utiliser nslookup et dig, et le chapitre 14 pour les techniques dintervention. Responsables de messagerie (postmasters) Ils liront les chapitres 1 et 2 pour la thorie du DNS, puis le chapitre 5 pour tudier la cohabitation du DNS et du courrier. Le chapitre 12, qui dcrit nslookup et dig, aidera les postmasters rechercher les informations de routage des courriels dans lespace de noms. Utilisateurs seulement curieux Ils peuvent lire les chapitres 1 et 2 pour la thorie du DNS, et bien sr tout ce que bon leur semble ! Rappelons que nous supposons que vous tes familiariss avec ladministration de base dun systme Unix, les rseaux TCP/IP et la programmation de scripts shell et en Perl. Nous ne prsumons aucune autre connaissance spcialise. Lorsque nous aborderons un nouveau terme ou concept, nous ferons de notre mieux pour le dnir ou lexpliquer. Lorsque cela est possible, nous utiliserons des analogies avec le monde Unix (et avec le monde rel) pour faciliter votre comprhension.
ftp://ftp.uu.net/published/oreilly/nutshell/dnsbind/dns.tar.Z ftp://ftp.oreilly.com/published/oreilly/nutshell/dnsbind/
2. Les exemples anglais sont aussi accessibles en ligne sur http://examples.oreilly.com/dns5.
[12/01/08]
DNS et Bind
xviii
Les exemples en franais sont accessibles partir de lURL suivante : http://www.oreilly.fr/catalogue/2841774090.html Extrayez les chiers des archives en excutant :
% zcat dns.tar.Z | tar xf -
Prface
Si zcat nest pas disponible sur votre systme, utilisez sparment les commandes uncompress et tar.
Votre avis
Les questions et commentaires concernant ce livre peuvent tre adresss : ditions OReilly 18, rue Sguier 75006 Paris France OReilly dispose dune page web pour la version originale de ce livre, qui indique des erreurs et donne des informations complmentaires : http://www.oreilly.fr/catalogue/2841774090.html Pour envoyer des commentaires ou poser des questions techniques, crivez : france@oreilly.com Pour des informations concernant les livres, les confrences, les logiciels, les centres de ressources et le rseau OReilly, consultez les sites : http://www.oreilly.fr ou : http://www.oreilly.com
Conventions typographiques
Nous utilisons les polices de caractres et formats suivants pour les commandes, utilitaires et appels au systme Unix :
[12/01/08]
DNS et Bind
xix
une commande devant tre saisie par le super-utilisateur (root) est prcde du signe
dise (#) :
# /usr/sbin/named
les noms de domaine, les noms de chier, les fonctions, les commandes, les rfrences
aux pages du manuel Unix, les spcicits de Windows, les URL, les extraits de programme et les termes conservs en langue anglaise sont afchs en italique lorsquils apparaissent dans un paragraphe.
Ce pictogramme signale une note importante en marge du texte principal.
Citations
Les citations de Lewis Carroll au dbut de chaque chapitre sont extraites des textes lectroniques du Projet Gutenberg, de Alice au pays des merveilles (Millennium Fulcrum dition 2.9) et de Alice travers le miroir (Millennium Fulcrum dition 1.7). Les citations des chapitres 1, 2, 5, 6, 8 et 14 proviennent de Alice au pays des merveilles, et celles des chapitres 3, 4, 7, 9 13 et 15 17 de Alice travers le miroir3.
3. NdT : la version franaise des citations est extraite des traductions de ces romans par Henri Parisot ou Jacques Papy.
[12/01/08]
DNS et Bind
xx
Prface
Remerciements
Les auteurs tiennent remercier Ken Stone, Jerry McCollom, Peter Jeffe, Hal Stern, Christopher Durham, Bill Wisner, Dave Curry, Jeff Okamoto, Brad Knowles, K. Robert Elz et Paul Vixie pour leur contribution inestimable cet ouvrage. Nous aimerions aussi remercier nos relecteurs, Eric Pearce, Jack Repenning, Andrew Cherenson, Dan Trinkle, Bill LeFebvre et John Sechrest, pour leurs critiques et suggestions. Sans leur aide, ce livre ne serait pas ce quil est (il serait plus maigre !). Pour la seconde dition, les auteurs voudraient galement remercier leur quipe de relecteurs de conance : Dave Barr, Nigel Campbell, Bill LeFebvre, Mike Milligan et Dan Trinkle. Pour la troisime dition, les auteurs saluent leur quipe idale de relecteurs : Bob Halley, Barry Margolin et Paul Vixie. Pour la quatrime dition, les auteurs doivent toute leur gratitude Kevin Dunlapp, Edward Lewis et Brian Wellington, leurs relecteurs dlite. Pour la cinquime dition, les auteurs voudraient remercier leur quipe de relecteurs de choc, Joo Damas, Matt Larson et Paul Vixie, ainsi que Silvia Hagen pour son aide de dernire minute sur IPv6. Cricket voudrait remercier tout particulirement son ancien responsable, Rick Nordensten, qui est le parfait modle dun superviseur HP moderne, sous la vigilance duquel la premire version de ce livre a t crite ; ses voisins, qui ont support sa mauvaise humeur durant plusieurs mois ; et bien videmment, sa femme Paige, pour son inlassable patience et pour avoir support le bruit de son clavier pendant son sommeil. Pour la seconde dition, Cricket voudrait ajouter un remerciement pour ses superviseurs prcdents, Regina Kershner et Paul Klouda, pour leur soutien dans son travail avec lInternet. Pour la troisime dition, Cricket exprime toute sa gratitude son collgue, Matt Larson, pour leur travail commun de dveloppement de Acme Razor. Pour la quatrime dition, Cricket remercie ses loyaux amis velus, Dakota et Annie pour leurs bisous et leur compagnie, ainsi que le fabuleux Walter B. pour son attention envers papa. Pour la cinquime dition, il se doit de mentionner un nouveau venu, le fabuleux bb G. Enn, il envoie ses remerciements ses amis et collgues de Infoblox pour leur dur travail, leur aide gnreuse et leur compagnie. Paul aimerait remercier sa femme Katherine pour sa patience, pour de nombreuses sessions de relecture, et pour avoir prouv quelle pouvait coudre un patchwork pendant son temps libre plus rapidement que son poux ne peut crire une moiti de livre.
Le mot du traducteur
Le travail de traduction dun document aussi exhaustif allie plaisir et difcult, on sen doute. Langlais technique a tellement envahi notre jargon franais dinformaticien quil faut souvent peser le pour et le contre avant de pencher pour conserver le terme anglais qui est vraiment entr dans lusage, traduire dans un terme franais, ou crer un nologisme qui, bien qutranger notre dictionnaire, saura tre vecteur optimal de sens.
[12/01/08]
DNS et Bind
Le mot du traducteur
xxi
Tout au long de la traduction, le souci a t double : dune part viter au maximum tous les termes anglais inutiles quand une francisation permet denraciner le sens, et dautre part traquer tous les termes entrs dans lusage et qui, au l du temps, savrent imprcis ou non fonds. Je ne citerai ici quun seul exemple, qui est le plus patent, celui de la traduction de domain name . Jusqu prsent, dans la littrature, domain name a souvent t traduit par nom de domaine alors que cette traduction correspond plutt domain name of a domain en anglais. Il aurait fallu, au dpart, crer un terme original avant que lusage non nuanc du terme nom de domaine ne prenne le dessus. Ainsi ai-je opt, aprs concertation, pour le terme nom qui, chaque fois quil est employ, signie implicitement nom de type domaine , bien que le langage oral utilise parfois des termes tels que nom domainis . Ce dernier prsente linconvnient, pour sa part, de ne pas apparatre dans la formule universellement employe de systme de noms de domaine . Et voil donc vite la fcheuse rencontre dun faux-ami.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
1
Contexte
Le lapin blanc mit ses lunettes. Plaise votre Majest, o dois-je commencer ? demanda-t-il. Commencez au commencement, dit le Roi dun ton grave, et continuez jusqu ce que vous arriviez la fin ; ensuite, arrtez-vous.
Il importe avant toute chose de se pencher sur lhistorique du rseau ARPAnet pour bien comprendre le systme de noms de domaine (Domain Name System ou DNS). Le DNS a t dvelopp an de rpondre certaines difcults du rseau ARPAnet, et lInternet, descendant dARPAnet, en est toujours le principal utilisateur. Si vous utilisez lInternet depuis des annes, vous pouvez probablement vous dispenser de lire ce chapitre. Sinon, nous esprons quil vous donnera sufsamment dlments pour comprendre ce qui a motiv le dveloppement du DNS.
DNS et Bind
Chapitre 1 Contexte
ordinateurs dj relis ARPAnet se connectent aux rseaux locaux (Local Area Network ou LAN) et, par effet de bord, les autres machines des rseaux locaux communiquent galement travers ARPAnet. Le rseau passe alors de quelques machines des dizaines de milliers dhtes. LARPAnet initial devient lpine dorsale dune fdration de rseaux locaux et rgionaux bass sur TCP/IP appele lInternet. , En 1988, le DARPA dcide toutefois darrter lexprience. Il commence par dmanteler ARPAnet. Un nouveau rseau, NSFNET, fond par la National Science Foundation remplace ARPAnet dans son rle dpine dorsale de lInternet. Au printemps 1995, lInternet subit une nouvelle transition lors du remplacement de lpine dorsale gre par lorganisme public NSFNET par un ensemble dpines dorsales commerciales exploites par des oprateurs de tlcommunication, tels que SBC et Sprint, et des acteurs commerciaux expriments dans le travail en rseau tels que MFS et UUNET. Aujourdhui, lInternet relie des millions dhtes sur toute la plante. Lessentiel des ordinateurs y est connect. Certaines des nouvelles pines dorsales commerciales peuvent vhiculer plusieurs gigabits par seconde, soit des dizaines de milliers de fois la bande passante dARPAnet initial. Des dizaines de millions de personnes utilisent quotidiennement le rseau pour communiquer et collaborer.
Internet et internet
Il est maintenant utile de prciser la notion dInternet, par opposition internet en gnral. Lun scrit avec une majuscule, lautre avec une minuscule et cette nuance est signicative. LInternet, avec un I majuscule, se rapporte au rseau qui a vu le jour sous le nom dARPAnet et qui est aujourdhui, en quelque sorte, la fdration de tous les rseaux TCP/IP directement ou indirectement connects des pines dorsales commerciales. En fait, il est aujourdhui compos dun ensemble de rseaux divers : pines dorsales TCP/IP commerciales, rseaux TCP/IP dentreprise ou gouvernementaux et rseaux TCP/IP internationaux, rseaux TCP/IP de nombreux pays, tous interconnects par des routeurs et des circuits numriques haute vitesse. Un internet, avec un i minuscule, est simplement un rseau constitu de multiples petits rseaux utilisant tous les mmes protocoles. Un internet ( i minuscule) nest ni obligatoirement connect lInternet ( I majuscule), ni ne doit obligatoirement utiliser la pile TCP/ IP comme protocole dinterconnexion. Il existe des rseaux dentreprise isols, par exemple. Un intranet ( i minuscule) nest rien dautre quun internet bas sur TCP/IP et utilis , pour promouvoir lutilisation des technologies dveloppes et introduites dans lInternet, dans les rseaux internes des entreprises. loppos, un extranet est un internet bas sur TCP/IP qui relie des entreprises partenaires, ou une entreprise ses distributeurs, fournisseurs et clients.
[12/01/08]
DNS et Bind
Internet et internet
pondance nom-adresse pour chaque hte connect ARPAnet. La table Unix des htes, /etc/hosts, est gnre partir de HOSTS.TXT (le plus souvent par suppression des champs quUnix nutilise pas). HOSTS.TXT est gr par le Network Information Center (NIC) au SRI et distribu partir dune machine unique, SRI-NIC1. Les administrateurs ARPAnet envoient leurs modications par courriel au NIC et rcuprent priodiquement le dernier HOSTS.TXT par FTP depuis SRI-NIC. Les modications sont reportes une ou deux fois par semaine dans le chier HOSTS.TXT. Avec la croissance dARPAnet, cette procdure devient vite inutilisable. La taille de HOSTS.TXT augmente proportionnellement au nombre dhtes connects ARPAnet et le trac gnr par le processus de mise jour augmente encore plus rapidement : un nouvel hte signie non seulement une nouvelle information dans HOSTS.TXT, mais aussi, potentiellement, un nouvel hte susceptible de pouvoir tre mis jour partir de SRI-NIC. LorsquARPAnet volue vers lutilisation des protocoles TCP/IP la taille de la popula, tion connecte explose et une horde de problmes se prsentent avec HOSTS.TXT (sans jeu de mot2) : Trafic et charge Le cot sur SRI-NIC, en terme de charge du rseau et du processeur lors de la diffusion du chier, devient beaucoup trop lev. Conflit de noms Dans HOSTS.TXT, deux htes ne peuvent avoir le mme nom. Pourtant, si le NIC peut attribuer des adresses en garantissant leur unicit, il na en revanche aucune autorit sur les noms dhte. Rien nempche alors quelquun dajouter un hte avec un nom dj attribu et de dstabiliser ainsi lensemble. Lajout dun hte de mme nom quun routeur important de messagerie, par exemple, pourrait interrompre le service dans une grande partie dARPAnet. Cohrence La gestion de la cohrence du chier sur un rseau en expansion devient de plus en plus difcile : le chier HOSTS.TXT volue trop rapidement par rapport son dlai de propagation jusqu la priphrie du grand ARPAnet. Malheureusement, le mcanisme bas sur HOSTS.TXT ne peut suivre correctement lexpansion du rseau. Ironiquement, le succs de lexprience ARPAnet conduit lchec et lobsolescence de son chier HOSTS.TXT. Les autorits dARPAnet lancent alors une rexion sur le dveloppement dun remplaant HOSTS.TXT. Le but est de crer un systme rsolvant les problmes inhrents un chier central de description des htes. Le nouveau systme devrait permettre la gestion locale des donnes tout en les rendant globalement accessibles. La dcentralisation de la gestion liminerait le goulot dtranglement de lhte unique et rduirait le problme du trac. La gestion locale permettrait galement davoir des donnes jour plus facilement. Lespace de noms serait hirarchique. Ceci garantirait lunicit des noms.
1. 2. Le SRI est un institut de recherche, le Stanford Research Institute Menlo Park en Californie. Il mne des recherches dans de nombreux domaines, dont celui des rseaux. NdT : host signie galement horde .
[12/01/08]
DNS et Bind
Chapitre 1 Contexte
Paul Mockapetris, alors en poste lInformation Sciences Institute de lUSC, se voit coner la responsabilit de la conception de larchitecture du nouveau systme. En 1984, il crit les RFC 882 et 883, qui dcrivent le systme de noms de domaine3. Ces deux RFC sont ensuite remplaces par les RFC 1034 et 1035 qui constituent la rfrence actuelle. Les RFC 1034 et 1035 sont aujourdhui compltes par plusieurs autres traitant de scurit, de mise en uvre, de gestion, de mise jour automatique de serveurs de noms, de scurisation des donnes dun domaine, etc.
3.
Les RFC (Request for Comments) sont un lment de la procdure relativement informelle dintroduction de nouveaux standards dans lInternet. Elles sont habituellement diffuses gratuitement et contiennent des descriptions techniques de rfrence, souvent destines aux programmeurs.
[12/01/08]
DNS et Bind
""
com edu gov mil
etc
bin bin
""
com
usr
hp
local
corp
bin
winnie winnie.corp.hp.com
imake
/usr/local/bin/imake
Figure 1-2. Formation des noms dans le DNS et dans un systme de fichiers Unix
Laetitia MAISON <keshin@free.fr>
[12/01/08]
DNS et Bind
Chapitre 1 Contexte
Dans le DNS, chaque domaine peut tre subdivis en plusieurs sous-domaines et chacun deux peut tre gr par un organisme diffrent. Par exemple, EDUCAUSE gre le domaine edu (educational) mais dlgue lautorit sur le sous-domaine berkeley.edu luniversit de Berkeley ( gure 1-3). Cela ressemble au montage de systmes de chiers distants : certains rpertoires du systme de chiers peuvent tre physiquement situs sur une autre machine. Par exemple, ladministrateur de lhte winken est responsable du systme de chiers qui apparat sur la machine locale sous le nom /usr/nfs/winken ( gure 1-3).
gr par lICANN
""
gr par le NSI edu com gov mil
berkeley
bin bin
etc
system
blinken winken
[12/01/08]
DNS et Bind
Une dlgation dautorit de berkeley.edu lUniversit de Berkeley cre une nouvelle zone, gre de manire autonome dans lespace des noms. La zone berkeley.edu devient alors indpendante de edu et contient tous les noms se terminant par berkeley.edu. Autrement dit, la zone edu contient uniquement les noms se terminant par edu et qui ne sont pas dans des zones dlgues comme berkeley.edu. berkeley.edu peut lui-mme tre scind en sous-domaines tels que cs.berkeley.edu. Certains de ces sous-domaines peuvent eux-mmes tre des zones spares, si les administrateurs de berkeley.edu en dlguent la gestion. Si cs.berkeley.edu est une zone spare, la zone berkeley.edu ne contiendra pas de nom se terminant par cs.berkeley.edu ( gure 1-4).
zone edu
edu
zone berkeley.edu
berkeley
stanford
cmu
zone cs.berkeley.edu cs co me
[12/01/08]
DNS et Bind
Chapitre 1 Contexte
ca or
nv
ba
la
mailhub
oakland
rincon
adresse IP 192.2.18.44
""
com
hic haec
hoc
puella
puer
puella
puella.hic.com
puella.hoc.com
[12/01/08]
DNS et Bind
Historique de BIND
Historique de BIND
La premire mise en uvre du systme de noms de domaine sappelle JEEVES et a t crite par Paul Mockapetris lui-mme. BIND (Berkeley Internet Name Domain) est une version postrieure, crite par Kevin Dunlap pour Unix BSD 4.3 de Berkeley. BIND est aujourdhui maintenu par lInternet Systems Consortium4. BIND est limplmentation que nous allons dtailler dans cet ouvrage et elle est de loin la mise en uvre du DNS la plus rpandue aujourdhui. Il a t port sur la plupart des systmes Unix et fait partie intgrante de la majorit des offres commerciales dUnix. BIND a mme t port sur Windows NT, Windows 2000 et Windows Server 2003 de Microsoft.
Alternative au DNS ?
Malgr lutilit du systme de noms de domaine, il y a des situations o il nest pas intressant de lutiliser. Il existe dautres systmes que le DNS, certains dentre eux pouvant tre livrs en standard avec un systme dexploitation. De plus, il arrive que la surcharge lie la gestion du domaine et ses serveurs de noms, en masque les bnces. En revanche, pour certaines situations, il ny a pas dautre choix que celui du DNS. Voici quelques lments pour vous guider dans une dcision : Si vous tes connect lInternet... ... DNS est un must. Considrez le DNS comme un sauf-conduit travers lInternet : peu prs tous les services en rseau de lInternet utilisent le DNS, en particulier le web, le courrier lectronique, laccs par terminal distant et le transfert de chiers. Pourtant, cela ne signie pas que vous deviez initialiser et exploiter une zone par vous-mme et pour vous-mme. Si vous navez hrit que de quelques machines, vous pouvez rejoindre une zone existante (voir le Chapitre 3) ou trouver quelquun qui grera une zone pour vous. Si vous tes client dun fournisseur daccs pour votre connexion lInternet, demandez-lui sil peut grer une zone pour vous. Mme si vous ntes pas encore client, des entreprises sont prtes vous rendre ce service, commercialement. Si vous avez un peu plus de machines, vous voudrez probablement avoir votre propre zone et, pour avoir un contrle direct sur votre domaine et vos serveurs de noms, vous aurez la grer vous-mme. Ce livre est pour vous ! Si vous avez votre propre internet bas sur TCP/IP... ... vous avez probablement besoin du DNS. Par internet, nous ne dsignons pas un rseau Ethernet unique de stations de travail utilisant TCP/IP (lisez la section suivante si vous le pensiez), mais un rseau complexe de rseaux. Peut-tre mme avez-vous plusieurs dizaines de segments Ethernet connects par des routeurs, par exemple.
4.
Pour plus dinformation sur lInternet Systems Consortium et ses travaux sur BIND, on peut consulter http://www.isc.org/sw/bind/.
[12/01/08]
DNS et Bind
10
Chapitre 1 Contexte
Si vous avez un rseau homogne et que vos htes nont pas besoin du DNS (sils ne fonctionnent pas en TCP/IP par exemple), alors vous pouvez vous en passer. Mais si , vous avez un parc htrogne, tout particulirement des versions diffrentes dUnix, vous aurez besoin du DNS. Il simpliera la distribution des informations et vous dbarrassera de toutes les procdures de distribution de tables dhtes que vous auriez pu concocter.
Si vous avez votre propre rseau local ou rseau de site... ... et que ce rseau nest pas connect un rseau fdrateur, vous pouvez probablement vous passer du DNS. Vous pouvez toutefois envisager dutiliser le service de noms Internet de Windows (Windows Internet Name Service ou WINS) de Microsoft, des tables dhtes ou le service dinformations en rseau (Network Information Service ou NIS) de Sun. Par contre, si vous avez besoin dune gestion distribue ou que vous rencontrez des problmes de cohrence des donnes dans votre rseau, le DNS est peut-tre fait pour vous. De plus, si vous prvoyez de connecter prochainement votre rseau un autre (rseau dentreprise ou lInternet), il peut tre judicieux de dmarrer un domaine ds prsent.
[12/01/08]
DNS et Bind
2
Principes du DNS
...et, se disait Alice, quoi peut bien servir un livre o il ny a ni images ni conversations ?
Le systme de noms de domaine (Domain Name System) est avant tout une base de donnes dinformations sur les htes. On y trouve de nombreux renseignements : des noms dhtes utiles, des serveurs de noms, un espace de noms (une notion qui sera aborde plus loin). Ne perdons pas de vue, cependant, que le service du DNS fournit surtout des informations sur les htes dun internet. Nous avons dj expos certains des aspects importants du DNS, dont larchitecture client/serveur et la structure de la base de donnes, mais nous ne sommes pas beaucoup entrs dans les dtails et navons pas encore expliqu son fonctionnement. Dans ce chapitre, nous expliquerons et illustrerons donc le fonctionnement du DNS. Nous dnirons les termes indispensables pour la suite de la lecture de louvrage (et pour une discussion intelligible entre spcialistes). Tout dabord, intressons-nous aux concepts introduits dans le chapitre prcdent. Nous essaierons dy ajouter le plus de dtails possibles an de les rendre attrayants.
Espace de noms
La base de donnes distribue du DNS est indexe par les noms. Chaque nom peut tre considr comme un simple chemin dans un grand arbre invers, ce dernier tant appel lespace de noms. La structure hirarchique de cet arbre ( gure 2-1) est similaire celle dun systme de chiers Unix. Larbre a une seule racine, situe en haut1. Dans un systme de chiers Unix, ce sommet est appel rpertoire-racine et est reprsent par une barre oblique / . Il est appel simplement racine (root) dans le cas du DNS. Comme pour un systme de chiers Unix, larbre du DNS peut rattacher des chemins, quel que soit leur nombre, chaque point dintersection, appel nud (node). La
1.
[12/01/08]
DNS et Bind
12
profondeur de larbre est limite 127 niveaux (limite quil nest pas souhaitable datteindre !).
""
arpa
com
edu
gov
mil
org
Noms absolus
Chaque nud de larbre a un nom individuel (sans point . ) dune longueur maximale de 63 caractres. Le nom de longueur nulle est rserv la racine. Le nom complet de chaque nud de larbre est la succession des noms individuels sur le chemin qui va du nud la racine. Les noms complets sont toujours lus du nud vers la racine (lecture ascendante), avec ajout dun point sparateur entre chaque nom individuel. Si le nom du nud-racine apparat dans un nom de nud, le nom du nud semble se terminer par un point, comme dans www.oreilly.com. ; il se termine en fait par un point (le sparateur), suivi du nom de longueur nulle. Lorsque le nom du nud-racine apparat isolment, il est reprsent par un point unique . . Par consquent, certains logiciels considrent quun point terminal dans un nom indique un nom absolu. Un nom absolu est dcrit relativement la racine et indique sans ambigut la position dun nud dans la hirarchie. Un nom absolu est aussi appel nom totalement quali (Fully Qualied Domain Name ou FQDN). Les noms sans point terminal sont parfois interprts relativement un domaine, autre que la racine, tout comme les noms de rpertoire sans barre oblique initiale sont interprts relativement au rpertoire courant. Le DNS impose que les nuds-enfants dun mme parent aient des noms diffrents. Cette rgle garantit quun nom dsigne un nud unique de larbre. Ce nest donc pas une limitation, car les noms ne doivent tre uniques quimmdiatement en dessous dun mme nud et non pas par rapport tous les nuds de larbre. La mme rgle sapplique au systme de chiers Unix : vous ne pouvez pas nommer deux objets dun mme sous-rpertoire de la mme manire. Tout comme vous ne pouvez pas avoir deux nuds hobbes.pa.ca.us dans le mme espace de noms, vous ne pouvez pas non plus avoir
[12/01/08]
DNS et Bind
Espace de noms
13
deux rpertoires /usr/bin dans le mme systme de chiers ( gure 2-2). Par contre, vous pouvez avoir un nud hobbes.pa.ca.us et un nud hobbes.lg.ca.us, de la mme manire quun rpertoire /bin et un rpertoire /usr/bin.
""
us
ca
il
pa
mpk
lg hobbes.lg.ca.us
hobbes
hobbes
usr
bin
etc /bin
system
bin
bin
Figure 2-2. Garantie dunicit de noms dans le DNS et de chemins dans Unix
Domaines
Un domaine est tout simplement un sous-arbre de lespace de noms. Le nom dun domaine est celui du nud au sommet du domaine. Ainsi, par exemple, le sommet du domaine purdue.edu est un nud nomm purdue.edu ( gure 2-3). De la mme manire, dans un systme de chiers, vous tes en droit dattendre un nud appel /usr au sommet du rpertoire /usr ( gure 2-4). Tout nom du sous-arbre est considr comme faisant partie du domaine. Un nom peut apparatre dans plusieurs sous-arbres ; il peut donc apparatre galement dans plusieurs domaines. Par exemple, le nom pa.ca.us est une partie du domaine ca.us mais aussi du domaine us ( gure 2-5).
[12/01/08]
DNS et Bind
14
""
edu
com
org
nud purdue.edu
purdue
domaine purdue.edu
bin
etc
rpertoire /usr
net us
mil domaine us
ny
domaine ca.us
DNS et Bind
Espace de noms
15
Un domaine est donc simplement un sous-arbre de lespace de noms et il est constitu de noms et de domaines. Il reste maintenant y placer les htes, car les domaines sont aussi des groupes dhtes. Les htes sont quant eux reprsents par des noms. Souvenons-nous que les noms sont simplement des index dans la base de donnes du DNS. Les htes sont les noms qui dsignent des informations concernant un hte individuel et un domaine contient tous les htes dont les noms sont dans le domaine. Les htes sont rpartis de manire logique, souvent gographique ou par appartenance une entreprise, mais pas ncessairement par rseau, adresse ou type de matriel. Vous pouvez avoir dix htes diffrents, chacun deux sur un rseau diffrent et ventuellement dans des pays diffrents, mais appartenant pourtant au mme domaine. Attention, il ne faut pas confondre les domaines DNS avec les domaine NIS (Network Information Service). Un domaine NIS dsigne aussi un groupe dhtes, la structure des noms est similaire dans les deux cas mais les concepts sont diffrents. NIS utilise des noms hirarchiques mais la similitude sarrte l : les htes dun mme domaine NIS partagent des donnes concernant les htes et les utilisateurs, mais ils ne peuvent pas naviguer dans lespace de noms NIS pour rechercher des informations en provenance des autres domaines NIS. De la mme manire, les domaines NT, qui fournissent des services de gestion de comptes et de scurit, nont aucun rapport avec les domaines du DNS. Par contre, les domaines Active Directory sont intimement lis aux domaines DNS. Nous parlerons des relations entre DNS et Active Directory au Chapitre 17. Les noms aux extrmits infrieures de larbre (les feuilles) dsignent en gnral des htes individuels et peuvent donner accs des adresses de machines, des informations sur le matriel ou des prcisions sur le routage de la messagerie. Les noms lintrieur de larbre peuvent dsigner un hte et peuvent donner accs des informations concernant le domaine, indiffremment. Ces deux cas ne sont pas exclusifs lun de lautre : un nom intrieur peut reprsenter simultanment le domaine et un hte dans le rseau. Par exemple, hp.com est la fois le nom du domaine de la socit HewlettPackard et le nom dun hte qui hberge le serveur web principal de HP . Le type dinformation renvoye lors de lutilisation dun nom, dpend du contexte dans lequel vous lutilisez. Lexpdition dun courrier lectronique quelquun dans hp.com doit produire le renvoi dune information de routage de courrier, alors quune connexion ssh doit provoquer la recherche dune information sur un hte (par exemple, la gure 2-6, ladresse IP de hp.com). Un domaine peut avoir plusieurs sous-arbres, appels sous-domaines2. Un moyen simple pour dterminer si un domaine est sous-domaine dun autre domaine, consiste comparer leurs noms. Le nom dun sous-domaine se termine par le nom de son parent. Par exemple, le domaine la.tyrell.com doit tre un sous-domaine de tyrell.com car la.tyrell.com se termine par tyrell.com. Il est aussi sous-domaine de com.
2.
Les termes domaine et sous-domaine sont souvent utiliss sans distinction ou presque, dans les documentations relatives au DNS. Dans cet ouvrage, nous utilisons le terme de sous-domaine dans le sens relatif : un domaine A est un sous-domaine dun domaine B si la racine de A se trouve dans le domaine B.
[12/01/08]
DNS et Bind
16
""
corp
gr
sdd
Figure 2-6. Un nud interne contenant la fois des donne sur un hte et sur un domaine
Plutt que dtre classs relativement un domaine, les sous-domaines sont souvent classs par niveau (level). Dans les listes de diffusion et les forums, les termes domaine de niveau suprieur (top-level domain, TLD) ou domaine de second niveau (second-level domain) sont parfois utiliss pour marquer une hirarchie de valeur. Ils font simplement rfrence la position du domaine dans lespace de noms :
un domaine de niveau suprieur est un enfant direct de la racine ; un domaine de premier niveau ( rst-level domain) est un enfant direct de la racine
(cest un domaine de niveau suprieur) ;
Enregistrements de ressource
Les donnes associes aux noms sont contenues dans des enregistrements de ressource (resource records ou RR). Ces enregistrements sont diviss en classes, chacune delles se rapportant un type de rseau ou de logiciel. ce jour, il existe des classes pour les internets TCP/IP pour les rseaux bass sur les protocoles de Chaosnet (un ancien , rseau dont lhistoire est signicative) et pour les rseaux qui utilisent le logiciel Hesiod. La classe des internets TCP/IP est de loin la plus rpandue (nous ne savons pas si quelquun utilise encore la classe Chaosnet et lutilisation de la classe Hesiod est essentiellement conne au MIT). Dans cet ouvrage, nous nous consacrerons donc surtout la classe des internets. lintrieur dune classe, les enregistrements sont rpartis en types qui correspondent aux diffrentes catgories de donnes pouvant tre stockes dans lespace de noms. Chaque classe denregistrement peut avoir ses propres types, bien que certains types existent dans plusieurs classes. En effet, quasiment chaque classe a un type adresse. Chaque type denregistrement dans une classe donne a une syntaxe particulire que tous les enregistrements de ressource de cette classe et de ce type doivent respecter. Si ces informations vous paraissent incompltes, ne vous inquitez pas ; nous ne manquerons pas de dcrire en dtail les enregistrements pour la classe des internets. Les enregistrements les plus courants sont dcrits au Chapitre 4 et une liste dtaille est incluse lAnnexe A.
[12/01/08]
DNS et Bind
17
[12/01/08]
DNS et Bind
18
int
est rserv aux organismes internationaux, tels que lOTAN (nato.int). Un autre domaine de niveau suprieur, appel arpa, a t utilis pendant la priode o ARPAnet passait de lutilisation dune table dhtes lutilisation du DNS. Tous les htes du rseau ARPAnet initial avaient un nom dans le domaine arpa et restaient donc faciles trouver. Par la suite, les htes furent dplacs vers divers sous-domaines. Toutefois, le domaine arpa est toujours utilis dans un contexte prcis, dcrit plus loin. On peut noter un certain dsquilibre dans lorientation gnrale, qui correspond des organisations amricaines. Cela est comprhensible dans la mesure o lInternet est le successeur dARPAnet, projet de recherche amricain. Personne navait prvu le succs dARPAnet, ni mme quil pourrait avoir une porte internationale sous le nom dInternet. Aujourdhui, les domaines initiaux sont appels domaines gnriques de niveau suprieur (generic top-level domains ou gTLD). Le terme gnrique doit tre oppos aux domaines nationaux de niveau suprieur, particuliers chaque pays.
3.
Sauf pour la Grande Bretagne. Daprs lISO 3166 et la tradition dans lInternet, le nom du domaine de niveau suprieur pour la Grande Bretagne devrait tre gb. Pourtant, de nombreux organismes de Grande Bretagne ou dIrlande du Nord (Royaume Uni ou United Kingdom) utilisent le nom uk.
[12/01/08]
DNS et Bind
19
Plus rcemment, au dbut de 2005, lICANN a approuv deux nouveaux TLD sponsoriss, jobs, pour la gestion des ressources humaines, et travel, pour les professionnels du voyage. Plusieurs autres TLD sponsoriss sont en cours dvaluation, dont cat, pour la communaut linguistique et culturelle catalane, mobi, pour les mobiles, et post, pour la communaut de la poste. Jusqu prsent, seul mobi a t dlgu partir de la racine. Vous pouvez en savoir plus sur le site de lICANN http://www.icann.org.
Quelques prcisions
lintrieur de ces domaines de niveau suprieur, les traditions varient ainsi que leur porte. Certains des domaines de type ISO 3166 suivent formellement le dcoupage amricain initial. Par exemple, le domaine pour lAustralie, au, a des sous-domaines comme edu.au et com.au. Dautres domaines de niveau suprieur ISO 3166 suivent lexemple du domaine uk et ont des sous-domaines comme co.uk pour les entreprises (corporations) ou ac.uk pour la communaut acadmique. Cependant, dans la plupart des cas, les domaines gographiques de niveau suprieur ont une structure smantique organise. Cela ntait pas vrai pour le domaine us lorigine. ses dbuts, ce domaine avait cinquante sous-domaines, correspondant aux cinquante tats amricains4. Chacun deux tait nomm selon labrviation standard sur deux lettres pour les tats, celle normalise par le service postal amricain. lintrieur de chaque tat, le dcoupage tait encore essentiellement gographique, la plupart des sous-domaines correspondant des villes. lintrieur des villes, les noms correspondaient habituellement des htes individuels. Tout comme de nombreuses rgles despaces de noms, cette structure a t abandonne lors de la reprise de la gestion de us par Neustar en 2002. Dsormais, us, tout comme com et net, est ouvert tous.
4.
En ralit, il y a quelques domaines supplmentaires sous us : un pour Washington, un pour Guam, etc.
[12/01/08]
DNS et Bind
20
Dlgation dautorit
Souvenons-nous que lun des principaux buts du systme de noms de domaine est de dcentraliser sa propre administration. Cela est possible par la dlgation. La dlgation de domaine ressemble beaucoup la dlgation de tches au travail. Un dirigeant peut scinder un grand projet en petites tches et dlguer la responsabilit de chacune delles diffrentes personnes. De la mme manire, un organisme grant un domaine peut le diviser en sousdomaines. Chacun deux peut tre dlgu un autre organisme, qui devient responsable de la gestion de toutes les informations de ce sous-domaine. Cet organisme peut modier librement les donnes et mme dcouper son sous-domaine en plusieurs sousdomaines, puis les dlguer. Le domaine-parent contient seulement des pointeurs vers les origines des donnes du sous-domaine et il peut indiquer ces pointeurs ceux qui
[12/01/08]
DNS et Bind
21
les demandent. Par exemple, le domaine stanford.edu est dlgu aux personnes de Stanford qui exploitent le rseau de luniversit ( gure 2-7).
""
edu
org
mil
mit stanford
cmu
[12/01/08]
DNS et Bind
22
""
com
org
berkeley nwu
purdue
zone berkeley.edu
zone purdue.edu
domaine edu
edu
zone edu
= dlgation
cc
ce
cs
me
zone cc.berkeley.edu
zone me.berkeley.edu
DNS et Bind
23
Une zone contient tous les noms contenus dans le domaine de mme nom, excepts les noms qui sont dans des sous-domaines dlgus. Par exemple, le domaine de niveau suprieur ca (pour le Canada) peut avoir les sous-domaines ab.ca, on.ca et qc.ca, respectivement pour les provinces de lAlberta, de lOntario et du Qubec. Lautorit sur les sous-domaines ab.ca, on.ca et qc.ca peut tre dlgue des serveurs de noms dans chaque province. Le domaine ca contient toutes les donnes dans ca plus toutes celles de ab.ca, on.ca et qc.ca. Mais la zone ca ne contient que les donnes dans ca ( gure 2-10), qui sont a priori essentiellement des pointeurs vers les sous-domaines dlgus. De la mme manire, ab.ca, on.ca et qc.ca sont des zones distinctes de la zone ca.
"" zone ca ca zone ab.ca ab on qc fr org zone qc.ca
5.
Imaginez ce qui se passerait si un serveur de noms de la racine chargeait les informations du domaine plutt que celles de la zone : il chargerait la totalit de lespace de noms !
[12/01/08]
DNS et Bind
24
zone ca
ca
bc
ab
sk
on
qc
Dlgation un sous-domaine
Mme si, pour le moment, vous navez pas besoin de dlguer une partie de votre domaine, il est bon de comprendre le fonctionnement de la dlgation. En thorie, elle implique le transfert de la responsabilit dune partie de votre domaine un autre organisme. Dans les faits, il sagit de transfrer lautorit sur vos diffrents sous-domaines vers dautres serveurs de noms (notez que nous crivons serveurs et non pas juste serveur ). Les donnes de votre domaine contiendront des pointeurs vers les serveurs de noms qui font autorit sur le sous-domaine, au lieu dinclure les informations concernant le sousdomaine que vous avez dlgu. Dsormais, si lun de vos serveurs de noms reoit une question concernant les donnes du sous-domaine, il rpondra en renvoyant la liste des serveurs de noms contacter.
DNS et Bind
Resolvers
25
Les serveurs primaire et secondaire font tous deux autorit sur la zone. Bien que leur diffrence de nom puisse le suggrer, les esclaves ne sont pas des serveurs de seconde classe. Le DNS dnit ces deux types de serveurs pour faciliter la gestion. Une fois que vous avez cr les donnes de votre zone et initialis un serveur primaire, vous navez pas besoin de copier ces donnes dhte en hte pour crer de nouveaux serveurs pour la zone. Il suft dinitialiser les serveurs-esclaves qui chargent leurs donnes partir du serveur-matre primaire de la zone. Ils ne transfreront les donnes de la zone quen cas de besoin. Les serveurs-esclaves ont un rle important car il est bon dinitialiser plus dun serveur faisant autorit sur une zone, an dassurer la redondance, dabsorber les problmes de charge et doffrir un serveur physiquement proche tous les htes dune zone. Les serveurs-esclaves rendent tout ceci possible et grable. Il est insufsant de caractriser un serveur particulier par son type, serveur-matre primaire ou serveur-esclave. En effet, nous avons indiqu prcdemment quun serveur peut simultanment faire autorit sur plusieurs zones. Un serveur peut trs bien tre matre primaire pour une zone et esclave pour une autre. Toutefois, la plupart des serveurs sont, soit primaires, soit esclaves pour la plupart des zones quils chargent. Lorsque nous qualierons un serveur de serveur primaire ou desclave, nous signierons implicitement quil est serveur primaire ou esclave pour la plupart des zones sur lesquelles il fait autorit.
Fichiers de zone
Les chiers partir desquels les serveurs-matres primaires chargent leur zone sont souvent appels les chiers de donnes de la zone. Nous y ferons souvent rfrence par les expressions de chiers de donnes, chiers de zone ou base de donnes. Les serveursesclaves peuvent aussi charger leurs donnes partir de chiers. En effet, les esclaves sont en gnral rgls pour sauvegarder les donnes dune zone quils ont transfre partir dun serveur, vers un chier de donnes. Si lesclave tait ultrieurement arrt puis redmarr, il lirait tout dabord le chier de sauvegarde puis vrierait que les donnes sont toujours valables. Ces deux actions permettent, dune part dviter un transfert de zone si les donnes nont pas volu, et dautre part, de dmarrer mme si le matre est arrt. Les chiers de donnes contiennent des enregistrements de ressource qui dcrivent la zone, cest--dire tous les htes dune zone ainsi que les dlgations de sous-domaine. BIND autorise aussi des directives spciales dinclusion du contenu dun chier dans un chier de donnes, un peu comme la directive #include du langage C.
Resolvers
Les resolvers sont les clients des serveurs de noms. Les programmes qui ont besoin dune information venant de lespace de noms utilisent le resolver. Le resolver gre :
linterrogation dun serveur de noms ; linterprtation des rponses (qui sont, soit un enregistrement de ressources, soit un
message derreur) ;
[12/01/08]
DNS et Bind
26
Dans BIND, le resolver est simplement un jeu de procdures lies aux programmes comme ssh ou ftp. Ce nest pas un processus spar. Le resolver compte presque entirement sur le serveur de noms interrog : il gnre une requte, lenvoie, attend une rponse, renvoie la requte sil ne reoit pas de rponse et cest tout. Lessentiel du travail (trouver une rponse la requte) se fait sur le serveur. Le document de spcication du DNS appelle ce type de resolver, un resolver lmentaire (stub resolver). Dautres mises en uvre du DNS peuvent avoir des resolvers plus sophistiqus qui peuvent, par exemple, suivre des rfrences pour localiser les serveurs de noms faisant autorit sur une zone spcique.
Rsolution de noms
Les serveurs de noms sont spcialiss dans la recherche de donnes lintrieur de lespace de noms, ce qui est ncessaire tant donnes les fonctions limites de certains resolvers. Ils peuvent non seulement renvoyer des informations concernant des zones sur lesquelles ils font autorit, mais aussi rechercher dans lespace de noms des donnes sur lesquelles ils ne font pas autorit. Ce processus sappelle la rsolution de noms ou simplement la rsolution. Puisque lespace de noms est structur comme un arbre invers, un serveur na besoin que de peu dlments pour trouver un chemin vers un point quelconque de larbre : il lui faut connatre les noms et adresses des serveurs de noms de la racine. Un serveur de noms peut demander un serveur de la racine tout nom de lespace de noms et le serveur de la racine effectuera alors sa propre recherche.
[12/01/08]
DNS et Bind
Rsolution de noms
27
ciale de lInternet, un autre sur le rseau scientique de la NASA, deux en Europe, un au Japon. tant donne leur position centrale et malgr leur nombre, les serveurs de la racine sont en permanence occups et le trac vers chacun deux est trs dense. Des mesures rcentes ont montr que certains serveurs recevaient plusieurs milliers de requtes par seconde. Malgr cette charge importante sur les serveurs de la racine, la rsolution de noms dans lInternet fonctionne bien. La gure 2-12 montre le processus de rsolution de ladresse dun hte rel dun domaine rel, en particulier les changes dinformations pour le parcours de lespace de noms.
serveur de ""
serveur de au
au
nz
sg
requte de rsolution
rponse
serveur de gov.au
gov
edu
serveur de gbrmpa.gov.au
sa
ips
gbrmpa
resolver
[12/01/08]
DNS et Bind
28
Mode rcursif
On peut remarquer une norme diffrence entre les tches des diffrents serveurs de lexemple prcdent. Quatre des serveurs se contentent de renvoyer la meilleure rponse dont ils disposent dj, le plus souvent des rfrences dautres serveurs. Ils nenvoient pas eux-mmes de requtes pour trouver la rponse complte la question. Par contre, le cinquime serveur, interrog directement par le resolver, effectue des requtes successives tant quil na pas reu la rponse complte. Pourquoi le serveur de noms local na-t-il pas simplement renvoy le resolver vers un autre serveur de noms ? Parce quun resolver lmentaire ne dispose pas de lintelligence pour suivre une rfrence. Et comment le serveur local sait-il quil ne doit pas rpondre par une rfrence ? Parce que le resolver a gnr une requte rcursive. Il existe deux sortes de requtes : rcursives ou itratives (ou non rcursives). Les requtes rcursives induisent lessentiel de la charge sur un serveur de noms prcis. Le mode rcursif, ou la rsolution rcursive, est le nom du processus de rsolution excut par un serveur de noms lorsquil reoit une requte rcursive. De la mme manire quun algorithme rcursif en programmation, le serveur de noms rpte le mme processus de base (linterrogation dun serveur distant et lutilisation des rfrences dautres serveurs de noms) jusqu ce quil obtienne une rponse. De mme, le mode itratif, ou rsolution itrative, est le nom du processus de rsolution excut par un serveur de noms lorsquil reoit une requte itrative. En mode rcursif, un resolver envoie une requte rcursive un serveur de noms pour demander des informations propos dun nom particulier. Le serveur de noms interrog est alors oblig de rpondre compltement la question pose ou de renvoyer une erreur indiquant que la donne du type requis ou le nom demand nexiste pas. Le serveur de noms ne peut pas simplement renvoyer le demandeur vers un autre serveur de noms, en raison du mode rcursif de la demande. Si le serveur interrog ne fait pas autorit sur les informations demandes, il doit poser la question un autre serveur. Il pourrait lui envoyer une requte rcursive, lobligeant son tour trouver la rponse et la lui renvoyer. Il pourrait galement lui envoyer une requte itrative et lui donner la possibilit de renvoyer des rfrences dautres serveurs hirarchiquement proches du nom recherch. Les mises en uvres actuelles sont par dfaut courtoises et utilisent la seconde mthode, celle qui consiste suivre successivement les diffrentes rfrences renvoyes jusqu ce quune rponse soit trouve7. Un serveur de noms qui reoit une requte rcursive laquelle il ne peut pas lui-mme rpondre interrogera avec la mme requte le serveur de noms quil sait tre hirarchiquement le plus proche du nom recherch. Ainsi, si le serveur de noms reoit une requte rcursive pour ladresse correspondant au nom girigiri.gbrmpa.gov.au, il regardera tout dabord sil connat les serveurs de noms faisant autorit sur girigiri.gbrmpa.gov.au. Si cest le cas, il enverra la requte lun deux. Sinon, il regardera sil connat les serveurs de noms de gbrmpa.gov.au, puis de gov.au et enn de au. Dans le pire
7.
Sauf dans le cas o un serveur de noms est rgl pour rediriger toutes les requtes non rsolues vers un serveur de noms dtermin, appel un forwarder (voir le Chapitre 10).
[12/01/08]
DNS et Bind
Rsolution de noms
29
des cas, la recherche ira jusqu la zone racine, puisque chaque serveur de noms connat les noms et les adresses des serveurs de la racine. Lutilisation du serveur hirarchiquement le plus proche garantit que le processus de rsolution est aussi court que possible. Un serveur de berkeley.edu recevant une requte rcursive pour ladresse de waxwing.ce.berkeley.edu na pas besoin de consulter un serveur de la racine ; il lui suft de suivre les informations de dlgation pour atteindre les serveurs de ce.berkeley.edu. De mme, un serveur qui viendrait juste de rechercher un nom dans ce.berkeley.edu na pas besoin de redmarrer une rsolution la racine pour rechercher un nouveau nom dans ce.berkeley.edu (ou berkeley.edu) ; nous dvelopperons ce sujet la section Mmoire cache, page 32. Un serveur de noms recevant une requte rcursive retransmet la mme requte que celle reue du resolver, par exemple celle pour ladresse de waxwing.ce.berkeley.edu. Il nenvoie jamais de requtes simplies pour requrir les adresses des serveurs de ce.berkeley.edu ou de berkeley.edu, bien que cette information existe dans lespace de noms. En effet, lenvoi de requtes simplies pourrait poser des problmes : il nexiste peut-tre pas de serveur pour ce.berkeley.edu (qui pourrait tre une partie de la zone berkeley.edu). Il se pourrait aussi quun serveur de edu ou de berkeley.edu connaisse dj ladresse de waxwing.ce.berkeley.edu. Une requte simplie concernant berkeley.edu ou ce.berkeley.edu ne prendrait alors pas en compte cette dernire information.
Mode itratif
Une rsolution itrative ne demande pas autant de travail au serveur interrog quune rsolution rcursive. En mode itratif, un serveur rpond du mieux possible au demandeur avec ce quil sait dj. Il ne gnre aucune nouvelle requte. Le serveur interrog recherche la solution dans ses donnes locales (y compris la mmoire cache, dont nous parlerons prochainement). Sil ny trouve pas la rponse, il cherche les nom et adresse des serveurs de noms les plus proches du nom recherch dans ses donnes locales, et renvoie ces informations pour aider le demandeur poursuivre sa recherche. Notons que la rponse contient la liste de tous les serveurs de noms quil connat ; ce sera au demandeur den choisir un pour lancer la requte suivante.
[12/01/08]
DNS et Bind
30
que BIND interrogera tous les serveurs de noms faisant autorit sur une zone, dans un ordre alatoire, avant den lire un. Pour rsumer, cet algorithme simple permet BIND de se verrouiller rapidement sur le serveur de noms le mieux plac pour une zone, sans gnrer de charge supplmentaire lie un mcanisme de mesure sophistiqu.
Processus complet
En clair, le processus de rsolution complet a lallure indique en gure 2-13.
Serveurs de noms 1 Le serveur de noms A reoit une requte rcursive en provenance du resolver. 2 A envoie une requte itrative B. 3 B renseigne A au sujet dautres serveurs de noms, dont C. 4 A envoie une requte itrative C. 5 C renseigne A au sujet dautres serveurs de noms, dont D. 6 A envoie une requute itrative D. 7 D rpond. 8 A envoie la rponse au resolver.
8
rponse
B
3
renseignement
C
5
renseignement
2
requte
requte
4 6 requte 7
rponse
requte
resolver
[12/01/08]
DNS et Bind
Rsolution de noms
31
tions des chiers .rhosts et hosts.equiv. Lorsquon utilise des tables locales dhtes, la correspondance est aise : une simple recherche squentielle dans un chier suft. Par contre, avec le DNS, cette correspondance nest pas aussi simple. Les donnes de lespace de noms, dont les adresses, sont indexes par des noms. tant donn un nom, la recherche dune adresse est relativement facile. Par contre, la recherche du nom correspondant une adresse spcique ncessiterait, de prime abord, un parcours exhaustif de toutes les donnes lies chaque domaine de larbre. En ralit, il existe une meilleure solution. Puisquil est facile de trouver des informations une fois quon dispose du nom qui les rfrence, pourquoi ne pas crer une section de lespace de noms qui utiliserait des adresses comme noms dindex ? Dans lespace de noms de lInternet, cette section de lespace de noms est le domaine in-addr.arpa. Les nuds du domaine in-addr.arpa sont composs des numros de la reprsentation en dcimal point des adresses IP (cette reprsentation, la plus communment utilise, montre une adresse IP sur 32 bits sous la forme de quatre nombres allant de 0 255, spars par des points). Le domaine in-addr.arpa, par exemple, pourrait avoir jusqu 256 sous-domaines, chacun deux correspondant chaque valeur possible du premier octet dune adresse IP Chacun de ces sous-domaines pourrait avoir son tour 256 sous. domaines correspondant aux valeurs possibles du second octet. Enn, au quatrime niveau, des enregistrements de ressource attachs au quatrime octet donnent le nom complet de lhte ou du rseau correspondant cette adresse IP Lensemble forme un . norme domaine : in-addr.arpa ( gure 2-14) est sufsamment spacieux pour contenir chaque adresse de lInternet.
"" adresse IP 15.16.192.152 arpa in-addr
255
15
255
16
255
192
255
[12/01/08]
DNS et Bind
32
Notons que lors de la lecture du nom, ladresse IP apparat inverse car le nom est nonc de la feuille vers la racine. Ainsi, si ladresse IP de lhte winnie.corp.hp.com est 15.16.192.152, le sous-domaine correspondant dans in-addr.arpa est 152.192.16.15.inaddr.arpa, qui renvoie au nom quali winnie.corp.hp.com. Les adresses IP auraient pu tre reprsentes en sens inverse dans lespace de noms, avec le premier octet de ladresse IP au pied du domaine in-addr.arpa. De cette manire, les adresses IP auraient t lues facilement dans les noms. Quoiquil en soit, les adresses IP sont hirarchiques, tout comme les noms : les administrateurs peuvent subdiviser leur espace dadresses en sous-rseaux et dlguer la numrotation. La diffrence entre les adresses IP et les noms est que les adresses sont de plus en plus spciques de gauche droite, alors que les noms le sont de moins en moins ( gure 2-15).
plus spcifique
moins spcifique
Mmoire cache
Le processus complet de rsolution pourrait paratre tortueux et obscur aux utilisateurs habitus une simple recherche dans un chier dhtes, mais il est habituellement trs efcace. Une des caractristiques qui lacclre notablement est lutilisation de la mmoire cache. Un serveur de noms effectuant une recherche rcursive peut avoir envoyer de nombreuses requtes pour trouver la rponse. Au cours de ses recherches, il apprend beaucoup sur lespace de noms. chaque fois quil se rfre une nouvelle liste de serveurs de noms, il apprend que ces serveurs font autorit sur une certaine zone et il retient leur adresse. la n du processus de rsolution, lorsquil obtient enn linformation recherche, il peut mmoriser toutes ces donnes dans une mmoire cache pour une utilisation ultrieure. Les serveurs de noms BIND mettent mme en uvre un cache ngatif : si un serveur faisant autorit rpond une requte en indiquant que le
[12/01/08]
DNS et Bind
Mmoire cache
33
nom ou le type des donnes recherches nexiste pas, le serveur ayant pos la question mmorise temporairement cette information. Les serveurs de noms mmorisent les donnes dans une mmoire cache an de pouvoir rpondre rapidement des requtes successives. La prochaine fois quun resolver interroge le serveur de noms sur des donnes quil connat dj, la rponse est plus rapide. Le serveur de noms a peut-tre mmoris la rponse, positive ou ngative, auquel cas il renvoie simplement la rponse au resolver. Mme sil na pas la rponse complte, il sait peut-tre dj des choses sur les serveurs de noms faisant autorit sur la zone recherche et il peut alors leur poser directement des questions. Supposons que notre serveur de noms ait dj recherch ladresse de eecs.berkeley.edu. Au cours de ce processus, il a mmoris dans sa mmoire cache les noms et adresses des serveurs de noms de eecs.berkeley.edu et de berkeley.edu, ainsi que ladresse de lhte eecs.berkeley.edu. Maintenant, si un resolver demande ladresse de baobab.cs.berkeley.edu notre serveur de noms, ce dernier peut se passer dinterroger les serveurs de noms de la racine. Voyant que berkeley.edu est actuellement connu comme le parent hirarchiquement le plus proche de baobab.cs.berkeley.edu, notre serveur de noms peut commencer sa recherche en interrogeant le serveur de berkeley.edu ( gure 2-16). Dautre part, si notre serveur de noms trouvait que ladresse de eecs.berkeley.edu nexistait pas, la prochaine requte concernant ce nom, il pourrait simplement rpondre partir de sa mmoire cache.
B
requte
C D
2
renseignement
1 serveur de noms 3
requte
E F
1 recherche de ladresse de baobab.cs.berkeley.edu 2 renseignements concernant F et G 3 recherche de ladresse de baobab.cs.berkeley.edu 4 adresse de baobab.cs.berkeley.edu 4
rponse
[12/01/08]
DNS et Bind
34
Dure de vie
Les serveurs de noms ne peuvent pas garder ternellement les donnes dans leur mmoire cache. Sils le faisaient, les modications sur les serveurs faisant autorit ne seraient jamais vues du reste du rseau : les serveurs de noms distants continueraient travailler avec les donnes en mmoire cache. Par consquent, ladministrateur de chaque zone dcide dune dure de vie (TTL pour Time To Live) pour les donnes de sa zone. Le TTL indique chaque serveur la dure pendant laquelle il est autoris conserver une donne en mmoire cache. Aprs coulement de ce dlai, le serveur de noms doit abandonner les donnes en mmoire et obtenir les nouvelles donnes partir des serveurs faisant autorit. Cela sapplique galement aux informations ngatives : un serveur de noms doit oublier une rponse ngative, pour le cas o des donnes auraient t ajoutes aux serveurs de noms faisant autorit. Le choix dune dure de vie pour les donnes revient essentiellement trouver un compromis entre performance et cohrence. Un petit TTL garantira une cohrence forte des donnes sur lensemble du rseau, car les serveurs de noms distants les oublieront plus rapidement et seront forcs dinterroger plus souvent un serveur de noms faisant autorit. Par contre, il augmentera la charge du serveur et le temps moyen de rsolution des informations pour le domaine. Un TTL lev diminuera le temps moyen de rsolution car les donnes pourront tre gardes plus longtemps en mmoire cache. Par contre, les informations seront incohrentes plus longtemps en cas de modication sur les serveurs de noms faisant autorit. Et maintenant, trve de thorie ! Vous devez tre impatient de passer laction. Il reste quelques travaux effectuer avant daborder la mise en uvre dune zone et de ses serveurs de noms, et cest ce que nous vous proposons au chapitre suivant.
[12/01/08]
DNS et Bind
3
Premiers pas dans la mise en uvre
Qui tes-vous ? finit par demander le Faon. Quelle douce voix il avait ! Je voudrais bien le savoir ! pensa la pauvre Alice. Elle rpondit, non sans quelque tristesse : Pour linstant, rien du tout Rflchissez encore, dit le Faon ; ce que vous venez daffirmer nest pas admissible. Alice rflchit, mais sans rsultat. Pourrais-tu, je te prie, me dire qui tu es toi-mme ? demanda-t-elle timidement. De le savoir, je crois que cela pourrait maider un peu. Je vous le dirai si vous voulez bien que nous fassions ensemble quelques pas, rpondit le Faon. Ici, je ne saurais men souvenir.
Maintenant que vous connaissez les principes sous-jacents au systme de noms de domaine, nous pouvons aborder des dtails plus pratiques. Avant dinitialiser une zone, il est ncessaire de se procurer le logiciel BIND. Il est habituellement standard dans la plupart des systmes dexploitation Unix, toutefois vous pouvez avoir besoin de le tlcharger pour proter des dernires amliorations et des volutions lies la scurit. Vous devez ensuite choisir un nom de domaine pour votre zone, tche parfois complexe, ncessitant de slectionner un domaine-parent adquat dans lespace de noms de lInternet. Vous devez alors contacter ladministrateur de la zone retenue. Une chose la fois : commenons par le tlchargement de BIND.
Tlcharger BIND
Si vous projetez de construire et dexploiter votre propre zone, vous avez tout dabord besoin de BIND. Mme si vous envisagez de sous-traiter lexploitation de votre zone, il peut tre intressant, par exemple, dutiliser BIND pour tester en local vos chiers de donnes de zone avant de les transmettre ladministrateur distant.
[12/01/08]
DNS et Bind
36
La plupart des systmes Unix incluent BIND en standard dans leur couche rseau TCP/ IP Cette couche tant gnralement intgre de base au systme dexploitation, vous . disposez ainsi de BIND directement. Mme si la couche rseau est facture sparment, elle aura probablement dj t acquise, puisque si vous envisagez de mettre en uvre le DNS, cest que vous utilisez dj sufsamment le rseau, nest-ce-pas ? Si vous ne disposez pas de BIND dans votre systme Unix, ou si vous en voulez la dernire version, vous pouvez tlcharger son code-source, disponible gratuitement. Les versions 8.4.7 et 9.3.2 de BIND sont les plus rcentes au moment o nous crivons, et sont accessibles sur le site web de lInternet Systems Consortium, http://www.isc.org/, ainsi que par FTP anonyme sur ftp.isc.org dans /isc/bind/src/8.4.7/bind-src.tar.gz ainsi que dans /isc/bind9/9.3.2/bind-9.3.2.tar.gz, respectivement La compilation sur la plupart des systmes Unix est assez simple1. LISC indique dans le chier src/INSTALL (BIND 8) et README (BIND 9), la liste des systmes Unix, Linux et mme Windows, sur lesquels BIND est rput se construire sans problme. Ces chiers indiquent aussi les systmes de type Unix ou non (quelquun, quelque part, travaille-t-il avec MPE ? ) ayant dj support BIND et sur lesquels il se compilera sans doute sans difcult. Dans tous les cas, nous conseillons fortement de lire toutes les sections du chier qui concernent votre systme dexploitation. Nous donnons aussi des indications pour la compilation de BIND 8.4.7 et 9.3.2 sur Linux lAnnexe C. Si BIND est dj livr avec votre systme dexploitation, vous vous demandez peut-tre ce quune version plus rcente pourrait vous apporter. Voici un aperu de ses dernires amliorations : Rsolution de failles de scurit Le meilleur argument en faveur de la version de BIND la plus rcente est celui de la protection contre les attaques subies par les serveurs de noms, certaines dentre elles tant dj bien connues. Les versions 8.4.7 et 9.3.2 de BIND rsistent toutes les attaques dj identies alors que les versions antrieures sont plus vulnrables. Historiquement, BIND 9 dispose dun meilleur suivi de scurit que BIND 8 (cependant, des vulnrabilits rsiduelles signicatives ont t dcouvertes dans BIND 9). Si vous exploitez un serveur de noms sur lInternet, nous vous recommandons dutiliser BIND 9.3.2 ou au moins BIND 8.4.7 (ou leurs successeurs). lments de scurisation BIND 8 et 9 acceptent des listes daccs pour les requtes, les transferts de zone et les mises jour dynamiques. BIND 9 intgre aussi les vues (views), qui permettent dexcuter plusieurs serveurs virtuels sur une seule machine. Certains serveurs de noms, notamment ceux fonctionnant sur des htes bastion ou des htes scurit critique, peuvent avoir besoin de ces fonctions. Nous les dcrivons au Chapitre 11.
1.
La compilation des premires versions de BIND 9 (avant 9.1.0) peut tre dlicate car celles-ci requirent pthreads dont la mise en uvre est dfectueuse sur certains systmes. Cette ncessit est contournable partir de BIND 9.1.0 en utilisant loption --disable-threads de congure.
[12/01/08]
DNS et Bind
Tlcharger BIND
37
Mise jour dynamique BIND 8 et 9 acceptent le standard de mise jour dynamique (Dynamic Update) dcrit dans la RFC 2136. Il autorise des agents mettre jour les donnes de la zone par lenvoi de messages dajout ou de suppression denregistrement de ressource. Les versions antrieures de BIND nont pas cette capacit. BIND 9 accepte des descriptions dautorisation de mise jour dynamique plus nes que celles de BIND 8. Nous dcrivons la mise jour dynamique au Chapitre 10. Transfert incrmental de zone Les versions actuelles de BIND 8 (telles que 8.4.7) et BIND 9 acceptent le transfert incrmental de zone, qui permet un serveur-esclave de ne demander son matre que les changements dans la zone. Les transferts de zone sont alors plus efcaces et plus rapides, ce qui est particulirement important pour les zones de grande taille et en constante volution. Daprs notre exprience, la mise en uvre dans BIND 9 est plus robuste que celle dans BIND 8. Si donc, la lecture de tout cela, il vous semble que vous avez besoin de BIND 8 ou 9 et que ni lun, ni lautre nest disponible en standard sur votre systme dexploitation, tlchargez son code source et compilez-le.
[12/01/08]
DNS et Bind
38
Recherche dadresse IP
Nous vous avons indiqu plusieurs noms dhtes accessibles par FTP et les listes de diffusion mentionnes incluent galement des noms de domaine. Cela prouve encore limportance du DNS : il donne accs de nombreux logiciels ou conseils utiles. Malheureusement, cest un serpent qui se mord la queue : il est impossible dexpdier un courriel une adresse sous la forme dun nom moins davoir dj initialis le DNS, et on ne peut poser de questions sur linitialisation dun domaine dans la liste sans utiliser son nom. Nous pourrions vous donner les adresses IP des htes mentionns, mais comme les adresses IP changent souvent (par rapport la dure de vie de cet ouvrage), nous allons vous indiquer comment utiliser temporairement le serveur de noms de quelquun dautre pour retrouver les informations utiles. Si votre hte est connect lInternet et dispose du programme nslookup, vous pouvez interroger lespace de noms de lInternet. Pour obtenir ladresse IP de ftp.isc.org, par exemple, vous pouvez utiliser :
% nslookup ftp.isc.org. 207.69.188.185
Cela ordonne nslookup dinterroger le serveur de noms ladresse IP 207.69.188.185 pour trouver ladresse IP de ftp.isc.org et devrait produire la rponse suivante :
Server: ns1.mindspring.com Address: 207.69.188.185 Name: ftp.isc.org Address: 204.152.184.110
Vous pouvez maintenant effectuer une connexion FTP vers ftp.isc.org, dont ladresse est 204.152.184.110. Nous avons su que lhte dadresse IP 207.69.188.185 est un serveur de noms grce au FAI (Fournisseur dAccs Internet), Mindspring, car ns1 est lun de ses serveurs de noms. Si votre FAI fournit des serveurs de noms ses clients (il devrait le faire), utilisez lun deux. Si ce nest pas le cas (honte lui !), vous pouvez temporairement utiliser lun des serveurs indiqus dans ce livre3. Tant que vous ne lutiliserez que pour demander quelques adresses IP ou autres informations, les administrateurs ny prteront pas attention. Il est bien sr impoli de faire pointer votre resolver de manire permanente vers le serveur de noms de quelquun dautre. Bien sr, si vous avez accs un hte connect lInternet et qui utilise le DNS, vous pouvez lutiliser pour accder ce dont vous avez besoin via ftp. Une fois que vous avez une version de BIND utilisable, vous pouvez commencer rchir au nom de votre domaine.
3.
NdT : cette possibilit risque dtre de moins en moins accessible, car la politique gnrale actuelle, pour des raisons de scurit, est de rgler les serveurs de noms dun domaine pour quil ne rponde quaux requtes rcursives provenant de ses propres clients.
[12/01/08]
DNS et Bind
39
[12/01/08]
DNS et Bind
40
Si vous choisissez un sous-domaine du domaine national correspondant votre pays, vous devez vrier que ce dernier est formellement en service, puis vous intresser sa structure. Consultez la liste des domaines de niveau suprieur actuels lAnnexe D, page 513 si vous ntes pas certain du nom de celui de votre pays. Certains domaines nationaux, comme nz (Nouvelle Zlande), au (Australie) ou uk (Royaume Uni), sont subdiviss en domaines de second niveau dont les noms, tels que co ou com pour les entits commerciales, retent la structure. Dautres, comme fr (France) ou dk (Danemark), sont subdiviss en une multitude de sous-domaines grs individuellement par des universits ou des socits, tels celui de lUniversit de Sainttienne, univ-st-etienne.fr, ou celui du Danish Unix Users Group, dkuug.dk. De nombreux domaines de niveau suprieur dcrivent leur structure sur leur site web. Si vous ntes pas sr de son URL, commencez votre recherche sur http://www.allwhois.com, qui dispose de liens vers de tels sites. Si le domaine suprieur ne propose pas de serveur web prsentant son organisation mais que vous avez une ide du sous-domaine auquel vous appartiendrez, vous pouvez utiliser un outil comme nslookup pour dcouvrir ladresse de messagerie du contact technique du sous-domaine concern (si nos exemples avec nslookup ne vous sufsent pas, survolez le Chapitre 12 pour une introduction). Pour dcouvrir qui contacter pour un sous-domaine spcique, il faut trouver lenregistrement SOA (start of authority) de la zone. Chaque enregistrement SOA contient ladresse lectronique du contact technique de la zone4 (les autres champs du SOA fournissent des informations gnrales sur la zone ; nous les dcrirons ultrieurement). Par exemple, si vous souhaitez avoir des informations sur le sous-domaine csiro.au, vous pouvez savoir qui le gre en consultant son enregistrement SOA :
% nslookup - 207.69.188.185 > set type=soa Recherche de linformation SOA > csiro.au. pour csiro.au Server: ns1.mindspring.com Address: 207.69.188.185#53 csiro.au origin = zas.csiro.au mail addr = hostmaster.csiro.au serial = 2005072001 refresh = 10800 retry = 3600 expire = 3600000 minimum ttl = 3600 > exit
4.
Le sous-domaine et la zone portent le mme nom, mais lenregistrement SOA fait partie intgrante de la zone, et pas du sous-domaine. Le contact technique indiqu dans cet enregistrement peut ne pas tre en charge de la totalit du sous-domaine (si celui-ci contient des sous-domaines dlgus), mais il est certain quil connat la nalit du sous-domaine.
[12/01/08]
DNS et Bind
41
Le champ mail addr est ladresse lectronique de ladministrateur de csiro.au. Pour utiliser cette adresse avec la plupart des outils de messagerie, vous devez remplacer le premier . par @ . Ainsi, hostmaster.csiro.au devient hostmaster@csiro.au5.
whois
Le service whois peut lui aussi vous aider dans linvestigation. Malheureusement, il existe de nombreux serveurs whois (la plupart des domaines suprieurs en possdent un) et ils ne dialoguent pas entre eux. Par consquent, la premire tape consiste trouver quel serveur whois interroger. Le mieux est de commencer avec le site http://www.allwhois.com ( gure 3-1). Nous avons dj indiqu que ce site tient jour une liste des sites web de chaque domaine suprieur national ; il propose galement un service whois uni.
[12/01/08]
DNS et Bind
42
Supposons que nous dsirions nous informer sur un sous-domaine de jp. Nous pouvons slectionner Japan (jp) dans la liste des registries au bas de http://www.allwhois.com/ pour aboutir directement une page web permettant dinterroger le bon serveur whois ( gure 3-2).
[12/01/08]
DNS et Bind
43
[12/01/08]
DNS et Bind
44
info Un nouveau domaine gnrique de niveau suprieur. net lorigine rserv aux organismes de gestion des rseaux, mais aujourdhui ouvert tous. org lorigine rserv aux organismes but non lucratif ou non-gouvernementaux, mais aujourdhui ouvert tous. Votre entreprise est connue sous le nom de The Gizmonics Institute et vous souhaitez utiliser le nom de domaine gizmonics.com. Vous utilisez alors votre compte personnel lUMN pour vrier que le nom gizmonics.com est libre :
% nslookup Default Server: ns.unet.umn.edu Address: 128.101.101.101 > set type=any Recherche de tous les types denregistrement > gizmonics.com. pour gizmonics.com Server: ns.unet.umn.edu Address: 128.101.101.101 gizmonics.com gizmonics.com nameserver = ns1.11l.net nameserver = ns2.11l.net
Horreur ! Il semble que le nom gizmonics.com soit dj utilis (mais qui a donc pu avoir cette ide ?). OK, essayons maintenant gizmonic-institute.com qui est plus long, mais encore assez intuitif6 :
% nslookup Default Server: ns.unet.umn.edu Address: 128.101.101.101 > set type=any > gizmonic-institute.com. Server: ns.unet.umn.edu Address: 128.101.101.101 Recherche de tous les types denregistrement pour gizmonic-institute.com
Visiblement, gizmonic-institute.com est libre et vous pouvez passer ltape suivante, celle de la recherche du registrar.
[12/01/08]
DNS et Bind
45
lunique registrar de com, net et org, ainsi que de edu. Pour la dclaration dun sousdomaine, il sufsait de contacter Network Solutions. En juin 1999, lICANN, lorganisme qui gre lespace de noms (nous lavons mentionn au chapitre prcdent) a introduit la comptition dans la fonction denregistrement dans com, net et org. Il y a maintenant des dizaines de registrars pour com, net et org. Pour plus dinformation, vous pouvez consulter le site de lInterNIC (gr par lICANN) http://www.internic.net/regist.html. Nous ne nous permettrons pas de vous indiquer comment choisir un registrar, mais noubliez pas de vrier le cot de lenregistrement, la rputation du service ainsi que loffre complmentaire de services. Notamment, il faut vrier lexistence de paquetages complets et les possibilits de modication en ligne pour faciliter ladministration.
[12/01/08]
DNS et Bind
46
propos de CIDR
Lors de la rdaction de la premire dition de cet ouvrage, lespace dadresses de lInternet sur 32 bits tait divis en trois classes principales : A, B et C. Les rseaux de la classe A sont ceux dont le premier octet (les huit premiers bits) de ladresse IP dsigne le rseau et dont les 24 bits suivants sont grs par lorganisme propritaire du rseau, pour diffrencier ses htes. La plupart des organismes bnciant dun rseau de classe A divisent leur rseau en sous-rseaux, en ajoutant un nouveau niveau hirarchique leur schma de numrotation. Les rseaux de classe B consacrent deux octets lidentication du rseau et deux octets celle de lhte, et les rseaux de classe C, trois octets pour lidentication du rseau et un seul octet pour celle de lhte. Malheureusement, ce schma de rpartition des rseaux ne convient plus. De nombreux organismes ont besoin de plusieurs rseaux de classe C (jusqu 254 htes chacun), sans pour autant ncessiter un rseau de classe B (jusqu 65534 htes). Nombre de ces organismes ayant obtenu un rseau de classe B, ces derniers sont devenus rares. Le routage inter-domaines sans classe (Classless Inter-Domain Routing ou CIDR) tente de rsoudre ce problme. CIDR ne tient plus compte de la rpartition en classe A, B ou C. Plutt que dattribuer un, deux ou trois octets lidentication de rseau, lautorit de gestion peut attribuer nimporte quel nombre de bits contigus de ladresse IP cette identication. Par exemple, si un organisme a besoin dun rseau denviron quatre fois la taille dun rseau de classe B, elle peut recevoir un identiant de rseau de 14 bits, permettant ainsi dutiliser 18 bits (lquivalent de quatre rseaux de classe B) pour la numrotation de ses htes. Lapparition de CIDR rend obsolte la terminologie des classes, bien quelle continue tre utilise dans la conversation. Dsormais, pour dsigner un rseau CIDR, il faut indiquer la valeur de loctet de poids fort attribu un organisme, ainsi que le nombre de bits ncessaires lidentication du rseau ; les deux valeurs sont spares par une barre oblique. Par exemple, 15/8 est lancien rseau de classe A dont le numro commence par les bits 00001111. Lancien rseau de classe B 128.32.0.0 se note maintenant 128.32/16. Le rseau 192.168.0.128/25 est constitu des 128 adresses IP allant de 192.168.0.128 192.168.0.255. charge par les fournisseurs daccs lInternet (FAI, ou ISP pour Internet Service Providers) qui rpartissent entre leurs clients les plages dadresses qui leur sont attribues. Si votre adresse de rseau vient dun FAI, le rseau englobant est probablement dclar au nom de votre FAI. Vous pouvez ventuellement vrier que votre FAI a bien effectu les enregistrements adquats, mais dans la ngative, vous ne pourrez probablement rien faire vous-mme, except le harceler. Si lenregistrement est correct, vous pouvez vous dispenser du reste de cette section.
Il nest pas ncessaire denregistrer les adresses dnies par la RFC 1918 (les rseaux 10/8, 172.16/12 et 192.168/16). En fait, cest mme impossible, puisque ces rseaux sont utiliss par de nombreux organismes.
[12/01/08]
DNS et Bind
47
Si votre rseau a t attribu par lInterNIC ou si vous tes un FAI, vous devez vrier son ofcialisation en contactant lorganisme qui la enregistr et uniquement celui-l. En effet, ces organismes, appels registry rgional dInternet (regional Internet registry ou RIR), grent lenregistrement pour diffrentes zones du monde. Pour le continent amricain, ARIN (American Registry of Internet Numbers, http://www.arin.net) gre lespace dadresses IP et lenregistrement de rseau. Pour lAsie et le Pacique, APNIC (Asia Pacic Network Information Center, http://www.apnic.net) remplit la mme fonction, de mme que RIPE Network Coordination Centre (http://www.ripe.net) pour lEurope. LAmrique Latine et les Carabes sont servies pas le Latin America and Caribbean Internet Addresses Registry (LACNIC, www.lacnic.net). Chaque RIR peut dlguer lautorit denregistrement un organisme rgional. Par exemple, LACNIC dlgue lenregistrement pour le Mexique et le Brsil des registries locaux. Il faut donc sassurer de contacter le bon RIR. Si vous ntes pas certain que votre rseau soit enregistr, la meilleure solution est de contacter le service whois fourni par ces organismes. Voici les URL des services whois utiliser : ARIN http://www.arin.net/whois/index.html APNIC http://www.apnic.net/search/index.html RIPE http://www.ripe.net/perl/whois/ LACNIC http://lacnic.net/cgi-bin/lacnic/whois?lg=EN Si votre rseau nest pas enregistr, il est ncessaire de le faire avant dinitialiser votre zone in-addr.arpa. Chaque organisme a ses propres procdures, qui sont gnralement payantes, malheureusement. Vous pouvez aussi dcouvrir que votre rseau est dj attribu votre FAI, auquel cas vous navez rien effectuer auprs du RIR. Une fois que tous vos htes sont dans des rseaux enregistrs, vous pouvez contacter votre domaine-parent.
[12/01/08]
DNS et Bind
48
pour la mise en service). Si cest le cas, passez au Chapitre 4 et initialisez vos serveurs de noms. Contactez ensuite votre registrar. Vous devrez aussi fournir divers renseignements, tels que le contact administratif et le contact technique de votre zone (qui peuvent tre la mme personne). Si ces derniers ne sont pas encore enregistrs dans la base de donnes whois du registrar, vous devrez fournir des informations complmentaires : nom, adresse postale, numro de tlphone, adresse lectronique, etc. Sils sont dj enregistrs dans whois, indiquez simplement leur rfrence whois (un code alphanumrique unique). Il reste parler du cot de lenregistrement dune nouvelle zone. La plupart des registrars sont des entreprises commerciales et facturent lenregistrement des noms de domaine. Network Solutions, le registrar original de com, net et org, facture 35 $ par domaine et par an pour enregistrer un sous-domaine des domaines gnriques. Si vous avez dj un sous-domaine de com, net ou org et que vous navez reu aucune facture rcemment, il serait bon de vrier les informations de contact concernant votre domaine dans le service whois. Si vous tes directement connect lInternet, vous devriez galement avoir une dlgation pour la zone in-addr.arpa correspondant votre rseau IP7. Par exemple, si vous disposez du rseau 192.201.44/24, vous devriez aussi grer la zone 44.201.192.inaddr.arpa, ce qui vous permettrait de grer la correspondance adresse-IP/nom pour votre rseau. Le Chapitre 4 explique comment initialiser votre zone in-addr.arpa. la section Vrier lenregistrement dun rseau, nous vous avons demand de rpondre plusieurs questions :
Votre rseau est-il une partie de celui dun FAI ? Votre rseau, ou celui du FAI qui englobe le vtre, est-il enregistr ? Si oui, dans quel RIR ?
Vous aurez besoin des rponses ces questions pour obtenir la dlgation de votre zone in-addr.arpa. Si votre rseau est une partie dun rseau englobant attribu un FAI, vous devez contacter ce FAI pour obtenir la dlgation de la zone in-addr.arpa approprie. Chaque FAI a ses propres mthodes pour dlguer une zone in-addr.arpa et sa page web daccueil est sans doute le lieu indiqu pour en prendre connaissance. Si vous ny trouvez pas les informations, consultez lenregistrement SOA de la zone in-addr.arpa correspondant au rseau de votre FAI. Par exemple, si votre rseau est une partie du rseau 153.35/16, vous pouvez consulter lenregistrement SOA de 35.153.in-addr.arpa pour trouver ladresse lectronique du contact technique de cette zone. Si votre rseau est enregistr directement auprs dun des RIR (Regional Internet Registry), contactez ce dernier pour dclarer galement votre zone in-addr.arpa. Chaque organisme dcrit ses procdures sur son site web. Maintenant que vous avez enregistr votre zone, vous pouvez aborder le chapitre suivant o il sera question de linitialisation de votre domaine et de vos serveurs de noms.
7.
Pour des informations sur la rsolution inverse en IPv6, consultez le Chapitre 11.
[12/01/08]
DNS et Bind
4
Mise en uvre de BIND
Cela semble trs joli, dit-elle, quand elle en eut termin la lecture, mais cest rudement difficile assimiler ! (Elle ne voulait pas savouer quelle ny comprenait rien du tout, voyez-vous bien.) Je ne sais pourquoi, jai limpression que cela me remplit la tte de toute sorte dides Jignore malheureusement quelles sont ces ides ! Pourtant, quelquun a tu quelque chose : cest ce quil y a de clair l-dedans en tout cas
Si vous avez lu consciencieusement chacun des chapitres prcdents, vous avez certainement hte que votre serveur de noms soit oprationnel. Ce chapitre se propose de vous montrer comment dmarrer un couple de serveurs. Peut-tre certains dentre vous ontils dj lu la table des matires et sont arrivs directement ce chapitre (honte eux !). Si vous tes dans ce cas, sachez que nous utiliserons des concepts prsents dans les chapitres prcdents et que nous les supposerons acquis. Plusieurs facteurs interviennent dans les choix de conguration des serveurs de noms. Votre type daccs lInternet en est le principal : accs complet (vous pouvez utiliser FTP vers ftp.rs.internic.net), accs limit (contrl par un pare-feu de scurit) ou pas daccs du tout. Ce chapitre prsuppose que vous disposez dun accs complet. Les autres cas seront dcrits au Chapitre 11. Nous allons dmarrer les deux serveurs de noms dune zone ctive. Nous donnerons sufsamment dindications pour les rendre oprationnels et les chapitres suivants donneront plus de dtails. Si vos serveurs de noms sont dj actifs, survolez ce chapitre pour simplement xer la terminologie ou pour vrier que vous navez rien omis dimportant lors de leur cration.
[12/01/08]
DNS et Bind
50
Luniversit dispose actuellement de deux rseaux Ethernet et projette dinstaller un ou deux nouveaux rseaux. Les rseaux actuels ont les adresses 192.249.249/24 et 192.253.253/24. Voici un extrait de la table dhtes de luniversit :
127.0.0.1 localhost
# Et voici nos principaux serveur 192.249.249.2 shrek.movie.edu shrek 192.249.249.3 toystory.movie.edu toystory toys 192.249.249.4 monsters-inc.movie.edu monsters-inc mi # Ces machines sont en mauvais tat et seront remplaces prochainement 192.253.253.2 misery.movie.edu misery 192.253.253.3 shining.movie.edu shining 192.253.253.4 carrie.movie.edu carrie # # # # # Un wormhole (trou de ver) est un phnomne imaginaire qui transporte instantanment les voyageurs de lespace sur de longues distances, et qui est rput instable. La seule diffrence entre un wormhole et un routeur est que ce dernier ne transporte pas les paquets instantanment (tout particulirement les ntres !!!).
rseau 192.249.249
wormhole
rseau 192.253.253
misery
shining
carrie
[12/01/08]
DNS et Bind
51
Fichiers de zone
La plupart des donnes dun chier de zone sont des enregistrements de ressource (resource records) du DNS. Les recherches dans le DNS ne tiennent pas compte de la casse des caractres ; vous pouvez donc saisir les donnes en majuscules, en minuscules ou dans un mlange des deux. Pour notre part, nous avons tendance utiliser des minuscules. Mme si la casse est sans inuence, la distinction est conserve par le DNS. Ainsi, si vous ajoutez des enregistrements pour Titanic.movie.edu, les clients recherchant titanic.movie.edu trouveront des enregistrements, mais avec un T majuscule au nom. Les enregistrements de ressource doivent commencer dans la premire colonne dune ligne. Dans nos exemples, ils respectent cette rgle mais ils peuvent apparatre diffremment en raison de la mise en page. Dans les RFC du DNS, les exemples prsentent les enregistrements de ressource dans un certain ordre. La plupart des utilisateurs ont choisi de suivre cet ordre, comme ici, mais ce nest nullement une obligation. Nous utilisons lordre suivant : Enregistrement SOA Indique qui fait autorit sur la zone. Enregistrement NS Indique un serveur de noms pour la zone. Autres enregistrements Donnes concernant les htes de la zone.
[12/01/08]
DNS et Bind
52
Ce chapitre prsente aussi les enregistrements suivants : A Correspondance nom-adresse. PTR Correspondance adresse-nom. CNAME Nom canonique (ou alias). Ceux dentre vous qui sont dj familiers du sujet feront sans doute remarquer quil y a des moyens plus rapides pour initialiser les donnes. Dans cette premire partie de louvrage, nous nutiliserons ni abrviations, ni raccourcis, pour que vous compreniez la syntaxe complte de chaque enregistrement. Une fois que la version longue sera comprise, nous laguerons les chiers.
Commentaires
Les chiers de zone, db, sont faciles lire sils contiennent des commentaires et des lignes vides (les serveurs de noms nen tiennent pas compte). Les commentaires commencent par un point-virgule et se terminent en n de ligne.
[12/01/08]
DNS et Bind
53
Si le serveur est antrieur BIND 8.2, lutilisation de cette directive provoquera une erreur de syntaxe.
Enregistrement SOA
Lenregistrement qui suit $TTL est lenregistrement SOA (Start Of Authority). Il indique que ce serveur de noms est la meilleure source dinformations pour les donnes de cette zone. Notre serveur de noms fait autorit sur la zone movie.edu comme lindique son enregistrement SOA. Chaque chier db.DOMAINE et db.ADR doit comporter un enregistrement SOA. Il y en a un et un seul par chier. Nous ajoutons lenregistrement suivant au chier db.movie.edu :
movie.edu. IN SOA toystory.movie.edu. al.movie.edu. ( 1 ; numro de srie 3h ; rafrachissement aprs 3 heures 1h ; nouvel essai aprs 1 heure 1w ; expiration aprs 1 semaine 1h ) ; TTL rponse ngative d1 heure
Le nom movie.edu. doit commencer la premire colonne du chier. Il faut sassurer que le nom se termine par un point, comme ici, faute de quoi on pourrait avoir des surprises ! Nous expliquons pourquoi plus loin dans ce chapitre. IN signale que lenregistrement est dans la classe Internet. Il existe dautres classes, mais aucune delles nest actuellement trs utilise. Nos exemples nutilisent que la classe IN. Le champ classe est facultatif ; sil est omis, le serveur dtermine la classe partir du chier de conguration (voir plus loin). Le premier nom aprs SOA (toystory.movie.edu.) est le nom du serveur-matre primaire de la zone movie.edu. Le second nom (al.movie.edu.) est ladresse de courrier de ladministrateur du domaine (en remplaant le premier . par un @ ). Vous verrez souvent quil sagit de root, postmaster ou hostmaster. Les serveurs de noms nutilisent jamais cette valeur ; elle est l titre dinformation. Si vous avez un problme avec une zone, vous pouvez envoyer un message cette adresse. BIND fournit un autre enregistrement de ressource, RP (Responsible Person ou personne responsable), pour le mme usage. Lenregistrement RP est prsent au Chapitre 7. Les parenthses permettent de prsenter lenregistrement SOA sur plusieurs lignes. La plupart des champs lintrieur de lenregistrement SOA sont destins aux esclaves et seront expliqus lors de leur prsentation dans ce chapitre. Pour le moment, nous supposerons que les valeurs utilises sont raisonnables. On retrouve le mme enregistrement SOA au dbut des chiers db.192.249.249 et db.192.253.253. Dans ces chiers, nous avons remplac le premier nom de lenregistrement SOA, movie.edu., par le nom adquat de la zone in-addr.arpa, cest--dire par 249.249.192.in-addr.arpa. et 253.253.192.in-addr.arpa., respectivement.
Enregistrements NS
Les enregistrements suivants sont ceux des serveurs de noms, NS (Name Server). Nous en avons ajout un pour chaque serveur de noms faisant autorit sur la zone. Voici les enregistrements NS des chiers db.movie.edu :
[12/01/08]
DNS et Bind
54
movie.edu. IN NS toystory.movie.edu. movie.edu. IN NS wormhole.movie.edu.
Ces enregistrements indiquent quil y a deux serveurs de noms dans la zone movie.edu. Ces serveurs sont implants sur les htes toystory.movie.edu et wormhole.movie.edu. Un hte multi-domicili2 comme wormhole.movie.edu, est un bon choix pour un serveur de noms, car il est bien connect. Les htes peuvent y accder directement par plusieurs rseaux et, sil sert aussi de routeur, il est a priori plus able, car surveill de prs. Nous parlerons du choix des htes accueillant un serveur de noms au Chapitre 8. Tout comme dans le cas des enregistrements SOA, nous avons ajout des enregistrements NS aux chiers db.192.249.249 et db.192.253.253.
toystory (matre) 3
shrek
misery
shining
carrie
2 1 wormhole (esclave) 1
192.249.249
192.253.253
Figure 4-2.
; ; Adresse des htes ; localhost.movie.edu. shrek.movie.edu. toystory.movie.edu. monsters-inc.movie.edu. misery.movie.edu. shining.movie.edu. carrie.movie.edu. ; ; Htes multi-domicilis ; wormhole.movie.edu. wormhole.movie.edu. ; ; Alias ;
IN IN IN IN IN IN IN
A A A A A A A
IN A IN A
192.249.249.1 192.253.253.1
2.
NdT : cest--dire disposant de plusieurs adresses IP gnralement sur des rseaux diffrents. ,
[12/01/08]
DNS et Bind
55
Les deux premiers blocs de lignes ne sont sans doute pas surprenants. A indique une adresse et chaque enregistrement fait correspondre un nom une adresse. Visiblement, wormhole.movie.edu est multi-domicili. Deux adresses sont associes son nom, et donc deux enregistrements dadresse. la diffrence de la recherche dans une table dhtes, une recherche dans le DNS peut conduire au renvoi de plusieurs adresses par nom. La recherche de wormhole.movie.edu en renverra deux. Si le demandeur et le serveur de noms sont sur le mme rseau, certains serveurs indiqueront en premier ladresse la plus proche du demandeur. Cette caractristique est appele classement dadresses (address sorting) et est dcrite au Chapitre 10. Si le classement dadresses nest pas appliqu, lordre des adresses dans les rponses subit une permutation circulaire dune requte lautre. Ce mcanisme de tourniquet (round robin) est aussi dcrit au Chapitre 10. Le troisime bloc de lignes est une table dalias. Pour les trois premiers alias, nous avons cr des enregistrements de ressource CNAME (Canonical NAME ou nom canonique). Par contre, nous avons cr des enregistrements dadresse pour les deux autres alias (voir la description plus loin). Un enregistrement CNAME lie un alias son nom canonique. Le serveur traite les enregistrements CNAME diffremment des alias dune table dhtes. Lorsquun serveur recherche un nom et trouve un enregistrement CNAME, il remplace le nom par le nom canonique et recherche alors le nouveau nom. Par exemple, lorsque le serveur recherche wh.movie.edu, il trouve un enregistrement CNAME qui dsigne wormhole.movie.edu. Le serveur recherche alors wormhole.movie.edu et renvoie les deux adresses correspondantes. Il faut retenir la rgle suivante : un alias (tel que toys.movie.edu) ne doit jamais apparatre dans la partie droite dun enregistrement de ressource. Autrement dit, le champ des donnes dun enregistrement ne doit contenir que des noms canoniques, tels que toystory.movie.edu. Notez que lenregistrement NS cr prcdemment utilise le nom canonique. Les deux dernires lignes rsolvent un cas spcial. Supposons que vous ayez un hte multi-domicili, tel que wormhole.movie.edu, et que vous vouliez tester une de ses interfaces. Un moyen habituel consiste utiliser ping. Si vous utilisez ping wormhole.movie.edu, le serveur de noms renvoie les deux adresses correspondantes lors de la recherche. ping utilise la premire adresse renvoye, mais laquelle des deux est-ce ? Avec une table dhtes, on pourrait choisir ladresse en utilisant soit wh249.movie.edu soit wh253.movie.edu, chaque nom indiquant une adresse unique. Pour obtenir le mme rsultat avec le DNS, mieux vaut ne pas crer wh249.movie.edu et wh253.movie.edu sous la forme denregistrement CNAME, sous peine dentraner le renvoi des deux adresses de wormhole.movie.edu lors de la recherche dun des alias. Il faut utiliser des enregistrements dadresse. Ainsi, pour tester le fonctionnement de linterface 192.253.253.1 de wormhole.movie.edu, nous pouvons utiliser ping wh253.movie.edu qui ne dsigne quune adresse. Le mme principe sapplique wh249.movie.edu.
[12/01/08]
DNS et Bind
56
Voici une rgle gnrale qui rsume bien tout cela : si un hte est multi-domicili (cest-dire quil a plus dune interface), il faut crer un enregistrement dadresse (A) pour chaque alias unique dadresse, ainsi quun enregistrement CNAME pour chaque alias commun toutes les adresses (voir la gure 4-3).
wh.movie.edu CNAME wormhole.movie.edu
PTR
PTR
A wormhole (esclave)
192.249.249.1
192.253.253.1
A wh249.movie.edu
A wh253.movie.edu
Figure 4-3.
Les alias wh249.movie.edu et wh253.movie.edu ne servent que pour ladministration du rseau. Si un utilisateur utilise un nom tel que wh249.movie.edu, il risque de ne pas comprendre son problme lorsque le nom ne fonctionnera pas, par exemple dans un chier .rhosts. En effet, cet endroit, il faudrait utiliser le nom renvoy par une recherche inverse partir de ladresse, cest--dire le nom canonique wormhole.movie.edu. Puisque nous avons utilis des enregistrements dadresse (A) pour les alias wh249.movie.edu et wh253.movie.edu, pourquoi nutiliserions-nous pas exclusivement ce type denregistrement ? Cela ne poserait pas de problme pour la plupart des applications qui se contentent de trouver une adresse IP qui fonctionne. Par contre, sendmail cherche remplacer les alias de len-tte de courrier par le nom canonique ; cela ne peut se faire que si le nom utilis dans len-tte a un nom canonique associ. Sans enregistrements CNAME, sendmail aurait besoin dune conguration supplmentaire pour dcrire les associations dalias. En plus du problme avec sendmail, les utilisateurs auraient des difcults choisir le nom canonique placer dans leur chier .rhosts. La recherche dun nom qui possde un enregistrement CNAME renvoie vers le nom canonique, contrairement celle dun nom ayant un enregistrement dadresse. Dans ce dernier cas, les utilisateurs devraient eux-mmes rechercher ladresse IP pour retrouver le nom canonique, comme le fait rlogind, mais nous navons jamais vu ce type dutilisateurs sur les systmes que nous grons.
[12/01/08]
DNS et Bind
57
Enregistrements PTR
Nous crons ensuite les correspondances adresse-nom. Le chier db.192.249.249 lie les adresses du rseau 192.249.249/24 leur nom, laide des enregistrements de ressource PTR (pointeur). Il y a un enregistrement pour chaque interface dhte de ce rseau (souvenons-nous que les adresses sont considres comme des noms dans le DNS ; ladresse est reprsente en sens inverse et on y ajoute in-addr.arpa). Voici les enregistrements PTR du rseau 192.249.249/24 :
1.249.249.192.in-addr.arpa. 2.249.249.192.in-addr.arpa. 3.249.249.192.in-addr.arpa. 4.249.249.192.in-addr.arpa. IN IN IN IN PTR PTR PTR PTR wormhole.movie.edu. shrek.movie.edu. toystory.movie.edu. monsters-inc.movie.edu.
Nous pouvons faire plusieurs remarques. Premirement, les adresses doivent dsigner un seul nom, le nom canonique. Aussi 192.249.249.1 dsigne-t-il wormhole.movie.edu et non pas wh249.movie.edu. Vous pouvez crer deux enregistrements PTR, un pour wormhole.movie.edu et un pour wh249.movie.edu, mais la plupart des logiciels ne sont pas prts recevoir plus dun nom par adresse. Deuximement, mme si wormhole.movie.edu a deux adresses, vous nen voyez quune ici, car ce chier ne concerne que les connexions au rseau 192.249.249/24 et wormhole.movie.edu na quune adresse dans ce rseau. Nous crons des enregistrements similaires pour le rseau 192.253.253/24.
[12/01/08]
DNS et Bind
58
toystory.movie.edu. monsters-inc.movie.edu. misery.movie.edu. shining.movie.edu. carrie.movie.edu. wormhole.movie.edu. wormhole.movie.edu. ; ; Alias ; toys.movie.edu. mi.movie.edu. wh.movie.edu. IN IN IN IN IN IN IN A A A A A A A
[12/01/08]
DNS et Bind
59
; ; Serveurs de noms ; 253.253.192.in-addr.arpa. IN NS toystory.movie.edu. 253.253.192.in-addr.arpa. IN NS wormhole.movie.edu. ; ; Adresses dsignant des noms canoniques ; 1.253.253.192.in-addr.arpa. IN PTR wormhole.movie.edu. 2.253.253.192.in-addr.arpa. IN PTR misery.movie.edu. 3.253.253.192.in-addr.arpa. IN PTR shining.movie.edu. 4.253.253.192.in-addr.arpa. IN PTR carrie.movie.edu.
Ce chier, en apparence anodin, est indispensable aux serveurs de noms. Personne nayant reu la dlgation pour le rseau 127.0.0/24, et ce malgr son utilisation relle pour la fonction de bouclage local, chaque serveur doit en tre responsable pour luimme. Si on omet ce chier, certes le serveur fonctionnera, mais une recherche de 127.0.0.1 chouera car le serveur de la racine contact ne peut pas faire correspondre 127.0.0.1 lhte local. Pour viter toute surprise, il faut donc fournir soi-mme la correspondance.
[12/01/08]
DNS et Bind
60
[12/01/08]
DNS et Bind
61
NS A
H.ROOT-SERVERS.NET. 128.63.2.53
NS A
I.ROOT-SERVERS.NET. 192.36.148.17
NS A
J.ROOT-SERVERS.NET. 192.58.128.30
NS A
K.ROOT-SERVERS.NET. 193.0.14.129
NS A
L.ROOT-SERVERS.NET. 198.32.64.12
NS A
M.ROOT-SERVERS.NET. 202.12.27.33
Le nom de domaine . est celui la zone racine. Cette liste de serveurs volue de temps en temps et il ne faut pas considrer les indications ci-dessous comme dnitives ; il est donc ncessaire de tlcharger une version jour de db.cache. Vous devez grer manuellement la mise jour de ce chier. Certaines anciennes versions de BIND le faisait automatiquement. Toutefois, cette fonction a t dsactive car elle ne sest pas montre la hauteur des attentes. Le chier db.cache, pour sa part, est post de temps en temps dans les listes de diffusion bind-users ou namedroppers, prsentes au Chapitre 3. Les abonns ces listes ne manqueront probablement pas les annonces. Ce chier peut galement contenir dautres informations que celles concernant les serveurs de la racine, mais elles ne seront jamais utilises. En effet, au dmarrage, le serveur copie les donnes issues du chier vers un emplacement spcial de la mmoire cache et les considre comme des donnes indicatives sur les serveurs de la racine. Il ne les abandonne jamais (comme il le ferait avec des donnes quelconques en mmoire cache), mme si leur TTL arrive chance. Le serveur utilise ces donnes pour localiser les serveurs de la racine et leur demander la liste jour des serveurs de la racine, quil place alors en mmoire cache standard. Le serveur consulte la mmoire cache spciale pour charger une nouvelle liste jour des serveurs de la racine, lorsque la prcdente est parvenue chance.
[12/01/08]
DNS et Bind
62
Pourquoi le serveur de noms interroge-t-il un des serveurs de noms dnis dans le chier de donnes indicatives (cest--dire un serveur qui est probablement un serveur de la racine) pour obtenir une liste de serveurs de la racine, alors quil en dtient dj une ? Parce que le serveur interrog connat trs vraisemblablement la liste jour des serveurs de la racine, alors que le chier local pourrait tre prim. Le TTL de ces donnes est x 3600000 secondes. Dans les anciennes versions du chier, il tait 99999999 secondes3. lorigine, le chier servait initialiser la mmoire cache, et le TTL des donnes devait tre sufsamment grand pour quelles ne parviennent jamais chance. Les 99999999 secondes ne sont rien dautre quune trs longue dure, largement sufsante pour couvrir la dure de fonctionnement sans interruption dun serveur. Puisque le serveur place dsormais les donnes dans une zone spciale de sa mmoire cache, elles ne sont plus abandonnes et leur TTL nest plus ncessaire. Cependant, la valeur de 3600000 nest pas gnante ; elle fait partie du folklore de BIND transmis par les administrateurs de serveurs de noms lors du passage de tmoin.
Habituellement, les chiers de congurations contiennent une ligne indiquant le rpertoire dans lequel sont situs les chiers de donnes. Le serveur de noms lutilise comme rpertoire de travail, ce qui permet dutiliser des chemins relatifs pour accder aux chiers de donnes. Voici la syntaxe de dnition du rpertoire de travail situ lintrieur dune directive options :
options { directory "/var/named"; // Placez ici les options complmentaires. };
3.
NdT : 3600000 secondes quivalent 1000 heures, soit environ 41 jours ; 99999999 secondes correspondent environ 27700 heures, soit 1157 jours, cest--dire un peu plus de 3 ans.
[12/01/08]
DNS et Bind
63
Sur un serveur-matre primaire, le chier de conguration contient une directive zone par chier de donnes de zone lire. Chaque ligne commence par le mot cl zone, et est suivi du nom de la zone et de la classe (in pour Internet). Le type master indique au serveur quil est matre primaire pour la zone correspondante. La dernire ligne contient le nom du chier lire :
zone "movie.edu" in { type master; file "db.movie.edu"; };
Nous avons dj indiqu dans ce chapitre que si la classe nest pas explicite dans un enregistrement de ressource, le serveur dtermine la classe utiliser laide du chier de conguration. in dans la directive zone xe la classe Internet . in est aussi la valeur standard pour la directive zone ; elle peut donc tre totalement omise pour les zones de classe Internet. Voici la syntaxe pour dsigner le chier dinitialisation de la mmoire cache :
zone "." in { type hint; file "db.cache"; };
Comme nous lavons expliqu auparavant, ce chier nest pas utilis pour la mmoire cache standard, mais pour la mmoire cache spciale qui contient des indications (hints) sur les serveurs de noms de la racine4. En standard, BIND attend un chier de conguration appel /etc/named.conf. Les chiers de la zone de notre exemple sont situs dans le rpertoire /var/named. On peut utiliser nimporte quel rpertoire, mais il faut viter de le placer dans le systme de chiers racine si lespace est rduit, ainsi que faire en sorte que ce systme de chiers soit mont avant le dmarrage du serveur de noms. Voyons donc le chier de conguration complet /etc/named.conf :
// fichier de configuration de BIND options { directory "/var/named"; // Placez ici les options complmentaires. }; zone "movie.edu" in {
4.
BIND 9 dispose en fait dune zone dindications initiales prdnie ; il nest donc pas ncessaire de la dclarer dans le chier named.conf. Il nest toutefois pas gnant de le faire et cela peut viter des sueurs froides au lecteur du chier de conguration. Nous prenons donc le parti de dclarer systmatiquement cette zone.
[12/01/08]
DNS et Bind
64
type master; file "db.movie.edu"; }; zone "249.249.192.in-addr.arpa" in { type master; file "db.192.249.249"; }; zone "253.253.192.in-addr.arpa" in { type master; file "db.192.253.253"; }; zone "0.0.127.in-addr.arpa" in { type master; file "db.127.0.0"; }; zone "." in { type hint; file "db.cache"; };
Abrviations
Nous avons maintenant cr tous les chiers ncessaires au fonctionnement dun serveur-matre primaire. Revenons en arrire pour reconsidrer les chiers de donnes de la zone ; jusquici, nous navons utilis aucune abrviation, car les formes raccourcies peuvent prter confusion. Maintenant que nous connaissons la forme dveloppe de la syntaxe, nous pouvons en aborder la forme raccourcie.
[12/01/08]
DNS et Bind
Abrviations
Puisque 249.249.192.in-addr.arpa est son origine, nous pouvons crire :
2 IN PTR shrek.movie.edu.
65
Nous vous avions signal de ne pas oublier le point terminal lors de lutilisation des noms complets (FQDN). En cas domission, une ligne telle que :
shrek.movie.edu IN A 192.249.249.2
Notation @
Si le nom du domaine est le mme que lorigine, le nom peut tre remplac par @ . Cest dans lenregistrement SOA quon le voit le plus. Notre enregistrement SOA devient alors :
@ IN SOA toystory.movie.edu. al.movie.edu. ( 1 ; numro de srie 3h ; rafrachissement aprs 3 heures 1h ; nouvel essai aprs 1 heure 1w ; expiration aprs 1 semaine 1h ) ; TTL rponse ngative d1 heure
Dans le second enregistrement dadresse, le nom wormhole est implicite. Ce type de raccourci est utilisable mme si les enregistrements de ressource sont de types diffrents.
[12/01/08]
DNS et Bind
66
; ; Serveurs de noms (le nom @ est implicite) ; IN NS toystory.movie.edu. IN NS wormhole.movie.edu. ; ; Adresses pour les noms canoniques ; localhost IN A 127.0.0.1 shrek IN A 192.249.249.2 toystory IN A 192.249.249.3 monsters-inc IN A 192.249.249.4 misery IN A 192.253.253.2 shining IN A 192.253.253.3 carrie IN A 192.253.253.4 wormhole IN A IN A 192.249.249.1 192.253.253.1
; ; Alias ; toys mi wh
[12/01/08]
DNS et Bind
Abrviations
IN NS toystory.movie.edu. IN NS wormhole.movie.edu. ; ; ; 1 2 3 4 Les adresses dsignent des noms canoniques IN IN IN IN PTR PTR PTR PTR wormhole.movie.edu. shrek.movie.edu. toystory.movie.edu. monsters-inc.movie.edu.
67
[12/01/08]
DNS et Bind
68
En observant le nouveau chier db.movie.edu, vous avez peut-tre remarqu que nous aurions pu supprimer movie.edu des noms dhtes des enregistrements SOA et NS :
@ IN SOA toystory al ( 1 3h 1h 1w 1h ) IN NS toystory IN NS wormhole ; ; ; ; ; numro de srie rafrachissement aprs 3 heures nouvel essai aprs 1 heure expiration aprs 1 semaine TTL rponse ngative d1 heure
On ne peut pas en faire autant dans les autres chiers db, car leurs origines sont diffrentes. An que les enregistrements SOA et NS soient reproductibles dans tous les chiers de zone, nous conservons les noms totalement qualis dans db.movie.edu.
Dans les enregistrements A (adresses) et MX (dcrits au Chapitre 5), les noms dhte apparaissent dans le champ nom ; en revanche, ils apparaissent dans le champ donnes des enregistrements SOA et NS. Les enregistrements CNAME nont pas se conformer aux rgles concernant les noms dhte, car ils peuvent dsigner des noms qui ne sont pas des noms dhte. Observons la rgle concernant les noms dhte : ils peuvent avoir des caractres alphabtiques et numriques dans chaque composante du nom. Les noms ci-dessous sont des noms dhte valables :
ID4 IN A 192.249.249.10 postmanring2x IN A 192.249.249.11
Les noms qui ne sont pas des noms dhte peuvent contenir nimporte quel caractre ASCII afchable.
[12/01/08]
DNS et Bind
69
Si le champ des donnes dun enregistrement de ressource dsigne une adresse de messagerie (comme dans un enregistrement SOA), le nom le plus gauche peut contenir nimporte quel caractre imprimable, puisquil ne sagit pas dun nom dhte. Par contre, le reste du nom doit respecter la syntaxe dcrite plus haut. Par exemple, une adresse de messagerie prsente la syntaxe suivante :
<caractres ASCII>.<caractres de nom dhte>
Ainsi, si votre adresse de messagerie est key_grip@movie.edu, vous pouvez lutiliser telle quelle dans un enregistrement SOA (aprs avoir remplac le @ par un . ) malgr le caractre _ :
movie.edu. IN SOA toystory.movie.edu. key_grip.movie.edu. ( 1 ; numro de srie 3h ; rafrachissement aprs 3 heures 1h ; nouvel essai aprs 1 heure 1w ; expiration aprs 1 semaine 1h ) ; TTL rponse ngative d1 heure
La fonction de test peut causer des problmes lors du passage dune version librale de BIND une version exigeante, spcialement pour les domaines utilisant des noms contenant le caractre _ . Si vous ne pouvez pas modier les noms dhte immdiatement, la fonction de test peut tre provisoirement suspendue et ne gnrer que des messages dalerte :
options { check-names master warn; };
Les messages dalerte sont collects par syslog. La directive suivante indique de ne tenir compte daucune erreur :
options { check-names master ignore; };
Si les noms non conformes proviennent dune zone pour laquelle vous tes esclave et que vous ne contrlez pas, utilisez la dclaration suivante dans laquelle on remplace master par slave :
options { check-names slave ignore; };
Enn, si le nom tester provient dune rponse une requte et ne rsulte pas dun transfert de zone, indiquez response :
options { check-names response ignore; };
DNS et Bind
70
Le test des noms peut tre rgl zone par zone et il est alors prioritaire sur les directives gnrales de la structure options :
zone "movie.edu" in { type master; file "db.movie.edu"; check-names fail; }; La directive contenue dans la structure options comprend trois champs (check-names master fail), alors que celle dans la structure zone nen a que deux. En effet, dans le second cas, la prcision est inutile, le contexte tant implicite.
Outils
Il serait sans doute plus confortable de disposer dun outil de conversion dune table dhtes en chiers de zone. Cest le rle de notre script Perl, h2n. Vous pouvez utiliser h2n pour initialiser les chiers de zone, puis grer manuellement leur mise jour par la suite, mais vous pouvez aussi lutiliser pour cette mise jour. Le format dune table dhtes est simple comprendre et modier ; vous pouvez donc grer un chier /etc/ hosts et excuter h2n autant de fois que ncessaire pour mettre jour les chiers de zone. Si vous envisagez dutiliser h2n, et tant donn que h2n utilise /etc/hosts, vous pouvez vous dispenser dinitialiser manuellement les chiers du DNS. Nous-mmes, nous aurions pu viter un gros travail en gnrant automatiquement les chiers des exemples de ce chapitre :
% h2n -d movie.edu -s toystory -s shrek \ -n 192.249.249 -n 192.253.253 \ -u al.movie.edu
Pour gnrer un chier de conguration pour BIND 4, ajoutez loption v 4. Les options -d et -n indiquent le nom du domaine et les adresses de rseau. Les noms des chiers de zone sont drivs de ces deux options. Loption -s dsigne les serveurs de noms pour les enregistrements NS. Loption -u (user) est ladresse de messagerie de lenregistrement SOA. Nous dcrirons h2n en dtail au Chapitre 7, aprs avoir prsent les relations entre le DNS et la messagerie.
Outils de BIND 9
BIND 9 offre de nouveaux outils pratiques pour la gestion des chiers des serveurs de noms : named-checkconf et named-checkzone. Ces outils sont placs dans le rpertoire /usr/ local/sbin. Comme leur nom lindique, named-checkconf recherche les erreurs de syntaxe dans le chier de conguration et named-checkzone recherche les erreurs de syntaxe dans les chiers de zone. Il faut tout dabord utiliser named-checkconf, qui teste /etc/named.conf par dfaut :
% named-checkconf
[12/01/08]
DNS et Bind
71
Sil ny a aucune erreur, il ny a aucun afchage. Ensuite, il faut utiliser named-checkzone pour chaque chier de zone :
% named-checkzone movie.edu db.movie zone movie.edu/IN: loaded serial 4 OK
Comme vous pouvez le constater, tout est correct et le numro de srie actuel est 4 .
Cette commande suppose que le chier de conguration est /etc/named.conf. Le chier de conguration peut tre situ ailleurs ; il faut alors le dsigner laide de loption -c :
# /usr/sbin/named -c fichier-de-configuration
[12/01/08]
DNS et Bind
72
daemon sous le nom named. Pour savoir o syslog enregistre les messages, cherchez le service daemon dans /etc/syslog.conf :
% grep daemon /etc/syslog.conf *.err;kern.debug;daemon,auth.notice /var/adm/messages
Ici, les messages du serveur de noms sont enregistrs dans le chier /var/adm/messages, et syslog ne mmorise que ceux suprieurs ou gaux au niveau de priorit LOG_NOTICE. Certains messages sont envoys au niveau LOG_INFO. Vous pourrez dcider de modier les niveaux denregistrement aprs la lecture du Chapitre 7 dans lequel nous dcrivons en dtail les messages de syslog. Lors de son dmarrage, le serveur de noms gnre un message starting :
% grep named /var/adm/messages Jan 10 20:48:32 toystory named[3221]: starting BIND 9.3.2 c named.boot
Ce message nest pas une erreur, mais il peut cependant tre accompagn dun message derreur). Les erreurs les plus courantes sont celles de syntaxe dans les chiers de zone ou dans le chier de conguration. Par exemple, si vous omettez le type denregistrement de ressource dans un enregistrement dadresse :
shrek IN 192.249.249.2
Si vous avez fait une faute dorthographe dans le mot zone du chier /etc/ named.conf :
zne "movie.edu" in {
En cas derreur de syntaxe, testez la ligne signale en erreur dans le message de syslog pour voir si vous pouvez rsoudre le problme. Votre connaissance de laspect des chiers de zone peut vous sufre pour reprer lerreur. Sinon, consultez lAnnexe A pour tudier en dtail la syntaxe de tous les enregistrements de ressource. Dans la mesure du possible, rsolvez le problme et relancez le serveur de noms avec ndc (BIND 8) ou rndc (BIND 9), la commande de pilotage du dmon de service de noms :
# ndc reload
an quil relise les chiers de zone5. Pour plus dinformations sur ndc et rndc pour contrler un serveur de noms, reportez-vous au Chapitre 7.
5.
Avec BIND 9, il est ncessaire dutiliser rndc, mais nous navons encore donn aucune indication sur sa conguration. Nous le dcrirons au Chapitre 7. ndc ne peut fonctionner tel quel.
[12/01/08]
DNS et Bind
73
ou utilisez hostname(1). Sur lhte toystory, nous avons utilis hostname(1) avec le paramtre toystory.movie.edu (il ne faut pas mettre de point terminal).
Si la recherche locale fonctionne, le serveur de noms est correctement congur pour votre domaine. Si la recherche choue, vous obtiendrez quelque chose comme :
*** toystory.movie.edu can't find carrie: Non-existent domain
Cela signie que soit carrie nest pas dans les donnes (testez vos chiers de zone), soit vous navez pas rgl le domaine local avec hostname(1), soit une erreur du serveur de noms est survenue (peut-tre mme une erreur que vous naviez pas comprise lors de la vrication des messages syslog).
[12/01/08]
DNS et Bind
74
Si la recherche dadresse fonctionne, votre domaine est correctement congur pour votre zone in-addr.arpa. Si la recherche choue, vous obtiendrez le mme type de message derreur que lors de lchec de la recherche dun nom.
Si cette recherche aboutit, votre serveur de noms sait o se trouvent les serveurs de la racine et sait comment les contacter pour rechercher des informations sur les domaines autres que le vtre. Si cette recherche choue, cest que soit vous avez oubli dinitialiser le chier des indications sur les serveurs de la racine (un message syslog le signalera), soit le rseau est interrompu quelque part et vous ne pouvez pas atteindre les serveurs de noms du domaine distant. Essayez alors un autre domaine extrieur. Ces premires recherches fonctionnent ? Flicitations ! Votre serveur primaire est oprationnel. Vous tes maintenant prt initialiser votre serveur-esclave.
Un test supplmentaire
Pendant que nous y sommes, effectuons encore un test. Vrions que le serveur de la zone-parente a bien mis en place la dlgation pour votre domaine. Si votre domaineparent exige que vos deux serveurs de noms soient oprationnels avant de valider la dlgation, passez directement la section suivante. Ce test requiert deux tapes. Tout dabord, cherchons ladresse IP de lun des serveurs de noms de la zone-parente. Puis interrogeons ce serveur pour vrier les enregistrements NS (linformation de dlgation) pour lune de nos zones. Ralisons la premire tape, celle de la recherche de ladresse IP dun serveur de la zoneparente. Pour cela, demandons notre serveur de chercher lenregistrement NS de cette
[12/01/08]
DNS et Bind
75
zone-parente. Utilisons nouveau nslookup, mais en ajoutant loption type=ns pour indiquer de rechercher des enregistrements de serveurs de noms. Voici un exemple. Supposons que nous soyons en cours dinitialisation de la zone hp.com ; nous devons trouver les serveurs de noms de com, notre parent :
% nslookup -type=ns com. Server: toystory.movie.edu Address: 192.249.249.3#53 Non-authoritative answer: com nameserver = i.gtld-servers.net com nameserver = j.gtld-servers.net com nameserver = k.gtld-servers.net com nameserver = l.gtld-servers.net com nameserver = m.gtld-servers.net com nameserver = a.gtld-servers.net com nameserver = b.gtld-servers.net com nameserver = c.gtld-servers.net com nameserver = d.gtld-servers.net com nameserver = e.gtld-servers.net com nameserver = f.gtld-servers.net com nameserver = g.gtld-servers.net com nameserver = h.gtld-servers.net a.gtld-servers.net a.gtld-servers.net b.gtld-servers.net b.gtld-servers.net c.gtld-servers.net d.gtld-servers.net e.gtld-servers.net f.gtld-servers.net g.gtld-servers.net h.gtld-servers.net i.gtld-servers.net j.gtld-servers.net k.gtld-servers.net l.gtld-servers.net m.gtld-servers.net internet address = 192.5.6.30 AAAA IPv6 address = 2001:503:a83e::2:30 internet address = 192.33.14.30 AAAA IPv6 address = 2001:503:231d::2:30 internet address = 192.26.92.30 internet address = 192.31.80.30 internet address = 192.12.94.30 internet address = 192.35.51.30 internet address = 192.42.93.30 internet address = 192.54.112.30 internet address = 192.43.172.30 internet address = 192.48.79.30 internet address = 192.52.178.30 internet address = 192.41.162.30 internet address = 192.55.83.30
Nous devons ensuite interroger lun de ces serveurs pour rechercher les enregistrements NS de notre zone. Nous utilisons nouveau nslookup avec type=ns, mais aussi avec loption norecurse pour indiquer de ne pas effectuer de recherche rcursive. Enn, il faut interroger directement le serveur de noms de la zone-parente, au lieu denvoyer la requte un serveur de noms local (votre serveur de noms contient des enregistrements NS de votre zone, mais ce nest pas ceux-l que vous cherchez). Pour cela, il suft dajouter le nom de lun des serveurs de la zone-parente la n de la ligne de commande nslookup. Ci-dessous, nous interrogeons b.gtld-servers.net, lun des serveurs de com, concernant lenregistrement NS de hp.com :
% nslookup -type=ns -norecurse hp.com. b.gtld-servers.net. Server: b.gtld-servers.net
[12/01/08]
DNS et Bind
76
Address: 192.33.14.30#53 Non-authoritative answer: hp.com nameserver = am1.hp.com hp.com nameserver = am3.hp.com hp.com nameserver = ap1.hp.com hp.com nameserver = eu1.hp.com hp.com nameserver = eu2.hp.com hp.com nameserver = eu3.hp.com am1.hp.com am3.hp.com ap1.hp.com eu1.hp.com eu2.hp.com eu3.hp.com internet internet internet internet internet internet address address address address address address = = = = = =
Tout montre que la dlgation pour hp.com est correcte, comme nous pouvions nous en douter. Si votre serveur a recherch avec succs ftp.rs.internic.net et quil trouve aussi les serveurs de noms de votre domaine-parent, ce serveur est correctement initialis. Vous pouvez maintenant contacter le reste de lInternet. Si les serveurs de noms de votre zoneparente ne contiennent pas denregistrements NS, votre zone nest pas dclare auprs de votre parent. Dans un premier temps, ce nest pas un problme, car les htes de votre domaine peuvent rechercher des noms internes ou externes, envoyer des courriels et tablir des sessions FTP vers des htes locaux ou distants. Dans un second temps, labsence de dclaration auprs du parent posera assez rapidement de gros problmes, car les htes extrieurs votre zone ne pourront pas rechercher les noms de vos htes, vous ne pourrez peut-tre pas envoyer des courriers vers lextrieur et encore moins recevoir de rponse. Pour rsoudre ce problme, contactez le responsable de votre zoneparente et demandez lui de tester la dlgation de votre zone.
Si vous ne trouvez rien, ajoutez au chier de dmarrage appropri des lignes semblables aux suivantes, quelque part aprs linitialisation des interfaces rseau par ifcong :
if test -x /usr/sbin/named -a -f /etc/named.conf then
[12/01/08]
DNS et Bind
Dmarrer un serveur-esclave
echo "Dmarrage de named" /usr/sbin/named fi
77
Pour dmarrer le service de noms, vous pouvez ventuellement attendre que la route par dfaut soit initialise ou que le dmon de routage (routed ou gated) soit dmarr, selon que ce dmon a besoin du service de noms ou quil se contente de /etc/hosts. Cherchez le chier de dmarrage qui initialise le nom dhte. Remplacez le paramtre de hostname(1) par un nom complet. Ici, nous avons remplac :
hostname toystory
par :
hostname toystory.movie.edu
Dmarrer un serveur-esclave
Pour la robustesse, il est ncessaire dinitialiser un autre serveur de noms. Vous pouvez initialiser plus de deux serveurs de noms, deux tant un minimum : si vous avez un seul serveur et quil vient sarrter, plus personne ne peut effectuer de recherche. Un second serveur partage la charge avec le premier ou la reoit en totalit si le premier est arrt. Vous pourriez initialiser un autre serveur primaire, mais cela est dconseill ; il vaut mieux dmarrer un serveur-esclave. Vous pourrez toujours le transformer en serveur primaire, si vous avez du temps consacrer lexploitation de plusieurs serveurs primaires. Un serveur sait sil est serveur primaire ou esclave dune zone grce au chier named.conf. Lenregistrement NS nindique pas qui est le serveur primaire ou qui est le serveur-esclave dune zone, il indique seulement qui sont les serveurs (cela dit, le DNS na pas besoin de le savoir : les serveurs-esclaves sont aussi valables que les serveurs primaires pour rsoudre les noms). La diffrence fondamentale entre un serveur primaire et un serveur-esclave est lorigine des donnes. Un serveur primaire obtient les donnes partir de chiers, alors quun esclave les obtient dun autre serveur de noms, via le rseau. Ce dernier processus sappelle un transfert de zone. Un serveur-esclave nest pas oblig dobtenir ses donnes dun serveur primaire ; il peut les obtenir dun autre serveur-esclave. Un serveur-esclave prsente lavantage de navoir grer quun seul jeu de donnes, celui situ sur le serveur primaire. Il est inutile de vous soucier de la synchronisation entre les serveurs de noms : les esclaves le font pour vous. Toutefois, un esclave ne se resynchronise pas instantanment : il teste rgulirement sa validit. Lintervalle de scrutation est lune des valeurs de lenregistrement SOA que nous navons pas encore dcrite (comme nous le prciserons plus loin, BIND 8 et 9 disposent dun mcanisme pour acclrer la distribution des donnes de la zone). Un serveur-esclave na pas besoin de tlcharger la totalit des chiers de zone depuis un autre serveur. Les chiers db.cache et db.127.0.0 sont les mmes sur un serveur primaire et sur un esclave. Il suft den garder une copie sur lesclave, ce qui signie que pour 0.0.127.in-addr.arpa, un esclave est serveur primaire. Bien sr, vous pourriez le
[12/01/08]
DNS et Bind
78
rendre esclave aussi pour 0.0.127.in-addr.arpa, mais comme les donnes de cette zone nvoluent pas, autant le rendre serveur primaire.
Initialisation
Pour initialiser un serveur-esclave, crez un rpertoire pour les chiers de zone sur lhte esclave (par exemple, /var/named) et copiez vers lesclave les chiers /etc/ named.conf, db.cache et db.127.0.0 :
# rcp /etc/named.conf hte:/etc # rcp db.cache db.127.0.0 hte:rpertoire-des-fichiers-db
Vous devez modier /etc/named.conf sur le serveur-esclave. Remplacez chaque occurrence de master par slave, sauf pour la zone 0.0.127.in-addr.arpa, et ajoutez une ligne masters contenant ladresse IP du serveur primaire, qui joue le rle du matre de lesclave pour ces zones. Si la ligne originale du chier de conguration tait :
zone "movie.edu" in { type master; file "db.movie.edu"; };
Cela indique au serveur de noms quil est esclave pour la zone movie.edu et quil doit surveiller lvolution des donnes conserves sur lhte 192.249.249.3. Le serveuresclave conserve une copie de cette zone dans son chier local bak.movie.edu. Pour lUniversit du Cinma, le serveur-esclave a t plac sur lhte wormhole.movie.edu. Partons du chier de conguration de toystory.movie.edu (le serveur primaire) :
options { directory "/var/named"; }; zone "movie.edu" in { type master; file "db.movie.edu"; }; zone "249.249.192.in-addr.arpa" in { type master; file "db.192.249.249"; }; zone "253.253.192.in-addr.arpa" in {
[12/01/08]
DNS et Bind
Dmarrer un serveur-esclave
type master; file "db.192.253.253"; }; zone "0.0.127.in-addr.arpa" in { type master; file "db.127.0.0"; }; zone "." in { type hint; file "db.cache"; };
79
Nous avons copi /etc/named.conf, db.cache et db.127.0.0 vers wormhole.movie.edu, puis modi le chier de conguration :
options { directory "/var/named"; }; zone "movie.edu" in { type slave; file "bak.movie.edu"; masters { 192.249.249.3; }; }; zone "249.249.192.in-addr.arpa" in { type slave; file "bak.192.249.249"; masters { 192.249.249.3; }; }; zone "253.253.192.in-addr.arpa" in { type slave; file "bak.192.253.253"; masters { 192.249.249.3; }; }; zone "0.0.127.in-addr.arpa" in { type master; file "db.127.0.0"; }; zone "." in { type hint; file "db.cache"; };
Le serveur de noms sur wormhole.movie.edu tlcharge movie.edu, 249.249.192.inaddr.arpa et 253.253.192.in-addr.arpa par le rseau, depuis le serveur 192.249.249.3 (toys-
[12/01/08]
DNS et Bind
80
tory.movie.edu). Il sauvegarde galement une copie de ces chiers dans /var/named. Il est judicieux disoler les chiers dans un sous-rpertoire ou de leur ajouter un sufxe tel que bak. En effet, en cas de besoin, il sera plus facile de tous les effacer (ce qui est une opration rare). De plus, cela aidera se souvenir quil sagit de copies des chiers de zone, et dissuadera de les modier directement. Nous donnerons plus loin des prcisions sur ces chiers de sauvegarde. Dmarrez le serveur-esclave. Surveillez les messages dans le chier de syslog, comme vous lavez fait sur le serveur primaire. Comme sur ce dernier, voici la commande pour dmarrer le serveur de noms :
# /usr/sbin/named
Un test, inutile sur un serveur primaire, consiste vrier que lesclave a bien cr les chiers de sauvegarde de zone. Quelques instants aprs le dmarrage de lesclave sur wormhole.movie.edu, nous voyons apparatre bak.movie.edu, bak.192.249.249 et bak.192.253.253 dans le rpertoire /var/named. Cela signie que lesclave a charg avec succs ces zones partir du serveur primaire et en a conserv une copie dans ses chiers. Pour achever la mise en uvre de votre serveur-esclave, essayez les mmes recherches que pour le test du serveur primaire. Le serveur-esclave doit utiliser nslookup pour sinterroger lui-mme. Si le serveur-esclave fonctionne correctement, ajoutez les lignes adquates aux chiers de dmarrage automatique pour que le serveur de noms dmarre automatiquement lors du dmarrage de la machine et que hostname(1) prenne le nom du domaine comme valeur.
Fichiers de sauvegarde
Rien noblige un serveur-esclave sauvegarder une copie des donnes de la zone. Si le serveur-esclave a une copie de sauvegarde, il lutilise au dmarrage, puis il teste sa validit en regardant si le serveur-matre a une version plus rcente de la base de donnes, plutt que de la tlcharger immdiatement. Si le serveur-matre a une version plus rcente, lesclave la tlcharge et la sauvegarde. Pourquoi sauvegarder une copie ? Supposons que le serveur-matre soit arrt lors du dmarrage du serveur-esclave. Ce dernier serait incapable de transfrer la zone et, par consquent, ne pourrait fonctionner comme un serveur de noms pour cette zone tant que le matre naurait pas redmarr. Avec une copie de sauvegarde, lesclave dispose dj de donnes (qui peuvent dailleurs tre primes). Comme lesclave dpend un peu moins du matre, le systme est plus robuste. Pour fonctionner sans copie de sauvegarde, supprimez les lignes le dans le chier de conguration. Nous vous recommandons toutefois dactiver la cration de copies de sauvegarde sur tous vos esclaves. Le cot de leur mise en uvre est minime, et leur intrt est majeur.
[12/01/08]
DNS et Bind
Dmarrer un serveur-esclave
1h 1w 1h ) ; nouvel essai aprs 1 heure ; expiration aprs 1 semaine ; TTL rponse ngative d1 heure
81
Nous navons pas encore expliqu la signication des valeurs places entre parenthses. Le numro de srie sapplique toutes les donnes de la zone. Nous avons logiquement choisi de dmarrer notre numro de srie 1. De nombreux administrateurs trouvent plus pratique dutiliser la date pour le numro de srie, par exemple 2005012301. Ce format est AAAAMMJJNN, o AAAA est lanne, MM le mois, JJ le jour et NN le numro dordre de la modication des donnes de la zone ce jour-l. Quel que soit le format choisi, il est important que ce nombre augmente lors dune mise jour des donnes de la zone. Quand un esclave demande les donnes de la zone un serveur-matre, il recherche dabord son numro de srie. Si celui de lesclave est infrieur celui du matre, les donnes de lesclave sont primes. Dans ce cas, lesclave tlcharge une nouvelle copie de la zone. Si un esclave dmarre et quil na pas de chiers de sauvegarde, il tlcharge toujours la zone. Lorsquon modie les donnes de zone sur le serveur primaire, il faut incrmenter le numro de srie (voir le Chapitre 7). Les quatre champs suivants indiquent des intervalles de temps, par dfaut en seconde : rafrachissement (refresh) Lintervalle de rafrachissement, refresh, indique lesclave la priodicit de test de validit de ses donnes. Lesclave demande lenregistrement SOA de la zone chaque intervalle de rafrachissement. Nous avons choisi trois heures, une valeur raisonnable. Lors de linstallation de leur nouveau poste de travail, la plupart des utilisateurs tolreront un dlai dune demi-journe ouvrable pour la propagation dinformations comme celles des serveurs de noms. En fonction du niveau de service que vous fournissez et de la frquence de modication de vos donnes, augmentez ou diminuez cette valeur. Si vous fournissez un service quotidien, vous pouvez utiliser une valeur de huit heures. Si les donnes ne changent pas souvent ou si tous les esclaves sont disperss (comme les serveurs de la racine), vous pouvez mme utiliser une valeur de 24 heures. nouvel essai (retry) Si lesclave narrive pas contacter le serveur-matre au bout de la priode de rafrachissement (lhte pourrait tre arrt), il essaie de le recontacter selon la priodicit de nouvel essai (retry). Normalement, cette priodicit de nouvel essai est plus courte que celle de rafrachissement, mais ce nest pas une obligation. expiration (expire) Si lesclave narrive pas contacter le matre avant lexpiration de la zone, lesclave arrte sa fonction de serveur : il cesse de rpondre aux requtes car les donnes sont considres trop anciennes pour tre valables. En dautres termes, ce champ signie : Mieux vaut navoir aucune donne que davoir des donnes si anciennes quelles pourraient tre primes . Une expiration au bout dune semaine est une valeur courante. Vous pouvez laugmenter (jusqu un mois), si vous avez souvent des difcults pour atteindre votre serveur primaire. La dure avant expiration expire doit tre suprieure aux priodicits de rafrachissement et de nouvel essai ;
[12/01/08]
DNS et Bind
82
TTL dune rponse ngative (negative caching TTL) Le TTL est la dure de vie (Time To Live). Cette valeur sapplique toutes les rponses ngatives envoyes par les serveurs faisant autorit sur la zone.
Avant BIND 8.2, ce champ est la fois le TTL par dfaut et le TTL sur rponse ngative pour la zone.
Ceux qui connaissent les versions prcdentes de ce livre auront not le changement de format que nous utilisons pour les valeurs numriques du SOA. Initialement, BIND ne comprenait que les valeurs en seconde (cest ce qui fait que de nombreux administrateurs savent quune semaine contient 604800 secondes). Avec toutes les versions de BIND postrieures 4.8.3, on peut utiliser des valeurs symboliques. Ainsi, on peut reprsenter un intervalle de rafrachissement de trois heures par 3h, 180m ou mme 2h60m. On peut aussi utiliser d pour les jours (days) et w pour les semaines (weeks). Choisissez ces valeurs en fonction de votre site. En gnral, des dures plus longues diminuent la charge sur vos serveurs de noms et augmentent le dlai de propagation des mises jour. Inversement, des dures plus courtes augmentent la charge sur vos systmes et acclrent la propagation. Les valeurs utilises dans ce livre devraient convenir dans la plupart des cas. La RFC 1537 recommande les valeurs suivantes pour les serveurs de noms du niveau suprieur :
rafrachissement aprs nouvel essai aprs expiration aprs TTL par dfaut 24 heures 2 heures 30 jours 4 jours
Sur un esclave, les versions de BIND antrieures 4.8.3 cessaient de rpondre aux requtes durant un chargement de zone. BIND a t modi pour taler le chargement dans le temps, de manire rduire la dure dindisponibilit. En consquence, mme en indiquant une trs courte priode de rafrachissement, un esclave ne testera pas obligatoirement sa validit aussi souvent que vous lavez indiqu. BIND tente un certain nombre de chargements de zone, puis attend quinze minutes avant de nouvelles tentatives. La propagation des modications dans une zone a t modie dans BIND 8 et 9 : la technique prcdente existe toujours, mais un mcanisme de notication asynchrone a t ajout. Si votre serveur primaire et vos serveurs-esclaves sont en version 8 ou 9, le serveur primaire signalera une modication de zone aux esclaves dans les quinze minutes suivantes ; les esclaves tenteront immdiatement un chargement de zone, ce qui reviendra raccourcir la priode de rafrachissement. Cette fonction sera dcrite en dtail au Chapitre 10.
[12/01/08]
DNS et Bind
83
Serveurs-matres multiples
Dautres solutions permettent de rendre votre systme plus robuste : vous pouvez indiquer jusqu dix adresses IP de serveurs-matres. Dans un chier de conguration, ajoutez-les aprs la premire adresse IP et terminez-les par un point virgule :
zone "movie.edu" in { type slave; file "bak.movie.edu"; masters { 192.249.249.3; 192.249.249.4; }; };
Depuis BIND 9.3, vous pouvez donner un nom la liste des adresses IP des matres et utiliser ce nom par la suite, ce qui permet dviter de rpter les adresses IP dans chaque zone :
masters "movie-masters" { 192.249.249.3; 192.249.249.4; }; zone "movie.edu" in { type slave; file "bak.movie.edu"; masters { movie-masters; }; };
Lesclave essaie chaque serveur-matre, dans lordre de la liste, jusquau succs du transfert de zone. Jusqu BIND 8.1.2, lesclave transfre la zone partir du premier serveur rpondre, si celui-ci a un numro de srie plus lev que celui de lesclave. Depuis BIND 8.2, lesclave interroge tous les serveurs de noms indiqus et procde au transfert de zone partir du serveur qui a le numro de srie le plus lev. Si plusieurs serveursmatres ont le mme numro de srie, lesclave procde au transfert de zone partir du premier des serveurs de la liste. Lintrt initial de cette caractristique est de pouvoir donner toutes les adresses IP de lhte excutant le serveur primaire de la zone, si cet hte est multi-domicili. Toutefois, comme aucun test nest fait pour savoir si lhte contact est un serveur primaire ou un esclave, vous pouvez indiquer les adresses IP de tous les esclaves de la zone. Ainsi, si le premier serveur-matre est arrt ou inaccessible, le transfert peut seffectuer partir dun autre serveur-matre.
[12/01/08]
DNS et Bind
84
tant serveur primaire de lune et esclave dune autre. Toutefois, la plupart des serveurs qui sont primaires dune zone, le sont galement pour toutes les zones quils servent. Il en est de mme pour les esclaves. Par consquent, lorsque nous disons quun serveur est primaire ou esclave, il lest pour la quasi totalit des zones quil charge.
Et maintenant ?
Dans ce chapitre, nous avons prsent la cration des chiers de zone dun serveur de noms, en partant de /etc/hosts transform en son quivalant pour le DNS, puis linitialisation de serveurs de noms primaire et esclave. Linitialisation de votre zone nest pas encore acheve et sera dveloppe dans les prochains chapitres : vous devez modier les donnes pour la messagerie, prparer les htes de votre zone utiliser vos serveurs, et peut-tre mme dmarrer dautres serveurs de noms. Tous ces sujets sont traits dans les prochains chapitres.
[12/01/08]
DNS et Bind
5
DNS et courrier lectronique
ce moment, Alice commena se sentir toute somnolente, et elle se mit rpter comme si elle rvait : Est-ce que les chats mangent les chauves-souris ? Est-ce que les chats mangent les chauves-souris ? et parfois : Est-ce que les chauves-souris mangent les chats ? car voyez-vous, comme elle tait incapable de rpondre aucune des deux questions, peu importait quelle post lune ou lautre.
Aprs ce dernier chapitre, quelque peu fastidieux, abordons un sujet passionnant et fondamental pour les administrateurs de messagerie : limpact du DNS sur le courrier lectronique. Lun des avantages du systme de noms de domaine sur les tables dhtes est son apport dans le routage du courrier lectronique. Quand les outils de messagerie ne disposaient que du chier HOSTS.TXT (ou de ses drivs comme /etc/hosts), ils pouvaient au mieux livrer le courrier ladresse IP dun hte. En cas dchec, ils pouvaient tenter une nouvelle livraison, ou bien renvoyer le message lexpditeur. Pour pallier ces problmes, le DNS offre la possibilit de dsigner des htes de secours pour la livraison des courriers. Le mcanisme permet galement des htes de prendre en charge la manipulation des messages pour le compte dautres htes, tels que des stations sans disque (diskless) nexcutant pas de routeur de message. la diffrence des tables dhtes, le DNS permet de reprsenter des destinations de courrier par des noms spciques. Ainsi, de nombreux organismes sur lInternet sont joignables par courriel en utilisant directement le nom de leur zone. De mme, dans une zone, des noms reprsentant des destinations de courrier ne sont pas obligatoirement associs un hte en particulier. Enn, une adresse unique de destination peut reprsenter plusieurs serveurs de messagerie. Par contre, avec les tables dhtes, les destinations de messagerie sont des htes, point nal. Lensemble de ces caractristiques offre une grande souplesse pour la mise en uvre dune messagerie sur un rseau.
[12/01/08]
DNS et Bind
86
Enregistrements MX
La mise en uvre des caractristiques tendues de routage se fait laide dun type unique denregistrement, lenregistrement MX. lorigine, la fonction remplie aujourdhui par lenregistrement MX tait couverte par deux enregistrements, MD (Mail Destination) et MF (Mail Forwarder). MD indiquait la destination nale de livraison dun message adress un domaine particulier et MF fournissait une adresse alternative de livraison du message en cas dindisponibilit de la destination nale. Les premires mises en uvre du DNS sur ARPAnet ont mis en vidence les problmes lis la sparation de ces deux fonctions. Pour pouvoir se dcider, un routeur de message a besoin simultanment des deux enregistrements MD et MF, sils existent. Mais la recherche explicite dun type denregistrement, MD ou MF, ne provoque le renvoi dune rponse que pour lenregistrement recherch et le stockage en mmoirecache de ce seul enregistrement. Les routeurs de message doivent alors gnrer deux requtes et ne pas tenir compte des valeurs en mmoire cache1. Le service de messagerie produit alors une surcharge plus importante que les autres, ce qui peut se rvler inacceptable. Aussi les deux enregistrements ont-ils t intgrs en un seul, lenregistrement MX. Ds lors, un routeur de message a uniquement besoin des enregistrements MX dun domaine particulier pour prendre sa dcision de routage. De plus, lutilisation de la mmoire cache est possible avec les enregistrements MX, tant que les TTL concordent. Les enregistrements MX dsignent un hte appel changeur de message (mail exchanger), qui tantt traite le courrier, tantt le transfre pour un domaine. Le traitement du courrier consiste livrer le courrier ladresse indique ou le passer un autre agent de transport, tel que X.400. Le transfert du courrier signie son envoi vers sa destination nale ou vers un autre changeur de messages plus proche de la destination, via SMTP (Simple Mail Transfer Protocol). Le transfert implique parfois le placement du message en le dattente. An dviter les boucles de route, lenregistrement MX contient un paramtre supplmentaire, la valeur de prfrence. Cette valeur est un nombre entier naturel sur 16 bits (de 0 65535) qui indique la priorit dun changeur. Dans lexemple suivant, lenregistrement MX :
peets.mpk.ca.us. IN MX 10 relay.hp.com.
indique que relay.hp.com est un changeur de message pour peets.mpk.ca.us avec une valeur de prfrence gale 10. Lensemble des valeurs de prfrence de tous les changeurs pour une destination donne indique lordre dans lequel un routeur doit utiliser les changeurs. La valeur de
1.
NdT : la RFC 973 explique bien lorigine du problme (page 4, MD and MF replaced by MX) : un routeur de message effectuant une recherche des deux types denregistrement ne peut pas utiliser la mmoire cache car celle-ci pourrait dj contenir le rsultat dune recherche de MD ou dune recherche de MF. Or la prsence de lun de ces enregistrements en mmoire cache nimplique strictement rien sur lautre type denregistrement. Par consquent, les routeurs de messages doivent systmatiquement consulter des serveurs faisant autorit ou accepter dventuelles informations incompltes.
[12/01/08]
DNS et Bind
Enregistrements MX
87
prfrence na pas dimportance en elle-mme ; elle nest utile que compare avec celles des autres changeurs. moins quil ny en ait dautres en jeu, les enregistrements :
plange.puntacana.dr. IN MX 1 listo.puntacana.dr. plange.puntacana.dr. IN MX 2 hep.puntacana.dr.
Les routeurs de message doivent dabord tenter la livraison vers les changeurs ayant la plus petite valeur de prfrence. Lchangeur choisi en premier est donc celui qui a la plus petite valeur de prfrence, ce qui nest a priori pas trs intuitif. On peut simplier la reprsentation en affectant la valeur 0 au meilleur changeur. Si la livraison vers le ou les changeurs de meilleure prfrence choue, un routeur doit tenter la livraison vers les changeurs de prfrence moindre, dans lordre croissant des valeurs de prfrence. Autrement dit, les routeurs doivent utiliser les changeurs prfrentiels avant dessayer les changeurs prfrence moindre. Plusieurs changeurs peuvent avoir la mme prfrence et le routeur doit effectuer un choix. Un routeur doit obligatoirement tenter dutiliser tous les changeurs dun mme niveau avant dessayer un changeur de prfrence moindre. Par exemple, les enregistrements MX pour oreilly.com pourraient tre :
oreilly.com. oreilly.com. oreilly.com. IN IN IN MX MX MX 0 ora.oreilly.com. 10 ruby.oreilly.com. 10 opal.oreilly.com.
Ces enregistrements MX indiquent aux routeurs de tenter dutiliser les changeurs dans lordre suivant pour crire oreilly.com : 1. ora.oreilly.com. 2. Soit ruby.oreilly.com, soit opal.oreilly.com. 3. Lchangeur de prfrence 10 non utilis en 2). Bien sr, une fois le message livr lun des changeurs de oreilly.com par le routeur, ce dernier cesse ses tentatives : un routeur ayant livr un message ora.oreilly.com na nul besoin de tenter des livraisons vers ruby.oreilly.com ou opal.oreilly.com. oreilly.com ne dsigne pas un hte mais la zone principale directe de OReilly. OReilly utilise le nom du domaine comme destination du courrier pour lensemble de son personnel. Pour un expditeur, il est effectivement plus facile de retenir oreilly.com que ruby.oreilly.com ou amber.oreilly.com, selon lemplacement de la bote aux lettres dun employ. Cela requiert que ladministrateur du routeur de messages sur ora.oreilly.com gre un chier dalias rpertoriant lensemble des utilisateurs de OReilly, an de rediriger pour chacun le courrier vers la machine sur laquelle il sera lu ou de grer un serveur permettant un accs distant un serveur de botes aux lettres, tel quun serveur POP ou IMAP . Que se passe-t-il si une destination na pas denregistrements MX mais un ou plusieurs enregistrements A ? Cela fera-t-il chouer un routeur dans la livraison dun message cette destination ? Vous pouvez compiler une version rcente de sendmail pour obtenir ce dernier comportement. Toutefois, la plupart des diteurs proposent un sendmail plus
[12/01/08]
DNS et Bind
88
clment : sil ny a pas denregistrements MX mais un ou plusieurs enregistrements A, le routeur tente au minimum la livraison ladresse de lhte. Il faut consulter la documentation spcique pour voir si le serveur enverra des courriers vers des destinations ne correspondant qu des enregistrements dadresse. Bien que quasiment tous les routeurs soient capables de livrer des messages vers des destinations rpertories uniquement par des enregistrements dadresse, il est bon dinitialiser au moins un enregistrement MX pour chaque destination lgitime. En effet, la plupart des routeurs, dont sendmail, recherchent dabord lenregistrement MX dune destination chaque fois quils ont besoin dy livrer un courrier. Si cette destination nest pas associe un enregistrement MX, un serveur de noms (en gnral parmi ceux faisant autorit) le signale et sendmail recherche alors des enregistrements A. Cette procdure prend du temps, ralentit la livraison des courriers et augmente lgrement la charge sur les serveurs de noms faisant autorit sur votre zone. Si, pour chaque destination, vous crez un enregistrement MX dsignant un nom associ ladresse qui serait obtenue par une recherche dadresse pour cette destination, sendmail ne gnre quune seule requte et le serveur de noms local place lenregistrement MX dans sa mmoire cache. Enn, notons que nous ne pouvons pas utiliser une adresse IP la place dun nom pour dsigner lchangeur de messages (dans le champ suivant la valeur de prfrence). En effet, certains routeurs de messagerie sont assez souple et acceptent une adresse IP mais , dautres ne le sont pas et la livraison des courriers pourrait chouer de manire imprvisible.
Notre FAI gre un serveur SMTP de secours, de manire prendre en charge et mettre en attente les courriers qui nous sont destins lorsque que notre propre serveur ou notre connexion est hors service. Pour informer les routeurs de messagerie de lInternet dessayer lchangeur de notre FAI si postmanrings2x est indisponible, nous ajoutons un autre enregistrement MX au chier de zone de movie.edu :
movie.edu. IN MX 20 smtp.isp.net.
changeurs de messages
Le concept dchangeur de message est probablement nouveau pour la plupart dentre vous. Nous allons donner quelques dtails laide de lanalogie entre un changeur de message et un aroport, et de celle entre les enregistrements MX (qui indiquent aux routeurs o envoyer les messages) et les indications que vous donnez vos beaux-
[12/01/08]
DNS et Bind
changeurs de messages
89
parents, qui reviennent de Martinique, sur laroport de destination utiliser pour quils se rendent chez vous. Vous habitez Aix-en-Provence. Les aroports les plus proches sont ceux de Marseille Marignane, puis de Lyon Saint-Exupry et enn de Paris Charles-de-Gaulle (on choisit de ne pas tenir compte des diffrences tarifaires, du trac local, etc). En faisant un parallle avec les enregistrements MX, on obtient :
aix-en-provence.fr. aix-en-provence.fr. aix-en-provence.fr. IN IN IN MX MX MX 1 marseille.fr. 2 lyon.fr. 3 paris.fr.
La liste des MX est une liste ordonne de destinations qui indique aux changeurs (les aroports) o orienter un message (vos beaux-parents) destin une certaine destination (votre maison). La valeur de prfrence les informe sur la meilleure destination viser (on peut imaginer une sorte de distance logique par rapport la destination nale ou une sorte de Top 50 des proximits entre les changeurs de messages et la destination nale). La liste ci-dessus conseille dutiliser en priorit laroport de Marseille, sinon celui de Lyon, sinon celui de Paris, dans cet ordre. Elle indique aussi que si on a choisi Lyon, il faudra prendre une correspondance pour Marseille et que si on a choisi Paris, il faudra en prendre une pour Marseille ou au pire pour Lyon. Les qualits dun bon changeur de message sont les mmes que celles dun bon aroport : Dimension Personne ne voudrait passer par le minuscule aroport de Gap pour se rendre Aix-en-Provence, car il nest pas quip pour accueillir des gros porteurs ou de nombreux voyageurs (il serait plus facile de faire atterrir un jet sur lautoroute plutt qu Gap !). De la mme manire, personne ne voudrait utiliser un hte ancien et lent comme changeur de message, car il ne supporterait pas la charge. Disponibilit Le passage par un aroport trop souvent ferm en hiver peut savrer problmatique. De mme, il serait ridicule dinstaller un changeur de message sur un hte rarement en service ou rarement disponible. Connectivit Si des voyageurs viennent de loin, il faut sassurer quils peuvent trouver un vol direct vers au moins lun des aroports de la liste. On ne va pas leur dire quils nont le choix quentre Marseille et Paris sils partent de Tombouctou. De mme, il faut sassurer quau moins un changeur de message est accessible pour chaque correspondant. Gestion La qualit de la gestion dun aroport a un impact sur sa scurit et sa facilit dutilisation. De mme, la condentialit du courrier, la rapidit de sa livraison en service normal, son traitement en cas darrt de lhte, dpendent de la qualit de la gestion de lchangeur de message. Gardons ces exemples en mmoire car nous nous y rfrerons plus loin.
[12/01/08]
DNS et Bind
90
Algorithme des MX
Entrons maintenant dans le dtail des enregistrements MX et des changeurs de messages. Pour viter les boucles de route, les routeurs de messages utilisent un algorithme lgrement plus complexe que ce qui a t dcrit prcdemment, lorsquils choisissent la destination du courrier2. Imaginons ce qui se passerait si les routeurs ne se protgeaient pas des bouclages de route. Supposons quun courrier vantant (ou fustigeant) la qualit de ce livre parte en direction de nuts@oreilly.com, mais que ora.oreilly.com soit arrt. Regardons les enregistrements MX de oreilly.com :
oreilly.com. oreilly.com. oreilly.com. IN IN IN MX MX MX 0 ora.oreilly.com. 10 ruby.oreilly.com. 10 opal.oreilly.com.
Votre routeur choisit alors denvoyer le message ruby.oreilly.com, qui est actuellement en service. Le routeur de ruby.oreilly.com essaie ensuite de retransmettre le message vers ora.oreilly.com mais ne peut pas le faire car ora.oreilly.com est toujours larrt. Si ruby.oreilly.com nest pas attentif ce quil fait, il va envoyer le message opal.oreilly.com, ou peut-tre lui-mme. Si ruby.oreilly.com se lexpdie, il sagit dune boucle de route. Si ruby.oreilly.com envoie le message opal.oreilly.com, opal.oreilly.com le renverra son tour soit ruby.oreilly.com soit lui-mme, ce qui constitue aussi une boucle. Pour viter ces boucles, les routeurs annulent certains enregistrements MX avant de prendre leur dcision. Un routeur classe la liste des enregistrements selon la valeur de prfrence, puis cherche son propre nom canonique dans cette liste. Sil est lun des changeurs de message, il annule son enregistrement MX ainsi que tous les enregistrements MX dont la valeur de prfrence est identique ou suprieure (cest--dire ceux des changeurs moins bien placs). Cela vite que le routeur sadresse des messages luimme ou les adresse des routeurs plus loigns . Reprenons notre analogie avec les aroports. Un voyageur (un message) veut se rendre de Clermont-Ferrand Tarbes. Il ny a pas de vol direct mais il peut passer soit par Toulouse, soit par Lyon (les deux changeurs de messages suivants dans la liste). Puisque Toulouse est le plus proche de Tarbes, cest celui que choisit le passager. Une fois arriv Toulouse, il serait insens de se rendre Lyon, plus loign de la destination nale (un changeur de message prfrence moindre) ou, pire encore, de se rendre de Toulouse Toulouse. La seule solution acceptable consiste prendre un vol Toulouse/Tarbes. Le voyageur limine donc les destinations les moins utiles pour viter de tourner en rond et de perdre du temps. Attention, la plupart des routeurs de messages ne cherchent que leur nom canonique dans la liste des enregistrements MX. Ils ne recherchent pas les alias (les noms situs gauche dans les enregistrements CNAME). Si on nutilise pas exclusivement des noms canoniques dans les enregistrements MX, il nest pas garanti quun routeur trouve son propre nom dans la liste et on risque dobtenir une boucle. Si on dclare un changeur de messages laide dun alias et que ce routeur tente de se livrer un message lui-mme, la plupart des routeurs dtecteront la boucle et renver2. Cet algorithme est bas sur la RFC 974 qui dcrit le routage des messages dans lInternet.
[12/01/08]
DNS et Bind
Algorithme des MX
91
ront le courrier avec un message derreur. Voici le message renvoy par les versions rcentes de sendmail :
554 MX list for movie.edu points back to relay.isp.com 554 <root@movie.edu>... Local configuration error
Ce message remplace ltrange Je refuse de dialoguer avec moi-mme (I refuse to talk to myself) des anciennes versions de sendmail. Conclusion : dans un enregistrement MX, utilisez toujours le nom canonique de lchangeur. Attention nouveau, les changeurs de messages que vous utilisez doivent avoir des enregistrements dadresse. Un routeur a besoin de ladresse de chaque changeur pour pouvoir essayer de lui livrer le courrier. Revenons lexemple de oreilly.com. Lorsque ruby.oreilly.com reoit le message envoy par votre poste de travail, son routeur teste la liste des enregistrements MX :
oreilly.com. oreilly.com. oreilly.com. IN IN IN MX MX MX 0 ora.oreilly.com. 10 ruby.oreilly.com. 10 opal.oreilly.com.
Il trouve son nom dans la liste, associ une prfrence de 10 et abandonne alors tous les enregistrements de valeur gale ou suprieure 10 (ceux en gras dans la liste cidessous) :
oreilly.com. oreilly.com. oreilly.com. oreilly.com. IN IN IN IN MX MX MX MX 0 ora.oreilly.com. 10 ruby.oreilly.com. 10 opal.oreilly.com. 0 ora.oreilly.com.
pour ne conserver que : Puisque ora.oreilly.com est arrt, ruby.oreilly.com diffre la livraison et place le message en le dattente. Si un routeur dcouvre quil a lui-mme la meilleure prfrence (la plus petite valeur), il abandonne la liste complte. Dans certains cas, le routeur essaie encore de livrer le courrier ladresse IP de lhte de destination. Il peut sagir dune erreur, provenant du fait que le DNS dsigne ce routeur comme destination nale du courrier et que le routeur na pas t congur pour le garder. Lerreur peut aussi venir du fait que ladministrateur a mal class les enregistrements MX en attribuant de mauvaises valeurs de prfrence. Supposons que ladministrateur du domaine acme.com a ajout un enregistrement MX pour diriger le courrier adress acme.com vers son fournisseur daccs lInternet :
acme.com. IN MX 10 mail.isp.net.
La plupart des routeurs doivent tre congurs pour reconnatre leurs alias ainsi que les noms des htes pour lesquels ils traitent le courrier. moins que le routeur sur mail.isp.net ne soit congur pour conserver le courrier adress acme.com, il suppose quon lui demande de relayer le courrier et de le retransmettre vers un changeur plus proche que lui de la destination nale3. Lorsquil recherche lenregistrement MX
3.
moins, bien sr, que le routeur de mail.isp.net ne soit congur pour ne pas relayer le courrier des domaines inconnus.
[12/01/08]
DNS et Bind
92
dacme.com, il trouve quil est lui-mme lchangeur le mieux plac et renvoie alors le courrier lexpditeur avec le classique message :
554 MX list for acme.com points back to mail.isp.net 554 <root@acme.com>... Local configuration error
De nombreuses versions de sendmail utilisent la classe w ou le chier de classe w pour dnir les destinations pour lesquels le routeur doit conserver le courrier (destinations locales ). En fonction de votre chier sendmail.cf, lajout dun alias peut se faire simplement grce laddition dune ligne au chier sendmail.cf :
Cw acme.com
Vous avez remarqu que nous utilisons des multiples de 10 pour la valeur de prfrence. Cette valeur est pratique, car elle permet dintercaler facilement des enregistrements MX provisoires dans la liste sans modier les autres enregistrements. On pourrait tout aussi bien utiliser des incrments de 100, leffet serait le mme. 4
4. 5.
NdT : Pour la mme raison, il peut tre intressant dviter la valeur de prfrence 0 an de pouvoir ajouter un nouvel changeur de messages en dbut de liste. Dailleurs, SPF est issu dune proposition appele MX inverse (Reverse MX) de Hadmut Danisch.
[12/01/08]
DNS et Bind
93
Le premier champ de la partie donnes, v=spf1, identie cet enregistrement TXT comme tant un enregistrement SPF. Il est ncessaire, car les enregistrements TXT servent de nombreuses autres fonctions, dont la publication de commentaires textuels, et il ne faudrait pas que des routeurs de messagerie cherchent interprter des commentaires comme tant des informations SPF. Sil merge, SPF se verra peut-tre attribuer un enregistrement de ressource spcique SPF et lexpression initiale deviendra inutile. Les deux champs suivant annoncent que le courrier provenant de oreilly.com peut provenir de toutes les adresses IP des serveurs smtp1.oreilly.com et smtp2.oreilly.com. Le signe + initial permet de qualier linformation et indique que les courriers expdis partir des adresses IP de ces htes sont autoriss. Les quatre valeurs de qualication possibles sont : + ~ ? Autorisation (Pass) : un serveur correspondant au schma est valide. Refus (Fail) : un serveur correspondant au schma nest pas valide. Refus probable (SoftFail) : un serveur correspondant au schma nest probablement pas valide et le message doit tre trait avec attention. Neutre (Neutral) : aucun effet.
La valeur par dfaut est + (pass) et ce signe peut tre omis. Le dernier champ, all, indique que tout autre expditeur au nom de oreilly.com nest pas valide. Un autre moyen permet dannoncer les expditeurs valides. Puisque les enregistrements MX de oreilly.com contiennent les deux serveurs SMTP smtp1.oreilly.com et smtp2.oreilly.com, le gestionnaire de la messagerie peut crer lenregistrement TXT simpli suivant :
oreilly.com. IN TXT "v=spf1 +mx all"
Lorsquil ne sont pas suivis de : et dun paramtre, les directives telles que a et mx reprennent implicitement le nom de lenregistrement. Ainsi, +mx est quivalent, ici, +mx:oreilly.com. Voici la liste des directives utilises dans les enregistrements TXT de SPF : a Dnit le nom dun serveur de messagerie dont la ou les adresses sont autorises expdier du courrier au nom utilis pour lenregistrement. mx Indique que les changeurs de message sont autoriss expdier du courrier au nom utilis pour lenregistrement. ip4 Dnit ladresse IP(v4) dun serveur de messagerie, autorise expdier du courrier au nom utilis pour lenregistrement. On peut aussi dnir un rseau, en notation CIDR (tel que 192.168.0.0/24). Notons que les quatre octets du rseau doivent tre dnis.
[12/01/08]
DNS et Bind
94
ip6
Dnit ladresse IPv6 dun serveur de messagerie, autorise expdier du courrier au nom utilis pour lenregistrement. On peut aussi dnir un rseau, en notation RFC 3513. ptr Requiert quil existe un enregistrement PTR pour ladresse du serveur dexpdition. Lenregistrement PTR doit correspondre un nom se terminant par le nom de lenregistrement TXT ou par celui indiqu aprs le : . Ainsi, +ptr:oreilly.com indique que le courrier doit tre envoy dune adresse correspondant un nom se terminant par oreilly.com. Les enregistrements SPF supportent aussi la directive redirect qui permet plusieurs noms denregistrement de partager un ensemble de dnitions SPF. Ainsi, supposons que ladministrateur de oreilly.com veuille que les noms ca.oreilly.com et ma.oreilly.com partagent les rgles dj tablies pour oreilly.com. Pour ne pas dupliquer lenregistrement TXT de oreilly.com, il peut initialiser lenregistrement TXT suivant :
ca.oreilly.com. IN TXT "v=spf1 redirect=oreilly.com" ma.oreilly.com. IN TXT "v=spf1 redirect=oreilly.com"
Cela indique aux routeurs de se rfrer aux enregistrements SPF de oreilly.com lorsquil recherche quels sont les expditeurs valides pour ca.oreilly.com et ma.oreilly.com. De cette manire, ladministrateur na plus qu grer un seul enregistrement SPF. La directive include a une fonction similaire et permet de se rfrer une conguration SPF gre par quelquun dautre. Ainsi, si ladministrateur de oreilly.com veut aussi autoriser tout expditeur valide de isp.net envoyer du courrier au nom de oreilly.com, il peut complter lenregistrement TXT de oreilly.com :
oreilly.com. IN TXT "v=spf1 +mx include:isp.net all"
Notons que le sparateur entre include et son argument est : , alors que le sparateur entre redirect et son argument est = . Voici maintenant deux conseils. Il est bon, au dbut, dutiliser ?all ou ~all dans vos enregistrements SPF car, de manire surprenante, il est difcile dnumrer tous les expditeurs valides de votre entreprise. En effet, vous pouvez avoir des utilisateurs distants qui grent leur propre serveur de messagerie, des utilisateurs mobiles qui expdient partir de leur PDA en utilisant ladresse lectronique de lentreprise, etc. Il ne faudrait pas les isoler par inadvertance. Si vos enregistrements SPF sont longs et complexes, ils peuvent dpasser la limite autorise dans un enregistrement TXT, soit 255 octets. Dans ce cas, vous pouvez rpartir lenregistrement dans plusieurs enregistrements TXT, chacun deux commenant par une directive v=spf1. Ils seront tous concatns avant valuation. Terminons par deux mises en garde. Souvenons-nous que, mme si vous publiez une information SPF, seuls les routeurs qui supportent SPF les rechercheront et les utiliseront. ce jour, ils constituent une trs petite proportion des routeurs de lInternet (pourtant, la publication denregistrements SPF ne fait aucun mal, alors pourquoi ne pas le faire ?). De plus, il faut savoir que SPF peut changer, ne jamais vritablement merger ou tre supplant par dautres procds.
[12/01/08]
DNS et Bind
6
Prparation des clients
trange troupe en vrit, que celle qui sassembla sur la rive : oiseaux aux plumes mouilles, animaux dont la fourrure collait au corps, tous tremps comme des soupes, mal laise et de mauvaise humeur.
Une fois les serveurs de noms du domaine oprationnels, les clients doivent tre prpars pour les utiliser ; il faut initialiser les resolvers, ce qui consiste essentiellement leur dnir les serveurs de noms interroger et leur domaine dappartenance. Ce chapitre dcrit ces diffrentes oprations ainsi que la mise en uvre des resolvers des principaux Unix et de ceux de Windows 2000, 2003 et XP (qui sont essentiellement les mmes).
Le resolver
Les resolvers ont t voqus au Chapitre 2. Le resolver est le client du systme de noms de domaine. Il transforme la question pose par un programme en requte envoye au serveur de noms et traduit la rponse reue avant de la transmettre au programme. Jusquici, il na pas encore t ncessaire de proposer une conguration de resolver. En effet, lors de linitialisation des serveurs au Chapitre 4, le comportement par dfaut du resolver tait sufsant pour les tests. Mais si nous voulons en tirer plus ou si nous voulons un comportement autre que celui par dfaut, nous devrons congurer le resolver. Le comportement du resolver dcrit dans les prochaines sections est celui de BIND 8.4.6, sans autre service de noms que le DNS. Certains resolvers commerciaux sont bass sur des versions plus anciennes ou disposent de fonctions spciales permettant de modier lalgorithme de rsolution. Les diffrences signicatives de comportement de BIND 8.4.6 et des versions prcdentes (particulirement pour les versions 4.8.3 et 4.9) seront signales lorsque ncessaire. Nous dcrirons galement certaines extensions spciques plus loin dans ce chapitre.
[12/01/08]
DNS et Bind
96
Congurer le resolver
Dans la plupart des cas, on peut congurer au moins trois lments du comportement des resolvers : le nom du domaine local, la liste de recherche et les serveurs de noms interrogs par le resolver. De nombreux resolvers commerciaux acceptent des extensions non standard du DNS. Certaines de ces extensions sont parfois ncessaires au fonctionnement de logiciels tels que le service NIS (Network Information Services1) de Sun, dans dautres cas il sagit simplement dune valeur commerciale ajoute. Lessentiel de la conguration dun resolver se fait dans le chier /etc/resolv.conf (ou ventuellement dans /usr/etc/resolv.conf ; il est ncessaire de consulter le manuel du resolver, habituellement dans la section 4 ou 5 de la documentation Unix, pour sen assurer). Cinq directives principales apparaissent dans resolv.conf : domain, search, nameserver, sortlist et options. Elles contrlent le comportement du resolver.
suppose que lhte de nom relay est dans le domaine local, car il serait insens de valider directement laccs tous les utilisateurs bernie de tous les htes de lInternet dont le nom quali commence par relay. Les chiers tels que hosts.equiv ou hosts.lpd fonctionnent de la mme manire. Le nom du domaine local se dduit normalement de hostname : le domaine local suit le premier . du nom. Si le nom ne comporte pas de . , on suppose que le domaine local est le domaine racine. Ainsi, hostname asylum.sf.ca.us xe le domaine local sf.ca.us, alors que hostname dogbert implique un domaine racine local (ce qui est probablement incorrect, tant donn quil ny a que trs peu dhtes immdiatement sous la racine2). On peut aussi xer le nom du domaine local laide de la directive domain dans resolv.conf. Si cette directive apparat, elle a priorit sur hostname. La syntaxe de la directive domain est simple mais rigoureuse car le resolver ne signale pas les erreurs. Le mot-cl domain doit dbuter la ligne, tre suivi dun ou de plusieurs espaces (ou tabulations), puis du nom du domaine. Le domaine local scrit sans point nal :
domain colospgs.co.us
Dans les anciennes versions de resolver de BIND (avant 4.8.3), les espaces ne sont pas autoriss en n de ligne, car ils apparaissent alors la n du nom du domaine local. La variable denvironnement LOCALDOMAIN est une autre mthode pour xer le nom
1. 2.
Le nom NIS remplace le nom Yellow Pages (pages jaunes) ou YP en raison dun copyright de la , compagnie britannique de tlphone sur le nom Yellow Pages. Certains noms un seul terme dsignent directement des adresses. Cest le cas, par exemple, de cc.
[12/01/08]
DNS et Bind
Configurer le resolver
97
du domaine local. Elle permet chaque utilisateur de rgler individuellement son domaine local. Par exemple, une machine situe dans un centre de calcul accueille de nombreux utilisateurs provenant dautres domaines. Chaque utilisateur effectue lessentiel de son travail dans son domaine dorigine. Avec LOCALDOMAIN, il peut xer le nom du domaine local celui de son domaine dorigine. Quelle mthode utiliser ? hostname, la directive domain ou la variable denvironnement LOCALDOMAIN ? Les exemples de ce livre utilisent hostname, essentiellement car cest la mthode utilise Berkeley et parce quelle parat plus claire puisquelle requiert moins de congurations explicites. De plus, certains logiciels de Berkeley (particulirement ceux qui utilisent lappel la bibliothque ruserok() pour authentier les utilisateurs) nautorisent des noms courts dans les chiers hosts.equiv que dans le cas o hostname est un nom totalement quali. Pour les logiciels qui nacceptent pas de noms dhte longs, il est possible dutiliser la directive domain. La commande hostname continue renvoyer des noms courts et le resolver utilise le nom de domaine issu de resolv.conf. Enn, LOCALDOMAIN peut tre intressante sur des htes accueillant de nombreux utilisateurs.
La liste de recherche
Le nom du domaine local, quil provienne de hostname ou de resolv.conf, xe la liste de recherche par dfaut. Cette liste facilite le travail des utilisateurs : un nom non totalement quali sera recherch parmi les domaines numrs dans cette liste. La plupart des commandes Unix (telles que telnet, ftp, rlogin et rsh) qui acceptent un nom comme argument appliquent la liste de recherche largument. La manire dont la liste par dfaut est extraite des chiers puis applique aux arguments a chang entre BIND 4.8.3 et BIND 4.9. Tous les anciens resolvers se comportent comme celui de la version 4.8.3 et tous les plus rcents (dont celui de BIND 8.4.73) se comportent comme celui de la version 4.9. Avec tout resolver BIND, un nom avec un point terminal indique un nom totalement quali4. Par exemple, le point nal dans la commande :
% telnet ftp.ora.com.
indique quil nest pas ncessaire dajouter dautres domaines au nom, car celui-ci est totalement quali. Ceci est similaire une barre oblique en dbut de chemin dans un systme de chiers Unix ou MS-DOS : les chemins sans barre oblique sont interprts relativement au rpertoire courant, alors que ceux commenant par une barre oblique sont absolus et partent de la racine.
3. 4.
Bien que lISC ait ajout de nouvelles fonctions aux serveurs de noms BIND 8 et 9, le resolver de ces nouvelles versions de BIND est globalement identique celui de BIND 4.9. Le resolver peut prendre en charge un nom avec point terminal, mais ce nest pas le cas de tous les programmes, en particulier de certains agents de messagerie : ils rejettent les adresses avant mme dessayer de les soumettre au resolver.
[12/01/08]
DNS et Bind
98
la liste par dfaut ne contient que cv.hp.com. De plus, la liste de recherche nest gnralement applique quaprs une recherche littrale du nom, ce qui est un comportement nouveau. Si le nom fourni par lutilisateur contient au moins un point, il est recherch tel quel avant lutilisation de la liste de recherche. Ce nest quen cas dchec que la liste de recherche est utilise. Par contre, si le nom ne contient pas de point, la liste de recherche est utilise avant la recherche du nom littral. En effet, lorsquun utilisateur fournit un nom comportant au moins un point, il sagit en gnral dun nom totalement quali sans point terminal. Il est donc plus intressant de rechercher en premier le nom saisi tel quel. Avec les anciennes versions de resolver, plusieurs requtes taient gnres avant lutilisation du nom littral. Par exemple, depuis les resolvers 4.9, lutilisation de :
% telnet pronto.cv.hp.com
provoque tout dabord la recherche de pronto.cv.hp.com (le nom contient trois points, ce qui est plus que un) avant celle de pronto.cv.hp.com.cv.hp.com. Par contre, lutilisation de :
% telnet asap
sur le mme hte provoque dabord la recherche de asap.cv.hp.com (le nom ne contient pas de point) avant celle de asap. Lutilisation de la liste de recherche cesse ds quune requte a abouti. Dans lexemple avec asap, le resolver najoute pas hp.com si asap.cv.hp.com mne une adresse.
la liste de recherche par dfaut contient en premier cv.hp.com (le domaine local), puis hp.com, mais pas com qui ne contient quun seul composant5. Si le nom fourni par lutilisateur contient au moins un point, il est recherch tel quel, aprs que le resolver a ajout chacun des lments de la liste de recherche. La saisie de :
% telnet pronto.cv.hp.com
5.
Les anciens resolvers de BIND najoutent pas le domaine de niveau suprieur car trs peu dhtes sont situs au second niveau de lespace de noms de lInternet : lajout de com ou edu au nom foo a peu de chance de conduire un hte rel et prsente linconvnient de risquer de gnrer une requte inutile vers un serveur de la racine.
[12/01/08]
DNS et Bind
Configurer le resolver
99
sur le mme hte provoque la recherche de asap.cv.hp.com, puis de asap.hp.com, mais pas de asap, puisque le nom saisi ( asap ) ne contient pas de point.
La directive search
Avec tous les resolvers modernes, il est possible de xer explicitement la liste de recherche, nom de domaine par nom de domaine, laide de la directive search. Cette directive permet de modier lordre des domaines dans la liste. La syntaxe de la directive search est similaire celle de la directive domain, except pour le nombre darguments. Le mot-cl search commence en dbut de ligne et est suivi dun espace ou dune tabulation, puis de un six domaines6, dans lordre dutilisation souhait au moment dune recherche. Le premier domaine de la liste est considr comme domaine local. Les directives search et domain sont donc mutuellement exclusives. Si les deux sont utilises dans resolv.conf, celle dclare en second prdomine. Par exemple, la directive :
search corp.hp.com paloalto.hp.com hp.com
indique au resolver de rechercher en premier dans le domaine corp.hp.com, puis dans paloalto.hp.com et enn dans leur parent commun hp.com. Cette directive peut tre utile sur un hte dont les utilisateurs accdent frquemment aux htes des deux domaines corp.hp.com et paloalto.hp.com. Par contre, avec un resolver BIND 4.8.3, la directive :
search corp.hp.com
provoque la non-utilisation du domaine parent du domaine local lors de lutilisation de la liste de recherche (avec un resolver 4.9, ce domaine parent nest pas dans la liste par dfaut ; cette directive nest pas diffrente du comportement standard). Cela peut tre utile si les utilisateurs accdent uniquement des htes du domaine local ou si la connexion vers les serveurs du domaine parent nest pas bonne (rduction du nombre des requtes inutiles).
Avec lutilisation de la directive domain, la mise jour dun resolver en version 4.9 ou ultrieure de BIND, peut surprendre des utilisateurs habitus ce que le parent de leur domaine soit implicite lors dune recherche. Il est possible de reproduire lancien comportement en utilisant la directive search. Par exemple, avec BIND 4.9, BIND 8 ou BIND 9, on peut remplacer la directive domain nsr.hp.com par la directive search nsr.hp.com hp.com et obtenir le mme rsultat.
6.
[12/01/08]
DNS et Bind
100
La directive nameserver
Le Chapitre 4 dnit deux types de machines : les serveurs primaires et les serveursesclaves. Mais une machine ne faisant quutiliser le DNS na pas besoin dtre serveur. En standard, le resolver tente dutiliser un serveur de noms sur la machine elle-mme (cest ce qui sest pass lors du test des serveurs sur toystory.movie.edu ou wormhole.movie.edu laide de nslookup). Il est galement possible dindiquer au resolver dinterroger un serveur situ sur une autre machine. Lhte utilisant le resolver est appel un client DNS dans le BIND Operations Guide. La directive nameserver fournit au resolver ladresse IP dun serveur de noms interroger. Par exemple, la ligne :
nameserver 15.32.17.2
indique au resolver dinterroger le serveur de noms situ ladresse IP 15.32.17.2, plutt quun serveur situ sur le client lui-mme. Sur les htes naccueillant pas de serveur, la directive nameserver indique de contacter un serveur de noms distant. Elle sert prparer les clients pour quils interrogent les serveurs de leur domaine. Toutefois, de nombreux administrateurs ne restreignant pas les requtes, nimporte quel resolver peut tre prpar pour les interroger. Bien sr, il est impoli dutiliser le serveur de noms dautrui sans sa permission ; de plus, lutilisation de ses propres serveurs de noms offre de meilleures performances. Lutilisation dun serveur tiers doit tre rserve au dpannage. Pour indiquer un resolver dinterroger le serveur situ sur la machine elle-mme, il faut lui fournir soit ladresse IP locale, soit ladresse 0.0.0.0. Dans la plupart des mises en uvre de TCP/IP cette dernire adresse dsigne lhte local. Si ce nest pas le cas, il est , possible dutiliser ladresse de bouclage 127.0.0.1. Si un serveur de noms utilis par un resolver est arrt, le client pourra peut-tre utiliser la table dhtes locale. Une autre solution consiste indiquer jusqu trois serveurs de noms au resolver, en utilisant trois directives nameserver. Le resolver interroge ces serveurs, dans lordre de leur dclaration, jusqu la rception dune rponse. Les dclarations :
nameserver 15.32.17.2 nameserver 15.32.17.4
indiquent au resolver dinterroger dabord 15.32.17.2 puis, en cas de non rponse, 15.32.17.4. Le nombre de serveurs dclars est un facteur important du comportement des resolvers.
Lors de lutilisation de plusieurs directives nameserver, il ne faut pas utiliser ladresse de bouclage (loopback). En effet, il y a un bogue dans plusieurs mises en uvre de TCP/IP drives de Berkeley qui peuvent poser des problmes avec BIND si le serveur de noms local est arrt : la socket en mode connect du resolver ne se lie pas une nouvelle adresse dorigine locale. En consquence, le resolver envoie des requtes un serveur de secours distant, avec une adresse dorigine gale 127.0.0.1. Lorsque le serveur de secours tente de rpondre, il senvoie le message lui-mme.
[12/01/08]
DNS et Bind
Configurer le resolver
101
message ICMP port unreachable (port inaccessible), qui indique quaucun serveur de
noms nest lcoute sur le port du service de noms ;
7.
Cela signie quune seule directive nameserver est utilise dans resolv.conf, ou quaucune directive nameserver nest utilise et quil y a un serveur de noms sur le client lui-mme.
[12/01/08]
DNS et Bind
102
Pour les matheux, le tableau 6-1 montre les dlais dattente pour un, deux ou trois serveurs de noms dclars, avec les resolvers BIND 4.9 8.2.
Le tableau 6-2 montre les dlais dattente depuis les resolvers BIND 8.2.
Ainsi, avec trois serveurs, le resolver interroge le premier avec un dlai dattente de cinq secondes puis, en cas de non rponse, le second et enn le troisime avec le mme dlai chaque fois. Il double ensuite le temps dattente, le divise par trois et larrondit par dfaut trois secondes (10/3 arrondis). Puis il recommence. Il sagit du pire des scnarios. Avec des serveurs de noms fonctionnant convenablement sur des machines sufsamment rapides, le resolver obtient une rponse en bien moins dune seconde. Ce nest quen cas de relle surcharge sur les trois serveurs dclars, ou de rupture du rseau, que le resolver effectue plusieurs cycles. En cas dchec complet de la recherche, le resolver renvoie un message derreur du type :
% telnet tootsie tootsie: Host name lookup failure
videmment, il peut scouler 75 secondes, voire un peu plus, avant lobtention dun tel message (voir le tableau 6-1), aussi faut-il tre patient.
[12/01/08]
DNS et Bind
Configurer le resolver
103
La directive sortlist
Depuis BIND 4.9, la directive sortlist permet de dsigner des rseaux et sous-rseaux utiliser en priorit pour atteindre certaines destinations, ce qui est particulirement utile lorsque le resolver reoit plusieurs adresses en rponse une requte unique. Exemple : une station de travail et son serveur NFS ont chacun deux interfaces de rseau, une sur un segment Ethernet 100 Mb/s correspondant au rseau IP 128.32.1/ 24 et lautre sur un segment Ethernet 1 Gb/s correspondant au rseau IP 128.32.42/24. Pour monter des systmes de chiers, la station de travail choisira probablement la premire adresse reue dans le paquet de rponse, lors de linterrogation du DNS propos du serveur NFS. La directive sortlist du chier resolv.conf permet de privilgier le rseau Ethernet en gigabit en indiquant au resolver de placer les adresses du rseau 128.32.42/24 en premire position dans la structure transmise en rponse aux programmes :
sortlist 128.32.42.0/255.255.255.0
Largument suivant la barre oblique est le masque du rseau. Pour privilgier lintgralit dun rseau, la barre et le masque de rseau peuvent tre omis :
sortlist 128.32.0.0
Dans ce dernier cas, le resolver privilgie lintgralit du rseau 128.32/16 (ici, le resolver utilise les deux premiers octets de ladresse IP pour dduire un masque de rseau correspondant un rseau non scind en sous-rseaux). Il est possible de dsigner jusqu dix rseaux privilgis :
sortlist 128.32.42.0/255.255.255.0 15.0.0.0
Le resolver classe toutes les adresses dune rponse, en plaant en premier celles apparaissant dans la directive et selon leur ordre dapparition dans cette directive, puis en plaant la n celles qui napparaissent pas dans la directive.
La directive options
La directive options a t introduite avec BIND 4.9 et permet dajuster plusieurs rglages internes au resolver. Le premier est le drapeau de dbogage, RES_DEBUG. Si le resolver a t compil avec loption DEBUG, ce qui nest gnralement pas le cas des produits commerciaux, la directive :
options debug
valide RES_DEBUG, ce qui gnre une grande quantit dinformations passionnantes de dbogage sur la sortie standard. Cette option permet danalyser un problme de resolver ou de service de noms. Le second rglage est ndots, qui dnit le nombre minimal de points que doit avoir un nom pour que le resolver le recherche avant dappliquer la liste de recherche. Par dfaut, ce comportement est celui des noms comportant au moins un point, ce qui correspond ndots:1. Il est possible de dplacer ce seuil si des utilisateurs sont plus habitus fournir des noms partiels que des noms ncessitant lapplication de la liste de recherche. Par exemple, si le domaine local est mit.edu et que les utilisateurs sont habitus utiliser :
% ftp prep.ai
[12/01/08]
DNS et Bind
104
avec lajout implicite de mit.edu pour produire prep.ai.mit.edu, laugmentation de ndots deux vitera linterrogation involontaire des serveurs de noms de la racine lors de lutilisation de noms situs dans le domaine ai :
options ndots:2
BIND 8.2 introduit quatre nouvelles options : attempts, timeout, rotate et no-check-names. attempts dnit le nombre de requtes que le resolver peut envoyer aux serveurs de noms dclars dans resolv.conf avant dabandonner la recherche. Si vous pensez que la nouvelle valeur de deux est trop faible pour vos serveurs de noms, vous pouvez laugmenter quatre, valeur par dfaut avant BIND 8.2.1 :
options attempts:4
La valeur maximale est de 5. timeout dnit le dlai dattente initial pour une requte envoye un serveur dclar dans resolv.conf. La valeur par dfaut est de cinq secondes. Si on souhaite que le resolver ritre ses requtes plus rapidement, on peut abaisser le dlai deux secondes :
options timeout:2
La valeur maximale est de trente secondes. chaque nouveau cycle, le resolver double le dlai initial puis le divise par le nombre de serveurs dclars dans resolv.conf. rotate indique au resolver dutiliser successivement tous les serveurs dclars dans resolv.conf, comme premier serveur interroger. Habituellement, tant que le premier serveur de la liste rpond dans le temps imparti, il est le seul tre interrog. Avec :
options rotate
chaque instance du resolver effectue un tourniquet sur la liste des serveurs : pour la premire requte, il interroge le premier serveur en premier, pour la seconde requte, il interroge le second serveur en premier, et ainsi de suite. Notons que de nombreux programmes ne peuvent pas tirer parti de cette option, car ils initialisent le resolver, effectuent une recherche puis sarrtent. Ainsi, la rotation na aucun effet sur une srie de commandes ping, car chaque processus ping initialise le resolver, interroge le premier serveur apparaissant dans resolv.conf et sarrte sans avoir appel le resolver une seconde fois. Chaque ping successif na aucune ide de lidentit du serveur appel la dernire fois par le client ou mme si ping a dj t utilis. Par contre, les processus longue dure de vie, comme le dmon sendmail, tirent bien parti de la rotation. La rotation complique le dbogage : on ne pourra jamais tre sr de lidentit du serveur, dclar dans resolv.conf, qui a rpondu au dmon sendmail lorsquil a reu cette chue rponse. Enn, no-check-names permet de dsactiver le contrle des noms au niveau du resolver8. Le contrle est activ en standard et il vrie que les noms sont conformes aux standards (seuls les caractres alphanumriques et les tirets sont accepts). Cette option permet de rechercher des noms contenant des souligns ou autres caractres non-alphnumriques. Plusieurs options peuvent tre combines sur une mme ligne de resolv.conf :
options attempts:4 timeout:2 ndots:2
8. Pour les resolvers qui le peuvent, partir de BIND 4.9.4.
[12/01/08]
DNS et Bind
105
Commentaires
Depuis BIND 4.9, des commentaires peuvent apparatre dans le chier resolv.conf. Les lignes commenant par un dise ou un point virgule indiquent un commentaire et ne sont pas prises en compte par le resolver.
Resolver isol
Ladministrateur de movie.edu doit prparer le nouveau poste de travail dune enseignante. La machine nhberge donc pas de serveur de noms. La station est dans le domaine movie.edu, mais la professeur collabore intensivement avec la socit Pixar. Il peut tre intressant dajouter pixar.com la liste de recherche du resolver de la nouvelle station, laide dune directive search :
search movie.edu pixar.com
Cette directive place la station dans le domaine local movie.edu et recherche dans pixar.com, les noms non trouvs dans movie.edu. Le nouveau poste est dans le rseau 192.249.249/24 et ses plus proches serveurs de noms sont wormhole.movie.edu (192.249.249.1) et toystory.movie.edu (192.249.249.3). On peut se xer comme rgle dutiliser prioritairement le serveur de noms le plus proche (cest-dire celui situ sur lhte lui-mme sil existe, sinon un serveur situ sur le mme sousrseau, sinon un serveur situ sur le mme rseau). Dans ce cas, les deux serveurs cits prcdemment ont la mme priorit ; toutefois, wormhole.movie.edu est un hte plus performant. La premire directive nameserver dans resolv.conf sera alors :
nameserver 192.249.249.1
Pour consolider la conguration, le serveur toystory.movie.edu (192.249.249.3) est ajout par scurit comme serveur de secours. Si wormhole.movie.edu est indisponible, la station pourra continuer travailler (pour peu que toystory.movie.edu et le reste du rseau soient encore oprationnels).
[12/01/08]
DNS et Bind
106
Finalement, le chier resolv.conf contiendra :
search movie.edu pixar.com nameserver 192.249.249.1 nameserver 192.249.249.3
[12/01/08]
DNS et Bind
107
serveurs de secours. Mieux vaut ne pas utiliser ladresse de bouclage local, sauf si la pile TCP/IP du systme ne prsente pas le problme dcrit lavertissement de la page 106. Par scurit, ladministrateur ajoute deux serveurs de noms de secours. postmanrings2x.movie.edu est connect au rseau 192.249.249/24 ; toystory.movie.edu et wormhole.movie.edu sont donc les deux autres plus proches serveurs. Par rapport lexemple prcdent, ladministrateur choisit dinverser lordre de ces deux serveurs9, an de rpartir la charge. De plus, il ne veut pas attendre cinq secondes avant dessayer un autre serveur ; il abaisse donc le dlai dattente deux secondes. Finalement, le chier resolv.conf se prsente sous la forme suivante :
domain movie.edu nameserver 0.0.0.0 nameserver 192.249.249.3 nameserver 192.249.249. options timeout:2
Diffrences comportementales
Des programmes comme telnet, ftp, rlogin et rsh appliquent la liste de recherche aux noms non termins par un point. Pour un utilisateur situ dans le domaine local movie.edu et dont la liste de recherche inclut movie.edu, lemploi de :
% telnet misery
ou de :
% telnet misery.movie.edu
ou encore de :
% telnet misery.movie.edu.
conduit au mme rsultat. De plus, puisquun serveur de noms peut renvoyer plus dune adresse IP en rponse une recherche dadresse, les versions rcentes de Telnet, de FTP et des navigateurs web essaient de se connecter la premire adresse renvoye et, en cas dchec ou de refus, la seconde puis aux suivantes :
% ftp tootsie ftp: connect to address 192.249.249.244: Connection timed out Trying 192.253.253.244... Connected to tootsie.movie.edu.
9.
moins quil nexiste un serveur primaire cach. Dans ce cas, bien sr, nous aurons probablement besoin dun autre serveur secondaire pour participer aux rponses.
[12/01/08]
DNS et Bind
108
220 tootsie.movie.edu FTP server (Version 16.2 Fri Apr 26 18:20:43 GMT 1991) ready. Name (tootsie: guest):
La directive sortlist de resolv.conf permet mme de contrler lordre dans lequel les applications essaient ces adresses IP . Le service NFS est lui aussi concern par le DNS. La commande mount utilise correctement les noms ; ils peuvent apparatre dans les chiers /etc/fstab (ou /etc/checklist dans certains systmes). /etc/exports dnit les systmes de chiers pouvant tre monts par des clients via NFS. /etc/netgroup permet de constituer des groupes dhtes dont les noms peuvent tre utiliss dans /etc/exports. Malheureusement, les anciennes versions de NFS nutilisent pas vraiment le DNS lors de la lecture des chiers exports ou netgroup. En effet, le client sidentie auprs du serveur laide dun message RPC (Remote Procedure Call) et lidentication utilise par le client est le nom local de lhte hostname. Le nom utilis dans les chiers exports ou netgroup doit correspondre celui du client, hostname, qui nest pas obligatoirement un nom DNS.
Courrier lectronique
Certains programmes de messagerie lectronique, dont sendmail, nutilisent pas la liste de recherche de la mme manire que les autres. Lorsquil est congur pour interroger un serveur de noms, sendmail utilise un processus appel canonisation pour convertir les noms dune adresse de messagerie en noms canoniques. Pour la canonisation, sendmail applique la liste de recherche un nom pour rechercher des informations de type ANY, cest--dire tout type denregistrement de ressource. sendmail fonctionne comme les nouveaux resolvers : si le nom canoniser contient au moins un point, ce nom est dabord essay tel quel. Si le serveur de noms interrog renvoie un enregistrement CNAME (un alias), sendmail remplace le nom recherch par le nom canonique dsign par lalias puis canonise le rsultat au cas o la cible de lalias seraitelle mme un alias. Si le serveur de noms renvoie un enregistrement A (une adresse), sendmail utilise le nom correspondant ladresse comme nom canonique. Si le serveur de noms ne trouve pas dadresse mais trouve un ou plusieurs enregistrements MX, lune des actions suivantes est effectue :
si la liste de recherche na pas encore t applique, sendmail utilise le nom correspondant aux enregistrements MX comme nom canonique ;
10. Cette procdure complexe est ncessaire pour traiter le cas des enregistrements MX gnriques que nous prsenterons au Chapitre 17.
[12/01/08]
DNS et Bind
109
Lors du traitement dun message SMTP sendmail enchane plusieurs canonisations ; , celle de ladresse de destination et celle de plusieurs champs de len-tte11. sendmail initialise la macro $w la valeur canonise de hostname au moment du dmarrage de sendmail. Autrement dit, mme en utilisant un nom ne comportant quun seul lment pour hostname, sendmail canonise hostname en utilisant la liste de recherche dnie dans resolv.conf. sendmail ajoute ensuite la macro $w et tous les alias vers $w rencontrs durant la canonisation la classe $=w, qui reprsente la liste de tous les autres noms du serveur de messagerie. Tout cela est particulirement important dans la mesure o les noms de la classe $=w sont les seuls noms que sendmail reconnaisse comme nom de lhte local. sendmail tentera de retransmettre les courriers adresss un nom prsum non local. Aussi, moins que sendmail ne soit prpar pour reconnatre la totalit des alias de lhte local (en les ajoutant la classe w ou au chier de classe w comme indiqu au Chapitre 5), lhte tentera-t-il de retransmettre tous les messages expdis vers une autre adresse que le nom canonique du domaine. La mthode utilise par sendmail pour canoniser le nom local est cruciale : sendmail ne reconnat que le contenu de la classe $=w comme nom canonique de lhte local lors dune exploitation des listes de MX. Par consquent, lhte pourrait ne pas se reconnatre si on nutilise pas un nom contenu dans $=w, dans la partie droite dun enregistrement MX. Il pourrait se produite le bouclage du courrier puis son retour lexpditeur. Dernier point concernant sendmail : avec une version de sendmail antrieure la version 8, lors du dmarrage dun nouveau serveur de noms, il faut positionner loption I dans le chier sendmail.cf. Loption I xe le comportement de sendmail lors de lchec dune recherche de nom. Avec /etc/hosts, un chec de recherche de nom est fatal : il est peu probable quune seconde recherche ait plus de succs ; le routeur de messagerie renvoie donc immdiatement le message avec une erreur. Par contre, avec le DNS, un chec peut tre temporaire, en raison de pannes intermittentes de rseaux. Loption I indique sendmail de placer les messages dans une le dattente si une recherche de nom choue. Il suft dajouter OI au chier sendmail.cf.
[12/01/08]
DNS et Bind
110
Si les htes mash et twins sont dplacs vers la zone comedy.movie.edu, ils ne seront plus autoriss accder lpd ; les lignes correspondantes de lpd.allow nautorisent limpression que pour mash.movie.edu et twins.movie.edu. Les domaines doivent donc tre ajouts aux noms qui ne sont pas dans le domaine local du serveur lpd :
wormhole toystory monsters-inc shrek mash.comedy.movie.edu twins.comedy.movie.edu
Parfois, lapplication dun ltre de canonisation sur ces chiers (un programme de traduction des noms dhtes en noms totalement qualis avec application de la liste de recherche) suft lever les ambiguts. Voici un exemple de ltre simple de canonisation, crit en Perl :
#!/usr/bin/perl -ap # Traitement dun nom dhte dans le premier champ de chaque ligne # (comme dans un fichier .rhosts ou X0.hosts) s/$F[0]/$d/ if ($d)=gethostbyname $F[0];
Alias
Mme en modiant toutes les bases de donnes et en convertissant tous les chiers .rhosts, hosts.equiv et sendmail.cf aprs la mise en uvre du DNS, les utilisateurs devront faire preuve dadaptabilit. Heureusement, les perturbations sont mineures par rapport aux bnces apports par le DNS. Une simplication du travail des utilisateurs consiste leur fournir des alias pour dsigner les htes bien connus, qui ne sont plus accessibles par un nom familier. Par exemple, les utilisateurs sont habitus utiliser telnet doofy ou rlogin doofy pour accder une machine situe de lautre ct de la ville. Ils doivent maintenant utiliser le nom complet, doofy.maroon.com, quils ne connaissent pas encore et auquel ils auront besoin de shabituer. Fort heureusement, BIND permet de dnir des alias. Il suft pour cela que la variable denvironnement HOSTALIASES dsigne un chier contenant des correspondances entre des alias et des noms qualis. Pour dnir un alias collectif pour doofy, on peut initialiser la variable HOSTALIASES /etc/host.aliases dans les chiers dinitialisation des shells du systme et ajouter :
doofy doofy.maroon.com
dans /etc/host.aliases. Le format du chier dalias est simple : chaque ligne dnit une correspondance et doit contenir lalias, suivi despaces puis du nom non termin par un point. Lalias ne doit contenir aucun point.
[12/01/08]
DNS et Bind
111
Ainsi, lorsquun utilisateur utilise telnet doofy ou rlogin doofy, le resolver substitue doofy.maroon.com doofy dans la requte dinterrogation du serveur de noms. Un message similaire ce qui suit, est renvoy lutilisateur :
Trying... Connected to doofy.maroon.com. Escape character is '^]'. IRIX System V.3 (sgi) login:
Si le resolver fonctionne en mode dgrad et utilise /etc/hosts, HOSTALIASES na aucun effet. Il peut donc tre intressant de crer un alias similaire dans /etc/hosts. Avec lhabitude, les utilisateurs commenceront associer le nom totalement quali qui apparat dans la bannire de telnet avec le tableau dafchage quils utilisent. Si ladministrateur connat les noms couramment utiliss, HOSTALIASES lui permet de secourir les utilisateurs perturbs par les changements. Les utilisateurs peuvent aussi crer leur propre chier dalias en positionnant la variable HOSTALIASES dans leur chier dinitialisation de shell.
nsswitch.conf
En ralit, nsswitch.conf permet de dnir lordre dans lequel les diffrentes sources dinformations sont consultes. On slectionne la base de donnes interroger laide dun mot-cl. Pour les services de noms, le mot-cl est hosts ; ses sources possibles sont dns, nis, nisplus et les (cette dernire dsigne le chier /etc/hosts). La syntaxe consiste simplement donner la liste des sources, dans lordre de consultation souhait, derrire le mot-cl indiquant la base de donnes. Par exemple :
hosts: dns files
indique au resolver dinterroger tout dabord le DNS, puis le chier /etc/hosts. Par dfaut, la rsolution passe dune source la suivante, si la premire source nest pas disponible ou si le nom recherch nest pas trouv. Des critres permettent de modier le comportement standard en dnissant un couple [condition=action] entre les sources. Les conditions sont : UNAVAIL La source na pas t initialise (dans le cas du DNS, il ny a ni chier resolv.conf ni serveur de noms en local). NOTFOUND Le service na pas la rponse la question (pour le DNS, le nom recherch ou le type recherch nexiste pas).
[12/01/08]
DNS et Bind
112
TRYAGAIN La source est occupe mais pourra peut-tre rpondre plus tard (par exemple sur un coulement du dlai dattente du client aprs mission dune question). SUCCESS Le nom recherch a t trouv dans la source. Pour chacun de ces critres, il est possible dindiquer si le resolver doit poursuivre la recherche (continue) ou labandonner (return). Laction standard est return pour SUCCESS et continue pour les autres conditions. Par exemple, si on veut que le resolver interrompe la recherche sur une rception de NXDOMAIN (no such domain ou nom inexistant) mais quil utilise /etc/hosts lorsque le DNS nest pas initialis, il faut dnir :
hosts: dns [NOTFOUND=return] files
Le resolver de Windows XP
Nous dcrivons le resolver de Windows XP car la plupart des resolvers rcents de Windows Windows 2000, Windows Server 2003 lui ressemblent et fonctionnent de manire similaire. Pour y accder, cliquez sur dmarrer, puis Panneau de conguration, puis Connexions rseaux et Internet et, enn, Connexions rseau. La fentre de la gure 6-1 apparat.
[12/01/08]
DNS et Bind
Le resolver de Windows XP
113
DNS et Bind
114
En choisissant Obtenir les adresses des serveurs DNS automatiquement, le resolver interrogera les serveurs de noms dsigns par le service DHCP local. En choisissant Utiliser ladresse de serveur DNS suivante, le resolver interrogera les serveurs indiqus dans Serveur DNS prfr et Serveur DNS auxiliaire12. Pour accder aux paramtres avancs du resolver, cliquez sur Avanc puis sur longlet DNS, ce qui fait apparatre la fentre de la gure 6-4.
12. Gloire Microsoft qui a clari sa terminologie ! Dans les versions prcdentes de Windows, les serveurs de noms sappelaient parfois DNS primaire et DNS secondaire. Certains utilisateurs comprenaient quil fallait indiquer les serveurs primaires et esclaves (serveurs secondaires) de certaines zones, ou autre chose encore. En effet, DNS semblait tre utilis pour Serveur de noms de domaine au lieu de systme de noms de domaine .
[12/01/08]
DNS et Bind
Le resolver de Windows XP
115
Le resolver de Windows XP utilise un algorithme de retransmission agressif, introduit dans Windows NT 4.0 SP4 : le resolver envoie sa premire requte au premier serveur dni. Toutefois, il nattend quune seconde avant de retransmettre la requte toujours au premier serveur dni mais simultanment pour chaque interface rseau. Sil na pas reu de rponse au bout de deux nouvelles secondes, il interroge simultanment tous les serveurs congurs pour toutes les interfaces, quils laient t statiquement ou dynamiquement via DHCP Si aucun de ces serveurs ne rpond dans les quatre secondes, le . resolver retransmet nouveau la requte tous les serveurs. Au passage, il double le temps dattente et recommence jusqu 4 retransmissions et 15 secondes dattente (pour plus de prcisions, consultez le livre blanc de Windows 2000 sur le DNS, ladresse http://www.microsoft.com/windows2000/docs/w2kdns.doc). Comme il est possible dobtenir deux rponses diffrentes une mme question, provenant de deux serveurs diffrents, le resolver de Windows XP ne prend pas en compte les rponses ngatives (no such domain name et no such data) lorsquil interroge plusieurs serveurs. Il ne renvoie la rponse ngative au demandeur que sil la reoit dun serveur qui serait congur pour toutes ses interfaces. Par contre, sil reoit une rponse positive, mme unique, il la renvoie au demandeur. En validant Ajouter des sufxes DNS principaux et spciques aux connexions, le resolver utilise le sufxe principal et les sufxes spciques aux connexions pour construire la liste de recherche. Le sufxe DNS spcique la connexion sinitialise dans le champ Sufxe DNS pour cette connexion ou via une option DHCP fournie par le serveur DHCP . Le sufxe principal sinitialise via le Panneau de conguration, puis licne Systme (dans lafchage classique), longlet Nom de lordinateur, puis en cliquant sur Modier et enn sur Autres La fentre de la gure 6-5 apparat.
[12/01/08]
DNS et Bind
116
contiendra fx.movie.edu et movie.edu. Notons que le sufxe spcique une connexion nest pas transmis (selon les termes de Microsoft) a une liste de recherche. Le bouton Ajouter ces sufxes DNS (dans lordre) indique au resolver dutiliser la liste de recherche dnie dans la fentre en dessous. Comme avec la liste des serveurs de noms, des boutons permettent dajouter, de modier, de supprimer ou de classer les sufxes dans la liste. Enn, il est intressant de mentionner les deux cases du bas de la fentre. Enregistrer les adresses de cette connexion dans le systme DNS indique au client dutiliser la mise jour dynamique pour ajouter un enregistrement dadresse A, ainsi que lenregistrement PTR correspondant, si ladresse est congure statiquement. Utiliser le sufxe DNS de cette connexion pour lenregistrement DNS permet de choisir le domaine utilis pour la mise jour dynamique : soit celui associ cette connexion, soit le sufxe principal de la machine. La mise jour dynamique permet de sassurer que le nom dun client Windows pointe bien vers son adresse IP courante, mme si cette dernire a t attribue par un serveur DHCP (en ralit, pour les clients DHCP le serveur DHCP ajoute lenregistrement PTR , de correspondance adresse-nom). Ce mcanisme scelle le destin de WINS (Windows Internet Name Service), la version propritaire et pernicieuse de Microsoft de NBNS (NetBIOS naming service). Lorsque tous vos clients fonctionneront avec une version moderne de Windows, ils pourront utiliser la mise jour dynamique pour grer leur correspondance nom-adresse, et vous pourrez enfoncer un pieu dans le cur de WINS. Nous dtaillerons lenregistrement de nom au Chapitre 17. La mise jour dynamique de zone par les clients est un d, que nous explorerons au Chapitre 17.
Le resolver de Windows XP gre aussi une dure de vie sur rponse ngative, de 15 minutes par dfaut. Ce dlai est lui aussi modiable par une cl de registre :
MaxNegativeCacheTtl HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters Data type: REG_DWORD Default value: 900 seconds (= 15 minutes)
Pour dsactiver la dure de vie sur rponse ngative, il suft de mettre cette valeur 0.
[12/01/08]
DNS et Bind
Le resolver de Windows XP
117
La commande ipcong /displaydns permet de visualiser le contenu de la mmoire cache, et ipcong /ushdns permet de la purger. La commande suivante permet de mettre horsservice la mmoire cache :
C:\> net stop dnscache
Ce dernier rglage ne sera effectif que jusquau prochain redmarrage. Pour mettre dnitivement hors-service la mmoire cache, il faut ouvrir lapplication Services (dans le groupe de programmes Outils dadministration) et rgler Client DNS Dsactiv.
Priorit de rseaux
Cette fonction est analogue la fonction de classement des adresses dun resolver BIND. Lorsquun resolver reoit plusieurs enregistrements dadresse correspondant un nom unique, il observe les adresses de chaque enregistrement et arrange lordre des enregistrements avant de renvoyer la liste lapplication appelante ; tout enregistrement contenant une adresse appartenant au mme rseau que le poste de travail excutant le resolver est plac en haut de la liste. Comme la plupart des applications utilisent les adresses dans lordre renvoy par le resolver, ce comportement aide contenir le trac sur les rseaux locaux. Ainsi, lUniversit du Cinma dispose de deux serveurs web en miroir, sur deux rseaux diffrents :
www.movie.edu. www.movie.edu. IN A 192.253.253.101 IN A 192.249.249.101
Supposons que le resolver de toystory.movie.edu (192.249.249.3) envoie une requte et reoive ces deux enregistrements. Ce resolver place lenregistrement contenant ladresse 192.249.249.101 en haut de la liste car toystory est sur le mme rseau que le serveur web cette adresse. Notons que ce comportement met en chec la fonction de tourniquet (round-robin) mise en uvre par la plupart des serveurs de noms, et qui consiste appliquer, au niveau des serveurs de noms, une permutation circulaire aux enregistrements dadresse multiples, lors de rponses successives, an de rpartir la charge sur les serveurs (ce principe repose sur le fait que la plupart des applications utilisent la premire adresse renvoye par le resolver). Avec la priorit aux rseaux locaux, lordre des enregistrements dadresse est modi par le resolver. La cl de registre suivante permet de mettre hors-service la priorit de rseaux :
PrioritizeRecordData HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNSCache\Parameters Data type: REG_DWORD Range: 0 - 1 Default value: 1 (Subnet prioritization enabled)
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
7
Exploitation de BIND
Eh bien, dans notre pays nous, rpondit Alice, encore un peu haletante, si lon courait trs vite pendant longtemps, comme nous venons de le faire, on arrivait gnralement quelque part, ailleurs. Un pays bien lent ! dit la Reine. Tandis quici, voyez-vous bien, il faut courir de toute la vitesse de ses jambes pour simplement rester l o on est. Si lon veut aller quelque part, ailleurs, il faut alors courir au moins deux fois plus vite que a !
Ce chapitre traite de lexploitation dun serveur de noms : pilotage, maintien jour des chiers de zone et du chier dindications sur les serveurs de la racine. Il expose aussi les messages derreur syslog standard et dcrit les statistiques gnres par BIND. Ces trois phases dexploitation ne concernent que les serveurs en tat de marche ; lanalyse des problmes et leur rsolution seront traites au Chapitre 14.
[12/01/08]
DNS et Bind
120
Lenvoi de messages au serveur de noms via le canal de pilotage se fait laide du programme ndc (BIND 8) ou rndc (BIND 9). Avant BIND 8.2, ndc ntait quun simple script shell permettant de substituer des mnmoniques (tels que reload) aux signaux (tels que HUP). Nous prsenterons cette version de ndc plus loin.
La permission doit tre indique en octal (le zro initial indique que le nombre est octal). On pourra consulter la documentation de chmod(1) pour plus de prcisions. Les valeurs pour le propritaire et le groupe doivent tre numriques. LISC recommande, et nous aussi, de ne permettre laccs la socket du domaine Unix quau personnel autoris grer le serveur de noms. ndc peut aussi servir envoyer des messages un serveur, ventuellement distant, via une socket TCP Pour cela, il faut utiliser ndc avec loption c suivie du nom ou de . ladresse du serveur, dun slash et du numro du port sur lequel le serveur coute les messages de pilotage. Exemple :
# ndc -c 127.0.0.1/953
La directive controls permet de congurer le serveur pour quil coute sur un port TCP spcique :
controls { inet 127.0.0.1 port 953 allow { localhost; }; };
En standard, les serveurs BIND 8 ncoutent aucun port TCP mais les serveurs BIND 9 , coutent le port 953. Cest pour cela que nous avons choisi 953 pour nos exemples. Nous avons congur le serveur pour ncouter que ladresse locale de bouclage et pour naccepter que les messages provenant de lhte local. Toutefois, cela est imprudent, puisque nimporte qui pouvant se connecter sur lhte local peut piloter le serveur. Si nous tions encore moins prudents, nous pourrions largir la liste des htes autoriss gnrer des messages et laisser le serveur couter toutes les interfaces de rseau :
controls { inet * port 953 allow { localnets; }; };
[12/01/08]
DNS et Bind
121
ndc accepte deux modes de fonctionnement : interactif ou non. En non interactif, le message passer au serveur apparat sur la ligne de commande :
# ndc reload
/h renvoie la liste des commandes comprises par ndc (pas par le serveur) :
Ainsi, la commande /d indique ndc de produire des informations de dbogage sur les messages envoys au serveur de noms et les rponses reues. Elle na aucun effet sur le niveau de dbogage du serveur de noms. Pour cela, voyez la commande debug dcrite plus loin. Notons que seule /e, et non /x ou /q, permet de quitter ndc, ce qui nest pas trs intuitif. help donne la liste des commandes de pilotage de serveur disponibles :
ndc> help getpid status stop exec reload [zone] ... reconfig [-noexpired] (just sees new/gone zones) dumpdb stats trace [level] notrace querylog qrylog help quit ndc>
Les commandes start et restart ne sont pas indiques ici, bien quelles soient utilisables, car help donne la liste des commandes comprises par le serveur de noms et non pas par ndc. Or, le serveur ne peut pas lui-mme excuter la commande start, puisquil devrait dj tre en cours dexcution pour cela, et sil est en cours dexcution, il na pas besoin dtre dmarr. De mme, le serveur ne peut pas effectuer lui-mme un restart car, lorsquil sest arrt, il na aucun moyen de dmarrer une nouvelle instance de luimme. Par contre, rien nempche ndc deffectuer le start ou le restart.
[12/01/08]
DNS et Bind
122
Voici une description des commandes :
getpid Afchage du numro de processus du serveur de noms. status Afchage dinformations utiles sur le serveur de noms, dont sa version, son niveau de dbogage, le nombre de transferts de zone en cours et la journalisation de requtes. start Dmarrage du serveur de noms. Si named doit tre dmarr avec des arguments en ligne de commande, ils peuvent apparatre aprs start, comme dans : start c /usr/ local/etc/named.conf. stop Arrt du serveur de noms avec criture des zones dynamiques vers les chiers de zone. restart Arrt et redmarrage du serveur. Comme avec start, des arguments pour named peuvent apparatre aprs la commande. exec Arrt et redmarrage du serveur. la diffrence de restart, on ne peut passer aucune option en ligne de commande de named ; le serveur dmarre une nouvelle copie de lui-mme avec les mmes arguments en ligne de commande. reload Rechargement du serveur de noms. Il faut envoyer cette commande un serveur primaire aprs une modication de son chier de conguration ou de lun de ses chiers de zone, ou un serveur-esclave. On peut prciser un ou plusieurs noms de zone en argument ; seules les zones indiques seront recharges. reconfig [noexpired] Test du chier de conguration pour dtecter lapparition ou la suppression de nouvelles zones. Il faut envoyer cette commande un serveur en cas dajout ou de suppression de zone, sans modication des zones dj existantes. Le drapeau -noexpired indique au serveur de ne pas renvoyer de messages derreur concernant les zones primes, ce qui est intressant si le serveur fait autorit sur des centaines de zones et que lon souhaite viter une rafale de messages dexpiration qui ne nous apprendrait rien de plus. dumpdb Gnration dune copie de la base de donnes interne du serveur de noms vers le chier named_dump.db situ dans le rpertoire de travail du serveur. stats Ajout de nouvelles statistiques au chier named.stats situ dans le rpertoire de travail du serveur.
[12/01/08]
DNS et Bind
123
trace [niveau] Ajout dinformations de dbogage au chier named.run situ dans le rpertoire de travail du serveur. Un niveau de dbogage plus lev augmente la quantit dinformation produite. Le Chapitre 13 dcrit les diffrents niveaux de dbogage. notrace Arrt de la gnration des informations de dbogage. querylog (ou qrylog) Activation ou dsactivation de la journalisation des requtes via syslog qui travaille ici au niveau de priorit LOG_INFO. named doit avoir t compil avec loption QRYLOG (ce qui est le cas par dfaut). quit Fin de la session de pilotage.
Cela dnit la cl de chiffrement utiliser pour lauthentication avec rndc pour pouvoir envoyer des messages de pilotage au serveur de noms. Si largument keys est omis, le message suivant apparat au dmarrage du serveur :
Jan 13 18:22:03 terminator named[13964]: type 'inet' control channel has no 'keys' clause; control channel will be disabled
Les cls utilises dans largument keys doivent tre dnies dans une directive key :
key "rndc-key" { algorithm hmac-md5; secret "Zm9vCg=="; };
La directive key peut apparatre directement dans le chier named.conf, mais si celui-ci est accessible en lecture pour tout le monde, il est prudent de la placer dans un autre chier, non publiquement lisible, et dinclure ce dernier dans named.conf :
include "/etc/rndc.key";
Le seul algorithme accept est HMAC-MD5, une technique utilisant lalgorithme de hachage rapide MD5 pour lauthentication1. La cl secrte, secret, est simplement le codage en base 64 dun mot de passe partag entre named et les utilisateurs autoriss de
1. Voir les RFC 2085 et 2104 au sujet de HMAC-MD5.
[12/01/08]
DNS et Bind
124
rndc. Elle peut tre gnre par les programmes mmencode ou dnssec-keygen de la distribution de BIND, comme indiqu au Chapitre 11. Dans lexemple, on utilise mmencode pour gnrer le codage de foobarbaz en base 64 :
% mmencode foobarbaz CmZvb2JhcmJh
Pour utiliser rndc, il faut crer le chier rndc.conf pour lui indiquer les cls dauthentication et les serveurs de noms utiliser avec ces cls. rndc.conf est habituellement situ dans /etc. Voici un exemple de chier rndc.conf :
options { default-server localhost; default-key "rndc-key"; }; key "rndc-key" { algorithm hmac-md5; secret "Zm9vCg=="; };
La syntaxe est trs similaire celle de named.conf. laide de la directive options, on dnit le serveur de noms par dfaut auquel envoyer les messages de pilotage ainsi que le nom de la cl par dfaut prsenter ce serveur. Ces deux paramtres peuvent tre rednis en ligne de commande. La syntaxe de la directive key est la mme que celle utilise dans named.conf (voir plus haut). Le nom de la cl dans rndc.conf, ainsi que la cl secrte, doivent correspondre la dnition de cl dans named.conf.
Souvenez-vous que comme pour les cls (qui sont en fait des mots de passe) stockes dans rndc.conf et named.conf, il faut vous assurer que les chiers ne sont lisibles que par des utilisateurs autoriss grer le serveur de noms.
Si rndc-confgen est fourni avec votre exemplaire de BIND, vous pouvez utiliser cet outil pour effectuer lessentiel du travail de conguration :
# rndc-confgen > /etc/rndc.conf
[12/01/08]
DNS et Bind
125
Comme lindique le commentaire, la seconde partie de ce chier contient les instructions placer dans /etc/named.conf ; il suft de dplacer les lignes vers /etc/named.conf et de supprimer le caractre de commentaire en dbut de ligne. Comme indiqu prcdemment, on peut placer la cl lextrieur du chier /etc/named.conf pour des raisons de scurit. Remarquons aussi que la directive controls nautorise laccs qu partir de ladresse 127.0.0.1.Cette liste peut tre ajuste.
Si on a plusieurs serveurs piloter, on peut utiliser une cl diffrente par serveur. On dnit les cls laide de plusieurs directives key, puis on associe chaque cl un serveur laide de la directive server :
server localhost { key "rndc-key"; }; server wormhole.movie.edu { key "wormhole-key"; };
rndc doit alors tre excut avec loption s pour prciser le serveur piloter :
# rndc -s wormhole.movie.edu reload
Si on na pas associ de cl chaque serveur, on peut indiquer une cl spcique en ligne de commande laide de loption y :
# rndc -s wormhole.movie.edu -y rndc-wormhole reload
[12/01/08]
DNS et Bind
126
Enn, si un serveur coute un port non-standard (autre que 953), on doit utiliser loption p pour indiquer rndc le port auquel se connecter :
# rndc -s toystory.movie.edu -p 54 reload
[12/01/08]
DNS et Bind
127
flushname nom Purge de tous les enregistrements associs au nom indiqu, dans la mmoire cache du serveur de noms. status Identique la commande status de ndc. recursing Sauvegarde des information concernant les recherches rcursives en cours, vers le chier named.recursing dans le rpertoire de travail du serveur de noms.
rechargement du rndc reload serveur arrt du serveur non utilis non utilis non utilis non utilis arrt du serveur rndc dumpdb rndc stats rndc trace rndc notrace rndc querylog rndc stop
Ainsi, pour valider ou invalider le mcanisme de journalisation avec une ancienne version de ndc, on pourrait utiliser :
# ndc querylog
[12/01/08]
DNS et Bind
128
de la mme manire quon le ferait avec une version rcente de ndc. Lancienne version de ndc rcupre le PID de named et lui envoie le signal WINCH. Si on ne dispose pas de ndc, il faut effectuer manuellement les oprations : trouver le PID du processus named et lui envoyer le signal appropri. Le PID de BIND est enregistr dans un chier, appel chier pid, qui est habituellement /var/run/named.pid ou, pour certains systmes, /etc/named.pid (voir la documentation de named). Comme le PID du serveur est la seule information enregistre dans le chier pid, il suft dexcuter la commande suivante pour envoyer le signal HUP :
# kill -HUP `cat /var/run/named.pid`
Si le chier pid est introuvable, il faut utiliser ps. Par exemple avec Unix BSD :
% ps -ax | grep named
Attention, on peut trouver plus dun processus named lors de lutilisation de ps. Cela peut provenir de la construction multithreaded de named dans Linux, qui est alors vu comme plusieurs processus. Si ps rvle plusieurs serveurs de noms, la commande pstree permet de rechercher le processus-parent. Bien que cela puisse paratre une vidence, nous prcisons que lon ne peut envoyer un signal quau processus-parent.
Mise jour du numro de srie dans db.DOMAINE. Ce numro est en gnral plac
vers le dbut du chier, pour faciliter son reprage.
[12/01/08]
DNS et Bind
129
Si le serveur de noms est en BIND 9.1 ou postrieur, on peut ne recharger que les
zones modies :
# rndc reload movie.edu
Le serveur primaire charge les nouvelles donnes de zone. Les serveurs-esclaves les tlchargeront en fonction de lintervalle de rafrachissement dni dans lenregistrement SOA. Avec un serveur-matre et des esclaves en BIND 8 ou 9, lesclave se synchronise rapidement car le serveur primaire annonce aux esclaves quil y a eu des modications, dans les 15 minutes suivant la mise jour. Pour supprimer un hte, il suft denlever ses enregistrement de ressource du chier db.DOMAINE et de chaque chier db.ADR. Il faut ensuite incrmenter le numro de srie dans chaque chier de zone modi, puis recharger le serveur de noms primaire.
Cette petite modication est la cl de la synchronisation des serveurs-esclaves. Loubli dincrmentation du numro de srie est lerreur la plus courante lors de la mise jour dune zone. Si on ne loublie gnralement pas au dbut, il arrive quon lomette par la suite et les serveurs-esclaves ne chargent pas les nouvelles donnes. On a donc tout intrt utiliser un outil standard, comme h2n, voire un outil maison.
[12/01/08]
DNS et Bind
130
Il existe plusieurs manires dutiliser des nombres entiers. La meilleure consiste incrmenter un compteur entier chaque modication de chier. Une autre mthode consiste driver le numro de srie partir de la date pour obtenir un numro de la forme AAAAMMJJ. Par exemple, le 15 janvier 2005, le numro de srie sera 20050115. Cette forme ne permet quune modication par jour, ce qui peut tre insufsant. Avec deux chiffres supplmentaires en queue du numro, on peut distinguer jusqu 100 modications par jour. Avec lexemple prcdent, la premire modication du jour a le numro de srie 2005011500, la suivante 2005011501, etc. Cette forme prsente la date de dernire incrmentation du numro de srie. h2n, utilis avec loption -y, gnre un numro de srie bas sur la date. Dans tous les cas, le numro de srie doit tenir dans un entier cod sur 32 bits.
[12/01/08]
DNS et Bind
131
Ainsi, si le numro de srie est gal 25000 et que lon veut redmarrer 1, il faut modier les numros en deux tapes. Il faut tout dabord ajouter la plus grande valeur possible au numro de srie (25000 + 2147483647 = 2147508647). Si le nombre obtenu est suprieur 4294967295 (la plus grande valeur dun nombre sur 32 bits), il a en fait boucl vers le dbut de lespace des nombres, par soustraction de 4294967296. Aprs cette modication, il faut attendre que tous les esclaves aient tlcharg une nouvelle copie de la zone. Ensuite, il faut nouveau modier le numro de srie, pour lui donner sa valeur dnitive (1), qui est maintenant suprieure au numro de srie actuel (2147508647). Lorsque tous les esclaves seront synchroniss, lopration de modication du numro de srie sera acheve.
Information textuelle
TXT signie TeXT (texte). Un enregistrement de ce type est simplement constitu dune liste de chanes caractres dau plus 255 caractres chacune. Le contenu dun enregistrement TXT est libre ; il peut servir noter lemplacement dun hte :
cujo IN TXT "Emplacement : niche de la salle des machines"
Lenregistrement TXT de BIND est limit 2 kilo-octets, mais il peut tre constitu de plusieurs chanes :
cujo IN TXT "Emplacement :" "niche de la salle des machines"
Personne responsable
RP signie personne responsable (Responsible Person). Un enregistrement RP peut tre attach tout nom, que ce soit un nud intermdiaire ou une feuille. Il dsigne le responsable dun hte ou dune zone. Il peut servir localiser aussi bien le responsable de lhte qui envoie des requtes, que celui de lhte recherch. Cet enregistrement requiert deux arguments : une adresse lectronique et un nom qui dsigne des donnes complmentaires concernant le contact. Ladresse lectronique est dans le mme format que celui utilis dans lenregistrement SOA : le @ est remplac par un . . Le nom dsigne un enregistrement TXT qui peut contenir, par exemple, les rfrences du responsable. Si le deuxime argument de lenregistrement RP est inutile, il faut indiquer le domaine racine ( . ).
[12/01/08]
DNS et Bind
132
Des enregistrements TXT pour root.movie.edu et snewman.movie.edu sont inutiles, car ce ne sont pas des noms rels, mais une forme dadresse lectronique.
h2n accepte dautres options : s serveur Les serveurs de noms signals par les enregistrements NS. Comme avec loption -n, utiliser plusieurs options -s pour plusieurs serveurs primaires ou esclaves. Un serveur en version 8 ou 9 annoncera (NOTIFY) une modication des donnes cette liste de serveurs. La valeur par dfaut est lhte sur lequel h2n est utilis.
[12/01/08]
DNS et Bind
133
h hte Lhte pour le champ MNAME de lenregistrement SOA. Cet hte doit tre le serveur primaire an de garantir un fonctionnement correct de la fonction NOTIFY. La valeur par dfaut est lhte sur lequel h2n est utilis. u administrateur Ladresse lectronique de ladministrateur des donnes de la zone. La valeur par dfaut est lutilisateur root de lhte sur lequel h2n est utilis. o autres Autres valeurs du SOA, numro de srie exclu, spares par : . La valeur par dfaut est 10800:3600:604800:86400. f fichier Fichier de conguration de h2n, pratique lorsque les options sont nombreuses. v 4|8 Gnration des chiers pour une version 4 ou une version 8 (valeur par dfaut). Le format du chier de conguration de BIND 9 tant fondamentalement le mme que celui de BIND 8, on peut utiliser -v 8 pour un serveur BIND 9. y Gnration du numro de version partir de la date. Voici un exemple utilisant toutes les options dcrites ci-dessus :
% h2n -f opts
Un hte peut tre dsign par son nom totalement quali (par exemple toystory.movie.edu) ou juste par son nom dhte (par exemple toystory). Dans ce dernier cas, h2n construit un nom totalement quali en y ajoutant le nom du domaine indiqu dans loption -d (si un point terminal est ncessaire, h2n lajoute). La liste complte des options de h2n est disponible dans sa documentation. Certains types denregistrement ne sont pas aiss gnrer partir du chier /etc/hosts. Ces enregistrements peuvent tre ajouts manuellement aux chiers de la zone, mais h2n les perd lors de la gnration suivante de la base de donnes. Pour rsoudre ce problme, h2n propose une solution. Les enregistrements complmentaires peuvent tre placs dans un chier spcl.DOMAINE, o DOMAINE est le
[12/01/08]
DNS et Bind
134
premier membre du nom de la zone. Lorsque h2n trouve ce chier, il linclut dans la base de donnes en ajoutant la ligne :
$INCLUDE spcl.DOMAINE
la n du chier db.DOMAINE (la directive $INCLUDE est dcrite plus loin dans ce chapitre). Par exemple, ladministrateur de movie.edu peut ajouter des enregistrements MX dans le chier spcl.movie an que les utilisateurs puissent crire directement movie.edu. Lorsquil trouve le chier, h2n ajoute la ligne :
$INCLUDE spcl.movie
la n du chier db.movie.
2.
[12/01/08]
DNS et Bind
135
[12/01/08]
DNS et Bind
136
Une variante de cette organisation consiste diviser en trois le chier de conguration : un chier principal, un chier contenant les dclarations pour la fonction de serveur primaire et un chier contenant les dclarations pour la fonction desclave. Voici un exemple :
options { directory "/var/named"; }; // // Fichiers non spcifiques une zone // zone "." { type hint; file "db.cache"; }; zone "0.0.127.in-addr.arpa" { type master; file "db.127.0.0"; }; include "named.conf.primary"; include "named.conf.slave";
DNS et Bind
137
On pourrait penser quil serait prfrable de placer le chier de conguration contenant les directives master dans le sous-rpertoire primary, dni dans le chier de conguration principal, en ajoutant une nouvelle directive directory pour dsigner ce sous-rpertoire et en supprimant le chemin primary/ pour chaque nom de chier, puisque ce sousrpertoire est dsormais le rpertoire de travail du serveur. On pourrait procder de la mme manire pour les lignes contenant slave. Mais cela ne fonctionnerait pas. Les serveurs BIND ne permettent pas de dnir plus dun rpertoire de travail. Le changement de contexte entre les rpertoires perturberait le serveur : les chiers de sauvegarde de la fonction de serveur-esclave aboutiraient dans le dernier rpertoire activ par le serveur, par exemple.
Le chier inclure et la nouvelle origine peuvent tre placs sur une seule ligne :
$INCLUDE db.classics.movie.edu classics.movie.edu. $INCLUDE db.comedy.movie.edu comedy.movie.edu.
Lorsque lorigine et le chier inclure sont dclars sur une seule ligne, la nouvelle origine ne concerne que le chier indiqu dans cette directive. Par exemple, lorigine comedy.movie.edu ne concerne que les noms du chier db.comedy.movie.edu. Aprs linclusion du chier db.comedy.movie.edu, lorigine a la mme valeur quavant la direc-
[12/01/08]
DNS et Bind
138
tive $INCLUDE, mme si une directive $ORIGIN a t utilise lintrieur du chier db.comedy.movie.edu.
Le chemin vers named-xfer est habituellement /usr/sbin ou /etc. named-xfer est habituellement utilis par un esclave pour le transfert de zone. La construction et le test dune nouvelle version de BIND dans un rpertoire spcial peuvent amener rednir lemplacement de named-xfer ; la version de test de named peut tre congure pour utiliser la version locale de named-xfer :
options { named-xfer "/home/rudy/named/named-xfer"; };
Puisque BIND 9 nutilise pas named-xfer, la directive ci-dessus na pas lieu dtre invoque avec BIND 9. Le serveur cre named_dump.db dans son rpertoire de travail lorsquon lui demande de gnrer une copie de sa base de donnes. Voici un exemple de modication de son emplacement :
options { dump-file "/home/rudy/named/named_dump.db"; };
Le serveur cre named.stats dans son rpertoire de travail lorsquon lui demande de gnrer ses statistiques. Voici un exemple de modication de son emplacement :
options { statistics-file "/home/rudy/named/named.stats"; };
[12/01/08]
DNS et Bind
139
surveiller. Dans le code-source de BIND, la plupart des messages sont classs selon la fonction remplie par le code auxquels ils se rfrent. Ainsi, un message produit par la partie de code qui gre les mises jour dynamiques est probablement dans la catgorie update. Les catgories sont prsentes plus loin. Chaque catgorie de message peut tre envoye vers un canal unique ou vers un ensemble de canaux. la gure 7-1, les requtes sont enregistres dans un chier, alors que les statistiques sont enregistres dans ce chier et envoyes syslog.
transfert de zone canal syslog
catgorie "requte"
canal fichier
Les cinq premiers niveaux de gravit (critical, error, warning, notice et info) correspondent ceux utiliss par syslog. Les deux suivants (debug et dynamic) sont spciques BIND. debug permet de prciser le niveau de dbogage de BIND ; la valeur standard est 1 . Si un niveau de dbogage diffrent est choisi, des informations de ce niveau sont gnres ds la mise en service du dbogage. Ainsi, en indiquant debug 3 , des informations de niveau 3 sont directement gnres, mme si on nenvoie quune seule commande trace au serveur de noms. Par contre, avec le niveau de gravit dynamic, le serveur de noms gnre des messages selon le niveau de dbogage courant : si on envoie une seule commande trace au serveur de noms, le serveur enregistre les informations de niveau 1 ; si on en envoie trois, le serveur gnre des informations de niveau 1 3. Le niveau de gravit par dfaut est info, ce qui signie quon ne verra pas de messages de dbogage tant quon naura pas prcis la gravit.
On peut congurer un canal pour enregistrer dans un chier aussi bien les messages de dbogage que les messages de syslog. Par contre, lenvoi de lensemble syslog est impossible, les messages de dbogage ne pouvant pas lui tre envoys.
Lexemple suivant illustre la conguration de deux canaux. Le premier canal est dirig vers syslog ; les messages sont envoys vers le service daemon au niveau de gravit info, ce qui inclut implicitement les niveaux de gravit infrieurs. Le second est dirig vers un
[12/01/08]
DNS et Bind
140
chier qui rcupre les messages de tout niveau de gravit, ainsi que les messages envoys syslog. Voici la structure logging correspondante :
logging { channel mon_syslog { syslog daemon; // Les messages de dbogage ne sont pas envoys syslog ; il ny // a donc aucun intrt utiliser les niveaux de gravit debug // ou dynamic. Utilisation du plus bas niveau de syslog : info. severity info; }; channel mon_fichier { file "/tmp/log.msgs"; // Rglage du niveau de gravit dynamic, afin // de voir tous les messages de dbogage. severity dynamic; }; };
Il faut maintenant indiquer au serveur de noms ce quil doit envoyer aux deux canaux. Mettons en uvre le cas de la gure 7-1, dans lequel les statistiques sont envoyes syslog et crites dans un chier et o les requtes sont enregistres dans ce mme chier. Cette conguration se fait aussi dans la structure logging. Il suft de complter la structure prcdente :
logging { channel mon_syslog { syslog daemon; severity info; }; channel mon_fichier { file "/tmp/log.msgs"; severity dynamic; }; category xfer-out { mon_syslog; mon_fichier; }; category queries { mon_fichier; }; };
Il faut ensuite dmarrer le serveur de noms et lui envoyer quelques requtes. Si rien nest crit dans le chier log.msgs, il faut valider le dbogage pour mmoriser les requtes :
# rndc trace
Les requtes sont alors enregistres dans le chier log.msgs. On constate aussi quun nouveau chier, named.run, a t cr dans le rpertoire de travail du serveur. Il contient tous les autres messages de dbogage (autres que les requtes). Si on souhaite viter cela, on peut utiliser la catgorie default. Si aucun canal nest associ une catgorie donne, les messages de cette dernire sont attachs au canal de la catgorie default, que lon peut ignorer en les redirigeant vers le canal null :
logging {
[12/01/08]
DNS et Bind
141
En dmarrant le serveur et en validant le dbogage au niveau 1 (si ncessaire), les requtes sont enregistres dans log.msgs ; named.run a aussi t cr, mais le chier est vide. Au bout de quelques jours, lun des administrateurs constate que le serveur envoie beaucoup moins dinformations syslog que ce quil devrait. Que se passe-t-il ? En effet, en standard, la catgorie default est congure pour envoyer les messages la fois vers syslog et vers le chier de dbogage named.run. En redirigeant la catgorie default vers le canal null, les autres messages de syslog disparaissent aussi. Voici la conguration qui aurait d tre utilise :
category default { mon_syslog; };
Les messages de syslog sont bien envoys syslog, mais les informations de dbogage ou de syslog ne sont pas crites dans un chier. Il sera sans doute ncessaire dessayer plusieurs congurations avant dobtenir exactement ce que lon souhaite. Lexemple ci-dessus donne quelques indications sur ce quil est possible de faire.
La directive logging
Voici la syntaxe complte de la directive logging. Elle est impressionnante et nous prsenterons plusieurs exemples de son utilisation.
logging { [ channel nom_canal{ ( file chemin [ versions ( nombre | unlimited ) ] [ size taille ] | syslog ( kern | user | mail | daemon | auth | syslog | lpr | news | uucp | cron | authpriv | ftp | local0 | local1 | local2 | local3 | local4 | local5 | local6 | local7 ) | stderr | null ); [ severity ( critical | error | warning | notice | info | debug [ level ] | dynamic ); ]
[12/01/08]
DNS et Bind
142
[ print-category yes_or_no; ] [ print-severity yes_or_no; ] [ print-time yes_or_no; ] }; ] [ category catgorie { nom_canal; [ nom_canal; ... ] }; ] ... };
Voici maintenant les canaux crs en standard. Le serveur de noms les cre dofce, mme si on nen veut pas. Ces canaux ne sont pas modiables ; on ne peut que crer dautres canaux :
channel default_syslog { syslog daemon; // Envoi au service daemon de syslog. severity info; // Envoi des messages de gravit info ou plus. }; channel default_debug { file "named.run"; severity dynamic; }; channel default_stderr { // stderr; // // // severity info; // }; channel null { null; }; criture dans stderr. Seul BIND 9 permet de dfinir son propre canal stderr ; BIND 8 utilise le canal interne default_stderr. Envoi des messages de gravit info ou plus.
// // // //
criture dans named.run situ dans le rpertoire de travail. Envoi des messages selon le niveau actuel de dbogage du serveur.
Si aucun canal nest associ aux catgories default, panic, packet et eventlib, un serveur de noms leur attribue dofce les canaux suivants en BIND 8 :
logging { category category category category }; default { default_syslog; default_debug; }; panic { default_syslog; default_stderr; }; packet { default_debug; }; eventlib { default_debug; };
ou, en BIND 9 :
logging { category default { default_syslog;
[12/01/08]
DNS et Bind
143
Comme cela a t indiqu prcdemment, la catgorie default aboutit la fois dans syslog et dans le chier de dbogage, named.run, en standard : tous les messages de type syslog de gravit info et suprieure sont envoys syslog et, lorsque le dbogage est activ, ils sont enregistrs dans named.run en plus des messages de dbogage.
La valeur de la taille peut inclure lunit : k ou K dsigne des kilo-octets, m ou M des mga-octets et g ou G des giga-octets. Pour voir les messages de dbogage, il est important de xer la gravit soit debug, soit dynamic. La gravit par dfaut est info, qui ne montre que les messages de syslog.
[12/01/08]
DNS et Bind
144
syslog local0; severity info; }; };
Canal stderr
Le canal prdni default_stderr permet dcrire des messages sur le descripteur de chiers stderr. Avec BIND 8, on ne peut pas dnir dautre descripteur de chiers pour utiliser stderr, alors quon peut le faire avec BIND 9.
Canal null
Le canal prdni null permet dliminer des messages.
La catgorie de ce message est cong et sa gravit est debug au niveau 1. Voici maintenant un exemple de conguration correspondant ces trois ajouts :
logging { channel mon_fichier { file "log.msgs"; severity debug; print-category yes; print-severity yes; print-time yes; }; };
Lajout dune estampille temporelle un message destin syslog ne prsente aucun intrt, car syslog ajoute lui-mme la date et lheure.
Catgories de BIND 8
default Si une catgorie nest associe aucun canal, les messages correspondants sont attribus la catgorie default. En quelque sorte, default est synonyme de toute catgorie . Toutefois, certains messages nappartiennent aucune catgorie. Donc, mme en associant toutes les catgories possibles des canaux, des messages aboutiront dans la catgorie default.
[12/01/08]
DNS et Bind
145
cname Erreur sur CNAME (message ... has CNAME and other data). config Traitement de haut niveau du chier de conguration. db Opration sur une base de donnes. eventlib vnement au niveau du systme ; doit tre associ un canal unique de type chier. La valeur standard est :
category eventlib { default_debug; };
insist chec lors dun test interne de cohrence. lame-servers Dlgation dautorit dfectueuse. load Chargement de zone. maintenance Opration priodique de maintenance (telle quune requte du systme). ncache vnement li la mmoire cache des rponses ngatives. notify Notication asynchrone de modication de zone. os Problme avec le systme dexploitation. packet Dcodage de paquets reus et envoys ; doit tre associ un canal unique de type chier. La valeur standard est :
category packet { default_debug; };
panic Problme causant larrt du serveur. Ce problme est signal la fois dans la catgorie panic et dans sa catgorie native. La valeur standard est :
category panic { default_syslog; default_stderr; };
[12/01/08]
DNS et Bind
146
queries Journalisation des requtes.
response-checks Rponse malforme, information complmentaire hors sujet, etc. security Requte accepte/refuse. statistics Rapport priodique dactivit. update vnement de mise jour dynamique. update-security Rejet de mise jour dynamique (en 8.4.0, ces messages aboutissent dans leur propre catgorie, ce qui permet de mieux les reprer). xfer-in Transfert de zone dun serveur distant vers le serveur local. xfer-out Transfert de zone du serveur local vers un serveur distant.
Catgories de BIND 9
default Comme avec BIND 8, la catgorie default de BIND 9 correspond toute catgorie non associe un canal. Par contre, la catgorie default de BIND 9 nenglobe aucun message non affect une catgorie. general Cette catgorie contient tous les messages non explicitement catalogus. client Traitement de requte de client. config Analyse et traitement du chier de conguration. database Message relatif la base de donnes interne de BIND ; utilise pour enregistrer les donnes de la zone ainsi que la mmoire cache des enregistrements. dnssec Traitement des rponses signes DNSSEC. lame-servers Dlgation dautorit dfectueuse (depuis BIND 9.1.0 ; dans les premires versions de BIND 9, ces informations appartenaient la catgorie resolver).
[12/01/08]
DNS et Bind
147
resolver Rsolution de nom, dont le traitement des requtes rcursives venant dun resolver. security Requte accepte/refuse. update vnement de mise jour dynamique. update-security Rejet de mise jour dynamique. Voyez la remarque dans la description des catgories de BIND 8 (ajout en 9.3.0). xfer-in Transfert de zone dun serveur distant vers le serveur local. xfer-out Transfert de zone du serveur local vers un serveur distant.
Et celles de BIND 9 :
logging { category default { default_syslog; default_debug; }; };
En standard, la catgorie et la gravit ne sont pas incluses dans les messages dirigs vers le canal default_debug. Pour enregistrer tous les messages possibles, avec leur catgorie et leur gravit, il faut modier soi-mme la conguration. Voici un exemple de conguration de logging effectuant ce type denregistrement pour BIND 8 :
[12/01/08]
DNS et Bind
148
logging { channel mon_fichier { file "log.msgs"; severity dynamic; print-category yes; print-severity yes; }; category category category category category }; default panic packet eventlib queries { { { { {
La conguration pour BIND 9 ne contiendrait pas les catgories panic, packet et eventlib. Chaque catgorie a t dnie pour inclure le canal mon_chier. Par rapport la conguration prcdente, la catgorie queries a t ajoute. En effet, les requtes ne sont pas mmorises moins que lon ne congure cette catgorie. En dmarrant le serveur et en initialisant le dbogage au niveau un, on obtient dans le chier log.msgs des messages similaires aux suivants (BIND 9 ne montrerait que le message de requte car il ne gnre plus les autres messages) :
queries: default: default: default: info: debug debug debug XX 1: 1: 1: /192.253.253.4/foo.movie.edu/A req: nlookup(foo.movie.edu) id 4 type=1 class=1 req: found 'foo.movie.edu' as 'foo.movie.edu' (cname=0) ns_req: answer -> [192.253.253.4].2338 fd=20 id=4 size=87
Une fois que lon a repr les messages que lon veut mmoriser, on peut recongurer le serveur pour nenregistrer que ceux-l.
Le secret de la russite
Il est important dtre inform dun problme avant quil ne devienne critique. De plus, une intervention prcoce, avant la dgradation complte du systme, permet souvent de rsoudre plus facilement le problme. Il ne sera pas question ici de localiser une panne suite au dveloppement dun problme (un chapitre entier y sera consacr), mais daction prventive. Les deux parties qui suivent traitent de lobservation priodique du chier de syslog et de lanalyse des statistiques du serveur de noms an danticiper les problmes.
[12/01/08]
DNS et Bind
Le secret de la russite
149
Ce message indique que named vient de dmarrer et prcise la version de BIND utilise, ainsi que, dans le cas de BIND 8, lauteur et lhte de la compilation. Si on nest pas certain de la version de BIND que lon utilise, il suft de consulter ce chier et de rechercher ce message. chaque fois que named reoit une commande reload, un serveur envoie un message avec une priorit LOG_NOTICE. Voici celui de BIND 8 :
Jan 10 20:50:16 toystory named[3221]: reloading nameserver
et celui de BIND 9 :
Jul 27 16:27:45 toystory named[7047]: loading configuration from '/etc/named.conf'
Ce message indique que named a recharg la base de donnes (comme consquence dune commande reload). Il peut aider dterminer pendant combien de temps un mauvais enregistrement de ressource a t en service ou pendant combien de temps une zone complte a t dfectueuse suite un incident pendant une mise jour. Voici un autre message qui peut apparatre peu de temps aprs le dmarrage dun serveur :
Jan 10 20:50:20 toystory named[3221]: cannot set resource limits on this system
Il indique que le serveur a dtect que le systme dexploitation ne gre pas les appels systme getrlimit() et setrlimit(), utiliss lors de la dnition de coresize, datasize, stacksize ou les. Ce message apparat systmatiquement, mme si ces quatre instructions ne sont pas utilises dans le chier de conguration ; dans ce cas, le message peut tre ignor. Par contre, si ces instructions sont utilises et si on pense que le systme dexploitation comprend getrlimit() et setrlimit(), il faut recompiler BIND en dnissant HAVE_GETRUSAGE. Ce message a un niveau de priorit LOG_INFO. Si le serveur est situ sur un hte multi-domicili, et tout particulirement sur un hte possdant des interfaces virtuelles, le message suivant peut apparatre peu de temps aprs le dmarrage du serveur ou mme aprs une priode de bon fonctionnement :
Jan 10 20:50:31 toystory named[3221]: fcntl(dfd, F_DUPFD, 20): Too many open files Jan 10 20:50:31 toystory named[3221]: fcntl(sfd, F_DUPFD, 20): Too many open files
Il indique que BIND est court de descripteurs de chiers. BIND utilise un nombre raisonnable de descripteurs de chiers : deux pour chaque interface de rseau coute (un pour UDP et un pour TCP) et un pour ouvrir les chiers de donnes de zone. Si cest plus que ce que le systme dexploitation ne peut attribuer un processus, BIND gnre le message ci-dessus. Le niveau de priorit du message dpend de la section de BIND qui sest vue refuser lattribution dun descripteur de chiers : plus cest critique, plus le niveau de priorit est lev.
[12/01/08]
DNS et Bind
150
La solution consiste, soit amener BIND utiliser moins de descripteurs de chiers, soit lever la limite impose par le systme dexploitation :
sil nest pas ncessaire que BIND coute toutes les interfaces rseau (en particulier
les interfaces virtuelles), utilisez linstruction listen-on pour indiquer BIND quelles interfaces il doit couter. Le Chapitre 10 dtaille la syntaxe de listen-on ;
si le systme dexploitation comprend getrlimit() et setrlimit() (voir plus haut), congurez le serveur de noms pour quil utilise un plus grand nombre de chiers, laide de linstruction les. Le Chapitre 10 dcrit lutilisation de les ;
Ce message indique quel moment une zone a t charge, en prcisant la classe (IN dans ce cas) et le numro de srie de lenregistrement SOA de la zone. Toutes les heures environ, BIND 8 gnre des statistiques la priorit LOG_INFO :
Feb 18 14:09:02 toystory named[3565]: USAGE 824681342 824600158 CPU=13.01u/3.26s CHILDCPU=9.99u/12.71s Feb 18 14:09:02 toystory named[3565]: NSTATS 824681342 824600158 A=4 PTR=2 Feb 18 14:09:02 toystory named[3565]: XSTATS 824681342 824600158 RQ=6 RR=2 RIQ=0 RNXD=0 RFwdQ=0 RFwdR=0 RDupQ=0 RDupR=0 RFail=0 RFErr=0 RErr=0 RTCP=0 RAXFR=0 RLame=0 Ropts=0 SSysQ=2 SAns=6 SFwdQ=0 SFwdR=0 SDupQ=5 SFail=0 SFErr=0 SErr=0 RNotNsQ=6 SNaAns=2 SNXD=1
BIND 9 ne fournit pas les statistiques sous la forme de messages de journalisation. Les deux premiers nombres de chaque message sont des estampilles temporelles ; en soustrayant le second au premier, on obtient le temps coul en secondes depuis le dmarrage du serveur. CPU indique le temps utilis par le serveur en mode utilisateur (13,01 secondes) et en mode systme (3,26 secondes). CPU donne les mmes renseignements pour les processus-ls. NSTATS indique le nombre de requtes reues, par type. XSTATS fournit des statistiques supplmentaires. NSTATS et XSTATS sont dcrits en dtail plus loin dans ce chapitre. La dcouverte dun nom non conforme la RFC 952 provoque la gnration du message suivant vers syslog :
Jul 24 20:56:26 toystory named[1496]: ID_4.movie.edu IN: bad owner name (check-names)
avec la priorit LOG_ERROR (voir le Chapitre 4 pour les rgles sur les noms dhtes). Le message syslog suivant est une alerte signalant un problme dans les donnes de la zone, il est envoy avec la priorit LOG_ERROR :
Jan 10 20:48:38 toystory2 named[3221]: ts2 has CNAME and other data (invalid)
[12/01/08]
DNS et Bind
Le secret de la russite
151
Ce message signale un problme dans les donnes de zone. Il peut provenir, par exemple, des enregistrements suivants :
ts2 ts2 toystory2 toystory2 IN IN IN IN CNAME MX A MX toystory2 10 toystory2 192.249.249.10 10 toystory2
Lenregistrement MX pour ts2 est incorrect ; cest ce qui gnre le message ci-dessus. ts2 est un alias de toystory2, qui est un nom canonique. Comme cela a dj t indiqu, lorsquun serveur recherche un nom et dcouvre un enregistrement CNAME, il remplace le nom original par le nom canonique et utilise ce dernier pour poursuivre la recherche. Si le serveur recherche linformation MX pour ts2, il trouve dabord un enregistrement CNAME et recherche alors lenregistrement MX pour toystory2 ; il nutilise donc jamais lenregistrement MX pour ts2. Ce dernier nest donc pas valable. En rsum, tous les enregistrements de ressource concernant un hte doivent utiliser le nom canonique ; lutilisation dun alias la place du nom canonique est une erreur. Le message suivant indique quun esclave BIND 8 narrive pas atteindre un matre lors dune tentative de transfert de zone :
Jan 10 20:52:42 wormhole named[2813]: zoneref: Masters for secondary zone "movie.edu" unreachable
Ce message est envoy avec la priorit LOG_NOTICE en BIND 8 et avec la priorit LOG_ERROR en BIND 9, et ce uniquement lors du premier chec de transfert de zone. Lorsque le transfert ni par seffectuer, BIND gnre un autre message syslog. Si le message dchec apparat, il nest pas ncessaire dintervenir immdiatement : le serveur-esclave effectue plusieurs tentatives de transfert, selon la priodicit indique dans lenregistrement SOA. Au bout de quelques jours (ou la moiti du dlai dexpiration), il faut regarder si le transfert a eu lieu. Si un serveur na pas gnr de message syslog de succs de transfert, on peut tester lestampille temporelle du chier de sauvegarde de zone ; en effet, lorsquun transfert se fait correctement, un nouveau chier de sauvegarde est cr. Lorsquun esclave constate quune zone est jour, lestampille temporelle du chier de sauvegarde est modie (comme le ferait la commande Unix touch). La commande ls -l /usr/local/named/db* indique alors quand lesclave a t synchronis pour la dernire fois. Les problmes de transferts de zone seront dcrits au Chapitre 14. Un message avec la priorit LOG_INFO apparat sur le serveur-matre lorsque lesclave charge de lui-mme de nouvelles donnes ou lorsquun outil, tel que nslookup, transfre une zone :
Mar 7 07:30:04 toystory named[3977]: client 192.249.249.1#1076: transfer of 'movie.edu/IN':AXFR started
Si linstruction allow-transfer (dcrite au Chapitre 11) est utilise pour restreindre la liste des serveurs pouvant charger une zone, le message peut indiquer denied la place de started :
[12/01/08]
DNS et Bind
152
Jul 27 16:59:26 toystory named[7174]: client 192.249.249.1#1386: zone transfer 'movie.edu/AXFR/IN' denied
Le plus souvent, ce message indique quun bogue dans le serveur de noms a provoqu le renvoi dun paquet erron, en rponse une requte. Lerreur vient plutt du serveur de noms distant (192.1.1.1) que du serveur local (wormhole). Le diagnostic prcis ncessiterait une capture du paquet en cause, puis son analyse. Une analyse manuelle de paquet dpasse le cadre de cet ouvrage. Ce type derreur apparat lorsque le paquet indique quil contient plusieurs rponses dans la section des rponses (par exemple, quatre enregistrements de ressource dadresse) alors quil ny en a quune. La seule action possible consiste prvenir ladministrateur de lhte dfectueux par courriel (en esprant que lon puisse obtenir le nom de cet hte partir de son adresse). Ce type derreur peut aussi se produire lorsque le rseau sous-jacent altre les paquets UDP de rponse. Comme le contrle derreur sur les paquets UDP est optionnel, le problme peut ne pas tre dtect bas niveau. Lorsque des donnes concernant une autre zone sont introduites dans ses chiers de zone, named gnre le message suivant en BIND 8 :
Jun 13 08:02:03 toystory named[2657]: db.movie.edu:28: data "foo.bar.edu" outside zone "movie.edu" (ignored)
et le suivant en BIND 9 :
Jul 27 17:07:01 toystory named[7174]: dns_master_load: db.movie.edu:28: ignoring out-of-zone data
; ajout de cette entre dans la mmoire cache du serveur de noms foo.bar.edu. IN A 10.0.7.13
des informations concernant la zone bar.edu apparaissent lintrieur des chiers de notre zone movie.edu. Ce message syslog est enregistr avec la priorit LOG_WARNING. Il nest pas possible dutiliser un CNAME dans le champ des donnes dun enregistrement de ressources. BIND 8 signale ce type derreur :
Jun 13 08:21:04 toystory named[2699]: "movie.edu IN NS" points to a CNAME (mi.movie.edu)
Jusquen 9.3.0, BIND 9 ne signale rien. Voici un exemple correspondant ce dernier type derreur :
@ IN IN toystory.movie.edu. IN monsters-inc.movie.edu. IN mi.movie.edu. IN NS NS A A CNAME toystory.movie.edu. mi.movie.edu. 192.249.249.3 192.249.249.4 monsters-inc.movie.edu.
[12/01/08]
DNS et Bind
Le secret de la russite
153
Le second enregistrement NS devrait contenir monsters-inc.movie.edu au lieu de mi.movie.edu. Le message derreur napparat pas immdiatement aprs le dmarrage du serveur.
Ce message syslog napparat que lorsque les donnes incorrectes sont consultes. Il est gnr par BIND 8 avec la priorit LOG_INFO.
Le message suivant indique que le serveur sest peut-tre protg lui-mme dune attaque :
Jun 11 11:40:54 toystory named[131]: Response from unexpected source ([204.138.114.3].53)
Le serveur a envoy une requte un serveur distant et la rponse reue ne vient pas dune adresse correspondant au serveur interrog. Il est possible quil sagisse dune attaque : un intrus a provoqu linterrogation dun serveur distant par le serveur local et, simultanment, a envoy des rponses (en prtendant que ces rponses venaient du serveur distant) an que le serveur local les place dans sa mmoire cache. Il a pu, par exemple, envoyer un faux enregistrement PTR, qui dsignerait ladresse dun de ses propres htes comme appartenant un domaine privilgi du point de vue du serveur local. Une fois que lenregistrement PTR est stock en mmoire cache, lintrus peut utiliser une des r commandes de BSD (comme rlogin) pour se connecter au systme. Cette situation peut aussi se prsenter si un serveur-parent dune zone ne connat quune seule des adresses IP dun serveur multi-domicili de cette zone. Dans ce cas, le serveur-parent nindiquera que ladresse IP quil connat, alors que le serveur lui-mme rpondra peut-tre par lautre adresse IP Ce cas ne devrait pas se prsenter si le serveur . utilise BIND, car BIND prend soin dutiliser pour la rponse la mme adresse que celle utilise pour la requte. Le message syslog est enregistr avec la priorit LOG_INFO. Voici un autre type de message syslog :
Jun 10 07:57:28 toystory named[131]: No root name servers for class 226
Les seules classes dnies ce jour sont la classe 1 pour lInternet (IN), la classe 3 pour Chaos (CH), et la classe 4 pour Hesiod (HS). La classe 226 nexistant pas, on ne peut rien faire de cette requte. De plus, si le champ classe est corrompu, il se peut que le reste de la requte le soit galement. Ce type de problme peut venir dun serveur distant dfectueux ou dun datagramme UDP corrompu. Le message syslog est enregistr avec la priorit LOG_INFO. Le message suivant peut apparatre sur un serveur secondaire :
Jun 7 20:14:26 wormhole named[29618]: Zone "253.253.192.in-addr.arpa" (class 1) SOA serial# (3345) rcvd from [192.249.249.10] is < ours (563319491)
Ici, ladministrateur de 253.253.192.in-addr.arpa a chang le format du numro de srie sans prvenir qui que ce soit. Pour rsoudre le problme, il suft darrter le service de noms sur lesclave, puis deffacer les chiers de sauvegarde de la zone et enn de red-
[12/01/08]
DNS et Bind
154
marrer le serveur. De cette manire, le serveur-esclave oublie lancien numro de srie de lenregistrement SOA et tlcharge une nouvelle copie des chiers, avec le nouveau numro de srie. Le message syslog est enregistr avec la priorit LOG_NOTICE. Si ladministrateur responsable de lerreur sur le numro de srie utilise BIND 8 ou 9, il peut avoir omis un message gnr par son serveur, lui indiquant que son numro de srie a boucl. Sur un serveur BIND 8, le message ressemble
Jun 7 19:35:14 toystory named[3221]: WARNING: new serial number < old (zp->z_serial < serial)
Ce message est journalis au niveau LOG_NOTICE. Dans tous les cas, il peut tre bon de rappeler ladministrateur fautif de consulter les chiers de journalisation (syslog) aprs toute modication sur le serveur de noms. En BIND 8, le message suivant signale une mauvaise dlgation dans lInternet :
Aug 21 00:59:06 toystory named[12620]: Lame server on 'foo.movie.edu' (in 'MOVIE.EDU'?): [10.0.7.125].53 'NS.HOLLYWOOD.LA.CA.US': learnt (A=10.47.3.62,NS=10.47.3.62)
Visiblement, un serveur-parent dlgue la gestion dun sous-domaine un serveurenfant mais ce dernier ne fait pas autorit sur le sous-domaine. Dans lexemple, le serveur de edu dlgue movie.edu 10.0.7.125, alors que le serveur situ sur cet hte ne fait pas autorit sur movie.edu. moins de connatre ladministrateur de movie.edu, il ny a rien faire. Un message de priorit LOG_INFO est envoy syslog. Si le chier de conguration contient :
logging { category queries { default_syslog; }; };
Ces messages comprennent ladresse IP de lhte qui a envoy la requte, et la requte elle-mme. partir de BIND 8.2.1, les requtes rcursives sont marques XX+ au lieu de XX. Un serveur BIND 9 marque les requtes rcursives par un + et les non-rcursives par un - . BIND 8.4.3 et BIND 9.3.0 et leurs successeurs marquent les requtes
[12/01/08]
DNS et Bind
Le secret de la russite
155
EDNS0 par un E et les requtes signes par TSIG par un S (nous parlerons de EDNS0 au Chapitre 10 et de TSIG au Chapitre 11). Il est ncessaire de sassurer que lon dispose de sufsamment despace sur disque avant denregistrer ce type de messages (sur un serveur actif, la commande querylog permet de valider ou dinhiber lenregistrement de ces messages). Les messages syslog suivants peuvent apparatre partir de BIND 8.1.2 :
May 19 11:06:08 named[21160]: bind(dfd=20, [10.0.0.1].53): Address already in use May 19 11:06:08 named[21160]: deleting interface [10.0.0.1].53 May 19 11:06:08 named[21160]: bind(dfd=20, [127.0.0.1].53): Address already in use May 19 11:06:08 named[21160]: deleting interface [127.0.0.1].53 May 19 11:06:08 named[21160]: not listening on any interfaces May 19 11:06:08 named[21160]: Forwarding source address is [0.0.0.0].1835 May 19 11:06:08 named[21161]: Ready to answer queries.
Ici, un second serveur a t dmarr sur le mme hte alors que le premier continue fonctionner. Le second serveur effectue un service normal mais nest lcoute daucune interface.
[12/01/08]
DNS et Bind
156
1 application
requte 2 application
l im
re
dpassement de dlai
qu
te
requte 4 ser veur local vers serveur distant 1 rception requte 2 envoi rponse requte 2 rception et traitement rponse par application envoi rponse requte 1 application rception rponse requte 1 rception requte 4
1
rception rponse requte 2 envoi rponse requte 4 requte 3 perdue (machine arrte) rception rponse requte 4
re
re
[12/01/08]
DNS et Bind
Le secret de la russite
157
change application vers serveur local serveur local vers application serveur local vers serveur distant numro 1 serveur distant numro 1 vers serveur local serveur local vers serveur distant numro 2 serveur distant numro 2 vers serveur local serveur local vers serveur distant numro 3 serveur distant numro 3 vers serveur local 2 requtes 1 rponse 2 requtes 2 rponses 1 requte 1 rponse 1 requte 0 rponses
Nombre
Dans lexemple, le serveur local reoit des requtes en provenance dune application unique, puis les redirige vers des serveurs distants. Dans le cas gnral, le serveur local recevrait galement des requtes en provenance de serveurs distants. En effet, de mme quil interroge des serveurs distants pour trouver les informations dont il a besoin, des serveurs distants interrogent le serveur local pour trouver les informations qui leur sont ncessaires. Pour simplier la gure et les tableaux, nous navons pas reprsent les requtes distantes.
Statistiques de BIND 8
Aprs cette prsentation, nous allons tudier des cas plus complexes de statistiques. Pour capturer les statistiques dun serveur BIND 8, utilisez la commande ndc :
# ndc stats
Il faut attendre quelques secondes avant de consulter le chier named.stats dans le rpertoire de travail du serveur de noms. Si aucune statistique napparat dans ce chier, cest que named a probablement t compil sans que loption STATS ait t dnie, ce qui fait que les statistiques ne sont pas collectes. Les statistiques qui suivent proviennent dun serveur BIND 4.9.3 de Paul Vixie. Un serveur BIND 8 prsente les mmes rubri-
[12/01/08]
DNS et Bind
158
ques, mais dans un ordre diffrent et sans RNotNsQ. Les statistiques de BIND 9 sont totalement diffrentes et sont prsentes plus loin.
+++ Statistics Dump +++ (800708260) Wed May 17 03:57:40 1995 746683 time since boot (secs) 392768 time since reset (secs) 14 Unknown query types 268459 A queries 3044 NS queries 5680 CNAME queries 11364 SOA queries 1008934 PTR queries 44 HINFO queries 680367 MX queries 2369 TXT queries 40 NSAP queries 27 AXFR queries 8336 ANY queries ++ Name Server Statistics ++ (Legend) RQ RR RIQ RNXD RFwdQ RFwdR RDupQ RDupR RFail RFErr RErr RTCP RAXFR RLame ROpts SSysQ SAns SFwdQ SFwdR SDupQ SFail SFErr SErr RNotNsQ SNaAns SNXD (Global) 1992938 112600 0 19144 63462 60527 194 347 3420 0 5 2235 27 35289 0 14886 1927930 63462 60527 107169 10025 119 0 1785426 805592 35863 [15.255.72.20] 485 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 485 0 0 0 0 0 0 0 485 0 [15.255.152.2] 441 137 0 1 2 108 0 0 0 0 0 0 0 0 0 13 439 85 7 84 0 0 0 0 431 0 [15.255.152.4] 770 89 0 1 4 69 0 0 0 0 0 0 0 0 0 14 766 68 5 7 0 0 0 0 755 0 ... <lignes supprimes>
Si les statistiques du serveur BIND 8 ne prsentent aucune section par adresse IP la suite de (Global) , il faut initialiser host-statistics yes dans la directive options si on souhaite surveiller le trac par hte :
options { host-statistics yes; };
Bien sr, une telle surveillance demande une quantit de mmoire importante et il ne faut pas lactiver en permanence, moins de vouloir btir un prol de lactivit du serveur. Analysons maintenant les statistiques, ligne par ligne.
+++ Statistics Dump +++ (800708260) Wed May 17 03:57:40 1995
[12/01/08]
DNS et Bind
Le secret de la russite
159
Cette ligne indique quand cette nouvelle srie de statistiques a t gnre. Le nombre entre parenthses (800708260) est le nombre de secondes depuis l Epoch dUnix (le 1er janvier 1970). Heureusement, BIND lafche aussi dans un format humainement comprhensible, ce qui donne ici le 17 mai 1995 3 h 57 mn 40 s. La ligne :
746683 time since boot (secs)
indique, en secondes, la dure dactivit du serveur. Pour convertir en jours, il faut diviser par 86400 (606024), ce qui donne ici environ 8,5 jours. La ligne :
392768 time since reset (secs)
indique le temps coul depuis le dernier rechargement. Ce nombre ne diffre probablement du prcdent que sur un serveur primaire. Les esclaves obtiennent automatiquement leurs donnes par tlchargement et ne sont gnralement pas rechargs. Puisque ce serveur a t rinitialis, il est sans doute serveur primaire. La ligne :
14 Unknown query types
indique que ce serveur a reu 14 requtes concernant des types quil na pas reconnus : soit quelquun exprimente des nouveaux types de donnes, soit un serveur est dfectueux, soit Paul a besoin de mettre son serveur jour. La ligne :
268459 A queries
signale quil y a eu 268459 requtes dadresse. Ces requtes sont les plus courantes. La ligne :
3044 NS queries
montre quil y a eu 3044 requtes de recherche de serveur de noms. En interne, les serveurs gnrent des requtes NS lorsquils recherchent les serveurs de la racine. En externe, des applications comme dig ou nslookup peuvent aussi tre utilises pour rechercher des enregistrements NS.
5680 CNAME queries
Certaines versions de sendmail effectuent des recherches de type CNAME an de canoniser une adresse de courrier (remplacer un alias par le nom canonique). Dautres versions de sendmail utilisent plutt les requtes de type ANY, que nous verrons plus loin. Les autres requtes de type CNAME proviennent souvent de dig ou de nslookup.
11364 SOA queries
Les requtes de SOA sont gnres par les serveurs-esclaves qui vrient ainsi sils sont jour. Sils ne sont pas jour, ils envoient ensuite une requte AXFR pour provoquer le transfert de zone. Lexemple signalant des requtes AXFR, on peut en conclure que des serveurs-esclaves chargent des donnes en provenance de ce serveur. La ligne :
1008934 PTR queries
[12/01/08]
DNS et Bind
160
comptabilise les requtes de PTR qui reprsentent les correspondances dadresse vers nom. De nombreux logiciels recherchent les noms partir des adresses IP : inetd, rlogind, rshd, les logiciels de gestion ou de capture sur rseau. La ligne :
44 HINFO queries
indique le nombre de requtes dinformation sur les htes, HINFO, qui correspondent souvent des oprations manuelles.
680367 MX queries
Les routeurs de messagerie, tels que sendmail, effectuent des recherches dchangeur de messagerie.
2369 TXT queries
Pour que cette valeur soit aussi leve, il faut que les requtes correspondantes proviennent dapplications telles que Harvest, outil de recherche dinformation et de rcupration de donnes dvelopp lUniversit du Colorado.
40 NSAP queries
NSAP est un type denregistrement relativement rcent, utilis pour mettre en correspondance des noms et des adresses de point daccs des rseaux OSI.
27 8336 AXFR queries ANY queries
Les esclaves effectuent des requtes AXFR pour dclencher des transferts de zone. Les requtes ANY recherchent tout type de donnes correspondant un nom. Elles sont le plus souvent utilises par sendmail. Comme sendmail recherche les enregistrements CNAME, MX ou dadresse correspondant une destination de courrier, il gnre une requte de type ANY an que tous les enregistrements de ressource soient rapatris vers le serveur local et stocks dans sa mmoire cache. Les statistiques suivantes sont prsentes hte par hte. Une premire lecture permet dapprcier lactivit du serveur car on peut trouver des centaines, voire des milliers dhtes, qui ont chang des donnes avec le serveur local. Leur format brut est illisible, aussi un outil est-il ncessaire pour mettre en forme ces statistiques. Nous en avons crit un, bstat, dont voici un exemple du format de sortie :
hpcvsop.cv.hp.com 485 queries received 485 responses sent to this name server 485 queries answered from our cache relay.hp.com 441 queries received 137 responses received 1 negative response received 2 queries for data not in our cache or authoritative data 108 responses from this name server passed to the querier 13 system queries sent to this name server 439 responses sent to this name server 85 queries sent to this name server 7 responses from other name servers sent to this name server
[12/01/08]
DNS et Bind
Le secret de la russite
84 duplicate queries sent to this name server 431 queries answered from our cache hp.com 770 89 1 4 69 14 766 68 5 7 755 queries received responses received negative response received queries for data not in our cache or authoritative data responses from this name server passed to the querier system queries sent to this name server responses sent to this name server queries sent to this name server responses from other name servers sent to this name server duplicate queries sent to this name server queries answered from our cache
161
Dans le format brut, chaque adresse IP dhte est suivie dune table de valeurs dont la signication est indique au dbut de la section des statistiques hte par hte (Legend). La lgende est rpartie sur plusieurs lignes, mais les statistiques par hte sont prsentes sur une seule. Nous allons dcrire chaque champ en observant le cas de lhte dadresse IP 15.255.152.2 (relay.hp.com). Pour clarier lexplication, la valeur pour relay sera prcde de la lgende correspondante.
RQ 441 RQ est le nombre de requtes reues de relay. Il sagit ici de requtes envoyes par relay pour obtenir des informations servies par le serveur local. RR 137 RR est le nombre de rponses reues de relay. Il sagit ici de rponses envoyes par relay vers le serveur local. Il ny a aucun lien entre RR et RQ. RQ dnombre les questions poses par relay au serveur local et RR dnombre les rponses que relay a donnes au serveur local. RIQ 0 RIQ est le nombre de requtes inverses reues de relay. Les requtes inverses servaient initialement la correspondance adresse-nom ; on utilise aujourdhui les enregistrements PTR. Danciennes versions de nslookup utilisent encore les requtes inverses au dmarrage, donc RIQ peut ne pas tre nul. RNXD 1 RNXD comptabilise les rponses no such domain reues de relay. RFwdQ 2 RFwdQ est le nombre de requtes reues (RQ) de relay et qui ncessitent un traitement complmentaire avant de pouvoir rpondre la requte initiale. La valeur est plus leve pour les htes dont le resolver (via son chier resolv.conf) envoie toutes ses requtes vers le serveur local. RFwdR 108 RFwdR est le nombre de rponses reues (RQ) de relay rpondant la requte initiale et qui sont transmises lapplication qui a gnr la requte initiale.
[12/01/08]
DNS et Bind
162
RDupQ 0 RDupQ est le nombre de requtes dupliques en provenance de relay. Celles-ci ne peuvent apparatre que si le chier resolv.conf de relay est congur pour interroger le serveur local. RDupR 0 RDupR est le nombre de rponses dupliques en provenance de relay. Une rponse est duplique lorsque le serveur local ne peut pas trouver la requte originale dans sa liste des requtes en attente de rponse. RFail 0 RFail est le nombre de rponses SERVFAIL reues de relay. Une rponse SERVFAIL signale une anomalie de serveur distant, par exemple lorsquil lit les chiers de zone et quil dcouvre une erreur de syntaxe. Toutes les requtes adresses la zone comportant le chier dfectueux produiront une rponse SERVFAIL de la part du serveur distant. Il sagit probablement du cas le plus courant de rponse SERVFAIL. Les rponses signalant un serveur dfectueux apparaissent aussi en cas de pnurie de mmoire sur le serveur distant ou lorsque la zone est parvenue chance sur lesclave distant. RFErr 0 RFErr est le nombre de rponses FORMERR reues de relay. FORMERR indique que le serveur distant a dtect une erreur de format dans la requte reue en provenance du serveur local. RErr 0 RErr est le nombre derreurs qui ne sont ni SERVFAIL ni FORMERR. RTCP 0 RTCP est le nombre de requtes reues via des connexions TCP en provenance de relay (la plupart des requtes parviennent en UDP). RAXFR 0 RAXFR est le nombre de transferts de zone. La valeur indique que relay nest pas un serveur-esclave dune des zones servies par le serveur local. RLame 0 RLame est le nombre de mauvaises dlgations reues. Si RLame est non nul, une zone est dlgue au serveur local mais ce serveur ne fait pas autorit sur cette zone. ROpts 0 ROpts est le nombre de paquets reus contenant des options IP . SSysQ 13 SSysQ est le nombre de requtes gnres linitiative du serveur local et envoyes relay. La plupart se font destination des serveurs de la racine car elles servent tenir jour la liste de ces serveurs. Elles peuvent aussi tre utilises pour dcouvrir ladresse dun serveur de noms si son enregistrement de ressource dadresse (A) parvient chance avant que ce ne soit le cas pour son enregistrement de
[12/01/08]
DNS et Bind
Le secret de la russite
163
ressource de serveur (NS). Comme relay nest pas un serveur de la racine, il sagit ici du second cas.
SAns 439 SAns est le nombre de rponses envoyes relay. Ici, le serveur local a rpondu 439 des 441 requtes (RQ) envoyes par relay. Il ny a aucune indication sur ce quil est advenu des deux requtes restes sans rponse... SFwdQ 85 SFwdQ est le nombre de requtes envoyes (rediriges) relay lorsque le serveur local na pas la rponse dans ses donnes de zone ou dans sa mmoire cache. SFwdR 7 SFwdR est le nombre de rponses envoyes par un serveur de noms quelconque et envoyes (rediriges) relay. SDupQ 84 SDupQ est le nombre de requtes dupliques envoyes relay. Cette valeur nindique pas obligatoirement un fonctionnement dfectueux. En effet, la valeur pour relay est incrmente si la requte a dabord t envoye un autre serveur et mme si relay rpond ds sa premire sollicitation. SFail 0 SFail est le nombre de rponses SERVFAIL envoyes relay. SFErr 0 SFErr est le nombre de rponses FORMERR envoyes relay. SErr 0 SErr est le nombre dappels systme sendto() qui chouent lorsque la destination est relay. RNotNsQ 0 RNotNsQ est le nombre de requtes reues et ne provenant pas du port 53, port ofciel dun serveur de noms. Avant BIND 8, toutes les requtes issues dun serveur de noms provenaient de ce port. Celles qui arrivaient dun autre port provenaient obligatoirement dun resolver. Les serveurs de noms BIND 8 peuvent expdier leurs requtes partir dun autre port ; cette statistique ne permettant plus de diffrencier les requtes provenant dun resolver de celles provenant dun serveur de noms, elle devient inutile. Aussi napparat-elle plus sur les serveurs BIND 8. SNaAns 431 SNaAns est le nombre de rponses ne faisant pas autorit envoyes relay. Parmi les 439 rponses envoyes relay (SAns), 431 sont issues de la mmoire cache. SNXD 0 SNXD est le nombre de rponses pas de nom correspondant (no such domain) envoyes relay.
[12/01/08]
DNS et Bind
164
Statistiques de BIND 9
BIND 9.1.0 est la premire version de BIND 9 proposer des statistiques. On utilise rndc pour indiquer BIND 9 de gnrer des statistiques :
% rndc stats
Le serveur de noms gnre ses statistiques, de la mme manire que BIND 8, dans un chier named.stats situ dans son rpertoire de travail. Toutefois, elles ont un format totalement diffrent de celles de BIND 8. Voici le contenu dun chier de statistiques, gnr sur lun de nos serveurs de noms en BIND 9 :
+++ Statistics success 9 referral 0 nxrrset 0 nxdomain 1 recursion 1 failure 1 --- Statistics +++ Statistics success 651 referral 10 nxrrset 11 nxdomain 17 recursion 296 failure 217 --- Statistics Dump +++ (979436130)
Le serveur de noms ajoute un nouvel ensemble de statistiques (la section situe entre +++ Statistics Dump +++ et --- Statistics Dump --- ) chaque rception dune commande stats. Le nombre entre parenthses (979436130) indique, comme prcdemment, la dure coule en secondes depuis lorigine dUnix. Malheureusement, BIND neffectue pas de conversion vers un format plus lisible mais, pour cela, on peut utiliser la commande Unix date. Ainsi, pour convertir 979584113 secondes depuis lorigine dUnix (le 1er janvier 1970), on peut excuter la commande suivante :
% date -d '1970-01-01 979584113 sec' Mon Jan 15 18:41:53 MST 2001
success 651 Reprsente le nombre de requtes traites avec succs par le serveur et qui nont pas abouti des rfrences ou des erreurs. referral 10 Reprsente le nombre de requtes traites par le serveur et qui ont abouti des rfrences. nxrrset 11 Reprsente le nombre de requtes traites par le serveur et qui ont abouti des rponses indiquant que le type denregistrement demand nexiste pas pour le nom recherch.
[12/01/08]
DNS et Bind
Le secret de la russite
165
nxdomain 17 Reprsente le nombre de requtes traites par le serveur et qui ont abouti des rponses indiquant que le nom recherch nexiste pas. recursion 296 Reprsente le nombre de requtes reues et demandant une recherche rcursive. failure 217 Reprsente le nombre de requtes reues qui ont abouti une erreur autre que celles comptabilises dans nxrrset et nxdomain.
Manifestement, BIND 9 ne mmorise pas autant de statistiques que BIND 8, mais les prochaines rvision de BIND 9 en gnreront probablement davantage.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
8
Expansion de domaine
Quelle taille veux-tu avoir ? demanda la Chenille. Oh ! je ne suis pas tellement difficile pour ce qui est de la taille, rpondit Alice. Ce quil y a dennuyeux, cest de changer si souvent de taille, voyez-vous Es-tu satisfaite de ta taille actuelle ? demanda la Chenille. Ma foi, si a vous tait gal, jaimerais bien tre un tout petit peu plus grande.
Installer un serveur de noms sur les serveurs de stations sans disque, pour servir
spciquement ces dernires.
Installer les serveurs de noms proximit des machines multi-utilisateurs importantes (voire directement sur ces machines) qui gnreront a priori de nombreuses requtes. Il faut toutefois valuer les risques davoir un serveur de noms, donc une ressource critique du point de vue de la scurit, sur une machine accessible de nombreuses personnes.
Installer au moins un serveur de noms sur un site distant, pour rendre les donnes
accessibles mme si le rseau local est hors-service. Il peut sembler inutile de chercher garantir le service de noms dans le cas o le rseau local est inaccessible ; en fait, le serveur distant est surtout utile lorsque le rseau local est accessible mais quaucun
[12/01/08]
DNS et Bind
168
serveur de noms interne nest oprationnel. Si on entretient une relation troite avec un organisme de lInternet (par exemple une universit, un FAI ou un partenaire commercial), il pourrait tre prt mettre en uvre un serveur-esclave pour notre compte. La gure 8-1 prsente un exemple de ce type de topologie.
a b c d e
[12/01/08]
DNS et Bind
169
La connexion du serveur primaire doit tre particulirement soigne : les serveurs primaires doivent pouvoir transfrer les zones vers les esclaves sans aucune difcult. Scurit An dviter quun serveur de noms dun domaine ne serve de relais des attaques contre les machines de son propre domaine ou de lInternet, il doit tre install sur une machine scurise. Il vaut mieux viter les grosses machines multi-utilisateurs sur lesquelles sont connects des utilisateurs que lon ne connat pas toujours. Les machines ddies aux services rseau en gnral et nacceptant pas les connexions des utilisateurs, sont prfrables. Si on ne dispose que de peu de machines scurit garantie, il vaut mieux leur rserver laccueil du serveur primaire, car la compromission de cette machine serait plus grave que celle dun esclave. Logiciel La meilleure solution logicielle consiste prendre un systme dexploitation dont le serveur de noms DNS bncie dune maintenance par lditeur, est issu de BIND 9.2 ou 9.3, et dont la mise en uvre de TCP/IP est robuste, de prfrence base sur Unix BSD 4.3 ou 4.4 (nous sommes des fans de Berkeley). Il est bien sr possible de compiler son propre serveur BIND 9.2 ou 9.3 partir du code-source (ce nest pas difcile et les dernires versions sont vraiment ables), mais lutilisation dun produit fourni par un diteur est un gain de temps, notamment pour la maintenance. Si BIND 9 nest pas utilisable dans votre architecture, vous pourrez contourner le problme en excutant le portage ralis par votre diteur partir dun code BIND plus ancien et bncier par la mme occasion dun support, ce qui nest pas ngligeable. Homognit Lhomognit des serveurs de noms dun domaine vite une perte de temps dans le portage de scripts dexploitation dun systme lautre ou dans la recherche de la position de nslookup ou de named.conf dun Unix lautre. Lutilisation de plusieurs versions commerciales dUnix entranera probablement lutilisation de plusieurs niveaux de version de BIND, ce qui peut poser des problmes de fonctionnalits. Si la scurit fournie par BIND 9 est ncessaire, il faut choisir une plate-forme pour laquelle BIND 9 est maintenu sur tous les systmes concerns. Bien que ces lments puissent paratre secondaires, il est bon de les avoir prsents lesprit pour oprer des choix. Il est toutefois plus important dinstaller un serveur de noms sur un rseau adquat que sur lhte parfait.
valuer la charge
Si les htes dun domaine sont trs nombreux ou si les utilisateurs gnrent de nombreuses requtes, le nombre de serveurs conseill prcdemment peut savrer insufsant pour absorber la charge. De plus, les conseils peuvent convenir un instant donn, mais le service de noms peut se dgrader dans le temps, mesure que des htes sont ajouts ou que des applications sollicitant beaucoup le DNS sont installes. Les applications suivantes interrogent massivement les serveurs de noms : le Web, le courrier lectronique (et plus particulirement les serveurs de listes de diffusion
[12/01/08]
DNS et Bind
170
grande chelle), les programmes gnrant de nombreux appels de procdures distantes vers un grand nombre dhtes, certains environnements graphiques tels que X Window et ses drivs, qui interrogent le serveur de noms pour exploiter les listes de contrle daccs (access lists). Un administrateur prudent et consciencieux se demandera donc comment savoir si ses serveurs sont surchargs. Lutilisation de la mmoire est probablement laspect le plus important surveiller. named peut en utiliser une grande quantit sur les serveurs faisant autorit sur plusieurs zones. Si la taille totale de la mmoire utilise par named et les autres processus dpasse celle de la mmoire physique, la machine risque dutiliser lespace secondaire de sa mmoire virtuelle (habituellement appel swap dans le monde Unix et chier dchange dans le monde Windows) de manire importante et donc de ne plus rien excuter convenablement. Mme si la taille de la mmoire physique est amplement sufsante, les serveurs de noms BIND 4 grant de grandes zones sont lents dmarrer et se recharger. Il faut aussi surveiller la charge de lunit centrale provoque par named. Les serveurs correctement congurs ne chargeant pas excessivement le processeur, une surcharge provenant dun serveur de noms indique souvent une erreur de conguration. Un programme tel que top1 permet de dterminer le taux de charge induit par le serveur de noms. Malheureusement, aucune rgle ne prcise quelles sont les valeurs acceptables. Voici toutefois quelques indications : un taux de charge de 5% est probablement acceptable et une valeur de 10% est a priori trop leve, moins que lhte ne soit consacr exclusivement au service de noms. Voici un exemple dafchage par top pour un serveur peu charg :
last pid: 14299; load averages: 0.11, 0.12, 0.12 18:19:08 68 processes: 64 sleeping, 3 running, 1 stopped Cpu states: 11.3% usr, 0.0% nice, 15.3% sys, 73.4% idle, 0.0% intr, 0.0% ker Memory: Real: 8208K/13168K act/tot Virtual: 16432K/30736K act/tot Free: 4224K PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 89 root 1 0 2968K 2652K sleep 5:01 0.00% 0.00% named
Voici maintenant un exemple dafchage par top sur un serveur de noms occup, mais pas surcharg :
load averages: 0.30, 0.46, 0.44 system: relay 16:12:20 39 processes: 38 sleeping, 1 waiting Cpu states: 4.4% user, 0.0% nice, 5.4% system, 90.2% idle, 0.0% unk5, 0.0% unk6, 0.0% unk7, 0.0% unk8 Memory: 31126K (28606K) real, 33090K (28812K) virtual, 54344K free Screen #1/ 3 PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 21910 root 1 0 2624K 2616K sleep 146:21 0.00% 1.42% /etc/named
1. top, de Bill LeFebvre, afche en temps rel lutilisation du processeur par les processus. Il est intgr dans de nombreuses versions dUnix et de Linux. La dernire version de top est disponible sur http://www.unixtop.org/.
[12/01/08]
DNS et Bind
171
Un autre paramtre surveiller est le nombre de requtes reues par minute (ou seconde dans le cas dun serveur charg) par un serveur de noms. Ici non plus, il ny a pas de rgle absolue : un processeur rapide excutant FreeBSD peut probablement grer des milliers de requtes par seconde sans faiblir, alors quun vieil hte Unix peut avoir de srieuses difcults au-del de quelques requtes par seconde. Pour dterminer ce nombre, il suft dobserver les statistiques internes du serveur de noms, priodiquement crites dans syslog : le serveur peut tre congur pour gnrer les statistiques toutes les heures (cest le cas par dfaut de BIND 8). Il suft ensuite de comparer entre eux les rsultats reus toutes les heures
options { statistics-interval 60; };
BIND 9 ne dispose pas de la directive statistics-interval, mais on peut utiliser rndc pour lui demander de gnrer des statistiques toutes les heures, par exemple avec un chier crontab :
0 * * * * /usr/local/sbin/rndc stats
Il faut tre particulirement attentif aux pics de charge. Le lundi matin est souvent trs charg, car de nombreux utilisateurs rpondent massivement aux courriers reus durant le week-end. Le dbut daprs-midi est souvent charg, lui aussi, lorsque les employs reviennent en masse de leur repas. Bien sr, si lentreprise est disperse sur plusieurs fuseaux horaires, il faut utiliser son intuition pour valuer quel est le moment le plus charg. Voici un extrait de chier syslog correspondant un serveur BIND 8 :
Aug 1 11:00:49 toystory named[103]: NSTATS 965152849 959476930 A=8 NS=1 SOA=356966 PTR=2 TXT=32 IXFR=9 AXFR=204 Aug 1 11:00:49 toystory named[103]: XSTATS 965152849 959476930 RR=3243 RNXD=0 RFwdR=0 RDupR=0 RFail=20 RFErr=0 RErr=11 RAXFR=204 RLame=0 ROpts=0 SSysQ=3356 SAns=391191 SFwdQ=0 SDupQ=1236 SErr=0 RQ=458031 RIQ=25 RFwdQ=0 RDupQ=0 RTCP=101316 SFwdR=0 SFail=0 SFErr=0 SNaAns=34482 SNXD=0 RUQ=0 RURQ=0 RUXFR=10 RUUpd=34451 Aug 1 12:00:49 toystory named[103]: NSTATS 965156449 959476930 A=8 NS=1 SOA=357195 PTR=2 TXT=32 IXFR=9 AXFR=204 Aug 1 12:00:49 toystory named[103]: XSTATS 965156449 959476930 RR=3253 RNXD=0 RFwdR=0 RDupR=0 RFail=20 RFErr=0 RErr=11 RAXFR=204 RLame=0 ROpts=0 SSysQ=3360 SAns=391444 SFwdQ=0 SDupQ=1244 SErr=0 RQ=458332 RIQ=25 RFwdQ=0 RDupQ=0 RTCP=101388 SFwdR=0 SFail=0 SFErr=0 SNaAns=34506 SNXD=0 RUQ=0 RURQ=0 RUXFR=10 RUUpd=34475
Le champ RQ (en gras) contient le nombre de requtes reues. Pour calculer le nombre de requtes reues en une heure, il suft de soustraire la premire valeur RQ la seconde : 458332 458031 = 301.
[12/01/08]
DNS et Bind
172
Mme si le serveur est sufsamment puissant pour rpondre toutes les requtes reues, il faut sassurer que le trac li au DNS ne surcharge pas le rseau local. Sur la plupart des LAN, le trac DNS est ngligeable compar au trac global ; par contre il faut se soucier de celui qui est induit sur des liaisons loues lentes ou sur des liaisons RTC. Pour estimer le volume du trac DNS sur un LAN, on peut dterminer la bande passante utilise en multipliant la somme des requtes reues (RQ) et des rponses envoyes (SAns) en une heure, par 800 bits (les paquets DNS ont une taille moyenne de 100 octets) puis en divisant le rsultat par 3600. Cela donne une ide approximative du trac DNS sur le rseau local2. Le dernier rapport de trac NSFNET (en avril 1995) montrait que le trac DNS ne constituait que 5% du volume global (en octets) de son pine dorsale. Cette valeur a t obtenue par observation du trac et non par calcul partir de statistiques issues de serveurs de noms3. Rien nempche den faire autant sur son propre rseau local, laide dun analyseur de protocoles, si lon souhaite avoir des valeurs prcises. Si lon constate quun serveur est surcharg, il faut tout dabord regarder sil nest pas bombard de requtes par un programme fou, en recherchant lorigine de toutes les requtes. Si le serveur est en BIND 8, les statistiques indiquent quels resolvers et quels serveurs de noms linterrogent. Les statistiques sont enregistres hte par hte, ce qui permet de reprer les gros utilisateurs du serveur. Depuis BIND 8.2, ces statistiques ne sont pas conserves en standard ; pour conserver des statistiques machine par machine, il faut utiliser la directive host-statistics dans la structure options4 :
options { host-statistics yes; };
Voici un exemple :
+++ Statistics Dump +++ (829373099) Fri Apr 12 23:24:59 1996 970779 time since boot (secs) 471621 time since reset (secs) 0 Unknown query types 185108 A queries 6 NS queries 69213 PTR queries 669 MX queries 2361 ANY queries ++ Name Server Statistics ++ (Legend) RQ RR RIQ RNXD RFwdQ RFwdR RDupQ RDupR RFail RFErr
2. 3. 4. bindgraph, de Nigel Campbell, permet une analyse automatique des statistiques de BIND. Voir lURL http://www.dns.net/dnsrd/tools.html, la page des outils du rpertoire des ressources du DNS. Il nest pas certain que les valeurs actuelles soient identiques, mais il nest pas possible dobtenir des donnes quivalentes auprs des organismes commerciaux qui ont succd NSFNET. Jusquen 9.1.0, BIND 9 ne dispose, ni de la directive host-statistics, ni de la facult denregistrer des statistiques par hte.
[12/01/08]
DNS et Bind
173
la suite de Global, chaque hte distant est dsign par son adresse IP entre paren, thses. La lgende indique que la premire valeur correspond RQ (Received Queries), cest--dire au nombre de requtes reues. Les htes 15.17.232.8, 15.17.232.16 et 15.17.232.94 sont responsables de 88% des requtes. Si le serveur est BIND 9, la seule mthode pour reprer les resolvers et serveurs de noms qui linterrogent de faon excessive ncessite la mise en uvre du dbogage (voir le Chapitre 13). La liste des machines qui envoient des requtes est dj signicative ; on peut aussi reprer les htes qui gnrent rptitivement des requtes et plus particulirement ceux qui demandent plusieurs fois les mmes donnes. Ces informations peuvent suggrer quun programme appelant est mal congur, ou quil contient des bogues, ou quun serveur de noms distant bombarde de requtes le serveur local. Si toutes les requtes paraissent lgitimes, il est temps dajouter un nouveau serveur de noms, en utilisant les statistiques pour dterminer le meilleur emplacement. Si le trac DNS surcharge dj la bande passante, il ne sert rien dajouter un serveur au hasard. Il faut tenir compte de lorigine des requtes. Voici quelques indications :
[12/01/08]
DNS et Bind
174
Reprer les requtes issues des resolvers des htes se partageant un mme serveur de
chiers. Ce dernier constitue un bon emplacement de serveur DNS.
Reprer les requtes issues des resolvers des htes multi-domicilis. Ces derniers constituent un bon emplacement de serveur DNS.
Reprer les requtes issues des resolvers des htes situs sur un autre sous-rseau. Ces
resolvers devraient utiliser un serveur situ sur le mme sous-rseau queux. Sil ny en a pas, il faut en crer un.
Reprer les requtes issues des resolvers des htes situs sur un mme commutateur.
En connectant un serveur sur ce commutateur, le trac ne sera pas diffus vers le reste du rseau.
Reprer les requtes issues de resolvers distants, accessibles travers un rseau peu
charg. Le serveur peut tre install sur ce rseau.
Cration de plusieurs matres primaires. Pour certains esclaves, chargement de leur zone partir dautres esclaves. Cration de serveurs cache. Cration desclaves partiels .
[12/01/08]
DNS et Bind
175
On peut aussi indiquer aux serveurs de recharger leur conguration en utilisant loption special de rdist :
special /var/named/* "rndc reload" ; special /etc/named.conf "rndc reload" ;
Cette option indique rdist dexcuter la commande entre guillemets si le chier indiqu change sur le serveur cible. Certains serveurs-esclaves peuvent aussi tlcharger leur zone partir dautres serveursesclaves plutt qu partir dun serveur-matre primaire. Dans ce cas, le serveur-esclave na aucun moyen de savoir sil tlcharge la zone partir dun serveur primaire ou dun autre esclave. Il suft que le serveur rpondant la demande de transfert de zone soit un serveur faisant autorit sur la zone. La mise en uvre est simple : au lieu dindiquer ladresse IP du serveur primaire dans le chier de conguration de lesclave, on indique ladresse dun autre serveur-esclave. Voici le chier named.conf correspondant :
// cet esclave se synchronise partir de wormhole, un autre esclave zone "movie.edu" { type slave; masters { 192.249.249.1; }; file "bak.movie.edu"; };
Lutilisation dun serveur-esclave intermdiaire peut conduire doubler le dlai de propagation entre le serveur primaire et tous les esclaves. Souvenons-nous que lintervalle de rafrachissement dtermine la frquence laquelle un serveur-esclave doit tester la validit de la zone. Par consquent, il peut scouler une priode complte avant que le serveur-esclave intermdiaire ne se soit synchronis avec le serveur-matre primaire, puis une nouvelle priode complte avant que le serveur-esclave nal ne se soit synchronis avec le serveur-esclave intermdiaire. Par consquent, le temps de propagation du matre primaire jusqu tous les esclaves peut tre du double de lintervalle de rafrachissement. La fonction NOTIFY permet dviter ce dlai de propagation. Cette fonction, active par dfaut, permet de dclencher rapidement des transferts de zone aprs une mise jour de la zone sur le matre primaire. La fonction NOTIFY sera dcrite en dtail au Chapitre 10.
[12/01/08]
DNS et Bind
176
En cas de mise en uvre de serveurs-esclaves intermdiaires, il faut faire attention ne pas crer de boucles. Si wormhole est congur pour se synchroniser sur monsters-inc, et que monsters-inc est congur pour se synchroniser sur wormhole, aucun des deux ne chargera jamais les donnes du serveur primaire. Ils testeront mutuellement leur numro de srie et tous deux concluront linni quils sont jour.
Serveur cache
Un serveur cache constitue une autre alternative lors de lajout de serveurs. Ce sont des serveurs qui ne font autorit sur aucune zone (sauf sur 0.0.127.in-addr.arpa). Le nom de ces serveurs ne signie pas quils soient les seuls disposer dune mmoire cache (les serveurs primaires et les serveurs-esclaves en ont aussi) mais que cest la seule fonction quils mettent en uvre : ils recherchent des donnes pour le compte de resolvers et les placent dans leur mmoire cache. Tout comme pour les autres types de serveur, ils ont besoin dun chier dindications sur les serveurs de la racine et dun chier db.127.0.0. Le chier named.conf dun serveur cache contient les lignes suivantes :
options { directory "/var/named"; // ou tout autre rpertoire de travail }; zone "0.0.127.in-addr.arpa" { type master; file "db.127.0.0"; }; zone "." { type hint; file "db.cache"; };
Un serveur cache peut interroger les serveurs de noms de tout domaine, tout comme le font les serveurs primaires ou les serveurs-esclaves. La diffrence est que lorsquun serveur cache recherche un nom pour la premire fois dans une zone, il nit obligatoirement par interroger le matre primaire ou un esclave de la zone, car il ne dispose daucune donne en local. Pour toute recherche de noms, il doit obtenir lidentit des serveurs dune zone auprs des serveurs de son domaine parent, car il nest pas possible damorcer la mmoire cache dun serveur cache avec lidentit du matre primaire ou des esclaves, notamment laide du chier db.cache qui sert dcouvrir lidentit des serveurs de la racine. De plus, il est prfrable dobtenir la liste des serveurs faisant autorit auprs des serveurs de la zone parente car cela permet de tester la dlgation (le maintien dans la zone dune liste des serveurs faisant autorit pourrait poser des problmes de mise jour). Lutilit dun serveur cache apparat lorsque sa mmoire cache commence se remplir. chaque fois que le serveur cache interroge un serveur faisant autorit et quil obtient une rponse, il place lenregistrement correspondant dans sa mmoire cache. Peu peu, la mmoire cache grossit et contient les informations les plus demandes par les resolvers qui interrogent le serveur cache. De plus, comme les serveurs cache nont pas besoin de se synchroniser, il ny aucune charge induite par un transfert de zone.
[12/01/08]
DNS et Bind
177
Serveurs-esclaves partiels
Il existe une notion intermdiaire entre serveur cache et serveur-esclave : le serveursecondaire partiel (nous sommes probablement les seuls lappeler de cette manire) qui est esclave uniquement pour une partie de la zone locale. Supposons que movie.edu soit constitu de vingt rseaux de taille /24 (lancienne classe C) ainsi que des vingt zones correspondantes dans in-addr.arpa. Plutt que de crer un serveur-esclave pour les 21 zones (tous les sous-domaines de in-addr.arpa plus movie.edu), on pourrait crer un serveur-esclave partiel pour movie.edu et les seules zones de in-addr.arpa contenant le serveur-esclave partiel lui-mme. Si le serveur a deux interfaces rseau, il devrait tre esclave pour trois zones : movie.edu et deux zones de in-addr.arpa. Par exemple, lhte zardoz.movie.edu dispose de deux interfaces rseau dadresses IP 192.249.249.9 et 192.253.253.9. zardoz peut donc hberger un serveur-esclave partiel dont le chier de conguration named.conf contient :
options { directory "/var/named"; }; zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; }; zone "249.249.192.in-addr.arpa" { type slave; masters { 192.249.249.3; }; file "bak.192.249.249"; }; zone "253.253.192.in-addr.arpa" { type slave; masters { 192.249.249.3; }; file "bak.192.253.253"; }; zone "0.0.127.in-addr.arpa" { type master; file "db.127.0.0"; }; zone "." { type hint; file "db.cache"; };
Ce serveur est esclave pour la zone movie.edu et pour seulement 2 des 20 zones correspondantes de in-addr.arpa. Le chier named.conf dun serveur-esclave complet contiendrait 21 dclarations diffrentes de zone.
[12/01/08]
DNS et Bind
178
Les serveurs-esclaves partiels sont faciles grer car leur chier named.conf nvolue gure dans le temps, alors que sur un serveur faisant autorit sur la totalit des zones de in-addr.arpa, il faudrait modier chaque serveur-esclave en cas dvolution du rseau (ajout ou suppression de zones), une tche consquente pour un gros rseau. Un serveur-esclave partiel peut directement rpondre la plupart des requtes quil reoit, car la plupart de ces requtes concernent la zone movie.edu et les deux zones de in-addr.arpa. En effet, la plupart des htes qui interrogent le serveur sont connects lun des deux rseaux 192.249.249 ou 192.253.253, et il est probable que ces htes communiquent avant tout entre eux. Les requtes de donnes dans in-addr.arpa correspondent donc au rseau local.
Serveurs de noms
dclars non dclars
Machines
serveur cache
DNS et Bind
179
Le nombre de serveurs enregistrs est limit, non seulement par ltendue des ressources que lon accepte de consacrer au service des requtes externes, mais aussi par une limite physique, due au nombre de serveurs que lon peut indiquer dans un paquet de rponse UDP On peut y placer une dizaine denregistrements de ressource NS, en . fonction du nombre de domaines contenant les serveurs7. De toutes faons, lenregistrement de plus de 10 serveurs naurait probablement pas beaucoup de sens : si aucun des 10 serveurs nest accessible, il y a de fortes chances que lensemble du rseau soit totalement inaccessible. Si lon veut enregistrer un nouveau serveur faisant autorit (un serveur qui possde une copie des chiers de zone), il faut contacter les administrateurs de chacune de ses zones parentes. Par exemple, si on veut ofcialiser le serveur zardoz, il faut contacter les administrateurs des zones edu et in-addr.arpa (pour savoir qui gre une zone parente, consultez le Chapitre 3). Avant de contacter les administrateurs dune zone parente, il faut suivre les procdures disponibles, si elles existent, sur le site web de la zone parente. Sinon, il faut fournir le nom de la zone sur laquelle le nouveau serveur fait autorit. Si ce serveur est dans la nouvelle zone, il faut galement fournir son adresse IP Bien quil ny ait aucun format . normalis pour soumettre ces informations, il est bon de fournir la liste complte des serveurs ofciels de la zone, accompagne de leurs adresses, de prfrence au format des chiers de zone, ce qui vite de possibles confusions. tant donn que les rseaux de notre exemple ont t initialement attribus par lInterNIC, nous utilisons le formulaire Network Modication sur http://www.arin.net/ library/templates/netmod.txt pour modier lenregistrement. En labsence de formulaire standard, on peut envoyer un message de demande (en anglais) ladministrateur de inaddr.arpa :
Bonjour, Nous venons de mettre en uvre un nouveau serveur de noms sur lhte zardoz.movie.edu pour les zones 249.249.192.in-addr.arpa et 253.253.192.in-addr.arpa. Pourriez-vous ajouter les enregistrements NS correspondants la zone in-addr.arpa de manire obtenir la dlgation dautorit suivante ? 253.253.192.in-addr.arpa. 86400 IN NS toystory.movie.edu. 253.253.192.in-addr.arpa. 86400 IN NS wormhole.movie.edu. 253.253.192.in-addr.arpa. 86400 IN NS zardoz.movie.edu. 249.249.192.in-addr.arpa. 86400 IN NS toystory.movie.edu. 249.249.192.in-addr.arpa. 86400 IN NS wormhole.movie.edu. 249.249.192.in-addr.arpa. 86400 IN NS zardoz.movie.edu. Merci davance. Cordialement, Albert LeDomaine - al@movie.edu
7.
Les noms des serveurs de la racine de lInternet ont t changs pour cette raison : tous les serveurs ont t dplacs dans le mme domaine, root-servers.net, pour tirer parti de la compression de noms et, de cette manire, pouvoir indiquer un maximum de serveurs de la racine dans un unique paquet UDP .
[12/01/08]
DNS et Bind
180
Les enregistrements NS ont des TTL explicites car les serveurs parents du domaine ne font pas autorit sur ces enregistrements, la diffrence des serveurs de noms du domaine. En prcisant les valeurs de TTL, ladministrateur du domaine indique son propre choix pour sa zone, car les administrateurs du domaine parent pourraient avoir une autre politique de gestion. Un enregistrement A de recolage pour chacun des serveurs de noms nest pas ncessaire, puisque les noms des serveurs ne sont pas dans les zones in-addr.arpa. Ils sont situs dans la zone movie.edu, ce qui fait quun serveur faisant rfrence toystory.movie.edu ou wormhole.movie.edu peut trouver leur adresse en suivant la dlgation vers les serveurs de movie.edu. Lenregistrement dun serveur partiel nest pas souhaitable, car ce dernier ne fait autorit que sur une fraction des zones in-addr.arpa. Du point de vue de la gestion, il est plus simple denregistrer uniquement des serveurs faisant autorit sur la totalit dune zone, ce qui vite davoir grer une liste de correspondance entre les serveurs partiels et les fractions de zone correspondantes. De cette manire, toutes les zones parentes peuvent dlguer lautorit au mme ensemble de serveurs : le matre primaire et les esclaves complets. Toutefois, si le nombre de serveurs est faible, il peut tre facile de se souvenir de la zone dautorit de chaque serveur et on peut alors se permettre denregistrer des serveurs partiels. Un serveur cache ne devra jamais tre enregistr. En effet, il na que rarement des informations compltes sur lensemble dune zone ; il ne dispose que des informations quil a rcemment recherches. Si un serveur parent indiquait un serveur distant dinterroger un serveur cache, le serveur distant enverrait une requte non rcursive au serveur cache. Ce dernier pourrait trs bien connatre la rponse comme ne pas la connatre8. Dans ce dernier cas, le serveur cache rpondrait en fournissant la liste des serveurs les mieux placs, qui contient le serveur cache lui-mme. Ainsi, le serveur distant nobtiendrait jamais de rponse sa question. Ce type de conguration (la dlgation dune zone un serveur ne faisant pas autorit sur la zone) sappelle une mauvaise dlgation (lame delegation).
[12/01/08]
DNS et Bind
181
domaine : un TTL faible signie que les serveurs distants devront interroger plus souvent les serveurs locaux. Les valeurs de TTL peuvent tre modies au cours du temps et les administrateurs expriments les ajusteront priodiquement. Supposons que lhte grant la vidothque de movie.edu doive tre dplac vers un autre rseau. Cet hte fournit un service toute la communaut de lInternet. Lors doprations normales, les serveurs extrieurs au domaine conservent ladresse de lhte dans leur mmoire cache en accord avec le TTL indiqu, soit par la directive $TTL, soit dans lenregistrement SOA pour les serveurs antrieurs BIND 8.2. Dans lexemple, le TTL de movie.edu a t x trois heures. Un serveur plaant lancien enregistrement dadresse dans sa mmoire cache juste avant la modication va conserver la mauvaise information durant trois heures, ce qui peut produire une inaccessibilit du service. Pour minimiser cette gne, on peut pralablement rduire le TTL an que les serveurs distants ne conservent que peu de temps un enregistrement dadresse. En diminuant le TTL, on force les serveurs externes mettre jour leurs donnes plus souvent. De cette manire, toutes les modications effectues seront propages plus rapidement. Malheureusement, on ne peut pas xer le TTL zro, ce qui indiquerait de ne placer aucun enregistrement en mmoire cache, car certaines vieilles versions de BIND 4 ne peuvent pas renvoyer denregistrement avec un TTL nul et renvoient alors des rponses nulles ou des erreurs SERVFAIL. Par contre, les petites valeurs de TTL (30 secondes par exemple), ne posent aucun problme. La mthode la plus simple consiste modier la structure de contrle $TTL dans le chier db.movie.edu. Si un enregistrement de ressource autre que le SOA ne comporte pas de TTL explicite, le serveur utilise le TTL par dfaut pour cet enregistrement spcique. En rduisant la valeur du TTL par dfaut, la nouvelle valeur de TTL sapplique tous les enregistrements dadresse et pas seulement celui concernant lhte qui va tre dplac. La consquence de cette approche est que le serveur va devoir rpondre plus de requtes que dordinaire. Par consquent, il vaut mieux ne diminuer le TTL que sur lenregistrement modi. Pour ajouter une valeur de TTL explicite dans un enregistrement de ressource, il faut la placer devant IN du champ class. La valeur de TTL est en secondes en standard, mais on peut aussi prciser des units (m pour minutes, h pour heures, d pour jours et w pour semaines) sous la mme forme que dans la structure de contrle $TTL. Voici un exemple de TTL explicite pour db.movie.edu :
cujo 1h IN A 192.253.253.5 ; TTL explicite fix 1 heure
Un serveur-esclave renvoie les mmes valeurs de TTL quun serveur-matre primaire. Lesclave ne tient pas compte du temps coul depuis le dernier chargement de zone pour dcrmenter le TTL. Par consquent, si le TTL dun enregistrement est rduit une valeur infrieure au minimum, les serveurs primaires et esclaves fourniront cette valeur rduite. Si un esclave a atteint la limite de validit de la zone, il met la totalit de la zone hors service ; il ninvalide jamais isolment un enregistrement de ressource. BIND permet donc de xer explicitement le TTL de chaque enregistrement de ressource en fonction des besoins de modication des informations. Malheureusement, peu dadministrateurs protent de cette possibilit, ce qui occasionne des pertes de connectivit pendant quelque temps.
[12/01/08]
DNS et Bind
182
Heureusement, les htes qui bougent beaucoup sont rarement des machines-cl dun domaine, ce qui occasionne peu de perturbation. Par contre, le dplacement et linaccessibilit dun changeur de messagerie, dun serveur web ou dun serveur ftp durant une journe est inacceptable. Si lon souhaite changer leur adresse, il faut anticiper lopration en rduisant le TTL sur leurs enregistrements. Attention, la valeur de TTL doit tre diminue bien avant le changement de ladresse : il ne faut pas rduire simultanment le TTL et modier linformation, car il se pourrait que lenregistrement dadresse vienne dtre stock dans la mmoire cache dun serveur distant et il serait valide tant que le TTL dorigine ne se serait pas coul. Il faut aussi tenir compte de la frquence de synchronisation des serveurs-esclaves. Si le TTL minimal est de 12 heures et que lintervalle de rafrachissement est de 3 heures, il faut rduire le TTL au moins 15 heures avant la modication dadresse, de manire ce que les enregistrements associs lancien long TTL soient arrivs expiration. Bien sr, si tous les serveurs savent utiliser la fonction NOTIFY, il ne faudra plus tenir compte de la dure de synchronisation.
[12/01/08]
DNS et Bind
183
Par ailleurs, certaines versions de BIND peuvent aussi se synchroniser plus souvent que lintervalle de rafrachissement. Toutes les versions rcentes de BIND (depuis la 4.9) attendent un temps alatoire compris entre la moiti (pour BIND 8) ou les trois-quarts (pour BIND 9) et la totalit de lintervalle de rafrachissement avant de tester les numros de srie. Une dure avant expiration dune semaine, voire plus sil est difcile de contacter le serveur-matre, est une valeur normale. Cette dure doit toujours tre trs suprieure lintervalle de rafrachissement et la priodicit de nouvel essai ; si la dure avant expiration est infrieure lintervalle de rafrachissement, les esclaves abandonnent les informations avant de tenter une synchronisation. BIND 8 se plaint si la dure avant expiration est infrieure la somme de lintervalle de rafrachissement et de la priodicit de nouvel essai, infrieure au double de la priodicit de nouvel essai, infrieure sept jours ou suprieure six mois (BIND 9 ne se plaint pas pour le moment). Un choix rpondant tous les critres de BIND 8 conviendra la plupart des situations. Si les informations changent peu, il est intressant daugmenter le TTL par dfaut. On utilise souvent un TTL de un jour. Un TTL gal une semaine semble tre la valeur maximale qui ait encore un sens pour une dure de vie. Au-del, il devient difcile de mettre jour dans un temps raisonnable des informations errones et dj enregistres dans une mmoire cache.
Interruptions de service
Les coupures dlectricit sont monnaie courante. Dans certaines rgions des USA, les temptes et tornades peuvent conduire lisolement dun site pendant de longues dures. dautres endroits, des typhons, des volcans ou des travaux peuvent provoquer des coupures lectriques. Et en Californie, on ne peut jamais savoir si on ne va pas tre victime dun dlestage en raison dun manque de capacit de production lectrique. Si tous les htes dun domaine sont arrts, le service de noms est inutile. Les problmes surgissent au retour de llectricit. Les serveurs de noms sont souvent installs sur de grosses machines de service qui sont parfois les dernires redmarrer (elles doivent franchir avec succs de nombreuses tapes telles que lexcution de fsck sur les disques). Les machines redmarrage rapide doivent donc pouvoir dmarrer en labsence du service de noms.
[12/01/08]
DNS et Bind
184
Cela est une source de difcults et dpend de la manire dont sont crits les chiers de dmarrage. Les htes Unix excutent souvent une variante de :
/usr/sbin/ifconfig lan0 inet `hostname` netmask 255.255.128.0 up /usr/sbin/route add default site-router 1
pour dmarrer leur interface de rseau et initialiser une route par dfaut. Lutilisation de noms dhtes dans les commandes (`hostname` est remplac par le nom local de lhte et site-router est le nom du routeur local) est intressante car elle permet un administrateur de modier les adresses IP des quipements sans devoir mettre jour les chiers de dmarrage. Malheureusement, lexcution de la commande route choue en labsence dun service de noms. Il en est de mme pour la commande ifcong si le nom local et ladresse IP napparaissent pas dans le chier /etc/hosts. Il faut donc initialiser au moins ces informations dans le chier /etc/hosts de chaque hte. Au moment o la squence de dmarrage excute la commande route, lhte essaie dutiliser un service de noms pour associer le nom du routeur son adresse IP Puisque . lhte na pas de route par dfaut tant que la commande route na pas encore t excute, les seuls serveurs de noms joignables ce moment-l sont ceux situs sur le mme rseau que lhte. Si lhte en cours de dmarrage peut contacter un serveur de noms sur le mme rseau, il peut excuter la commande route avec succs. Dans la situation qui nous intresse ici, ces serveurs de noms ne sont pas encore disponibles. Ce quil advient dpend du contenu du chier resolv.conf. Avec BIND, le resolver naboutit la consultation de la table locale que si un seul serveur de noms est dsign dans resolv.conf (ou si aucun serveur de noms nest dsign et que le resolver consulte par dfaut un serveur de noms situ sur lhte local). Si un seul serveur de noms est dni, le resolver linterroge, et si le rseau renvoie une erreur chaque expdition de requte, le resolver consulte la table locale. Les erreurs pouvant gnrer cette situation sont :
la rception dun message ICMP port unreachable ; la rception dun message ICMP network unreachable ; limpossibilit denvoyer un paquet UDP (par exemple en raison dune pile rseau
pas encore active sur lhte local)10. Si le serveur de noms dsign est totalement inaccessible, le resolver ne reoit aucune erreur ; le serveur se comporte comme un trou noir. Aprs environ 75 secondes dessais, le resolver renvoie une rponse nulle lapplication qui a demand une rsolution de nom. Par contre, si lhte hbergeant le serveur de noms est accessible mais que la fonction de service de noms nest pas encore active, le resolver reoit un message ICMP port unreachable. En gnral, la conguration o un seul serveur est dni dans resolv.conf, fonctionne sil y a un serveur de noms disponible sur chaque rseau, mais ce nest pas trs lgant. Si le serveur de noms local na pas ni de dmarrer lorsquun hte de son rseau redmarre, la commande route choue.
10. Consultez le Chapitre 6 pour prendre connaissance des spcicits des diffrentes versions commerciales.
[12/01/08]
DNS et Bind
185
Il en va diffremment si plusieurs serveurs de noms sont dnis dans resolv.conf. Dans ce cas, BIND naboutit jamais la consultation de la table locale aprs linitialisation de linterface rseau primaire par ifcong. Le resolver interroge cycliquement les serveurs de noms jusqu une rponse ou jusqu lcoulement du temps dattente maximal de 75 secondes. Ceci ne pose problme que durant la squence de dmarrage : si aucun des serveurs dsigns ne rpond, le resolver atteint le temps dattente maximal et choue dans lacquisition de la route par dfaut.
Recommandations
Nous recommandons de placer ladresse IP du routeur par dfaut (et non pas son nom), dans le chier de dmarrage ou, comme sur certains systmes, dans un chier externe tel que /etc/defaultrouter. Cela permettra de garantir le dmarrage. On peut aussi ne dsigner, dans resolv.conf, quun unique serveur de noms condition quil soit particulirement able et situ sur le rseau local. Cela permet dutiliser le nom du routeur par dfaut dans le chier de dmarrage, condition que le nom de ce routeur apparaisse avec son numro IP dans /etc/hosts, au cas o le serveur de noms ne serait pas encore actif au moment du dmarrage. Certaines versions spciques de BIND permettent de prciser lordre dinterrogation des sources dinformation ; dautres utilisent /etc/hosts si le DNS ne fournit pas de rponse. Dans le premier cas, on peut rgler le resolver pour quil interroge en premier lieu un /etc/hosts minimal. Dans tous les cas, il faut initialiser un chier /etc/hosts minimal sur chaque hte, contenant le nom de lhte ainsi que le routeur par dfaut. Il y a toutefois quelques risques utiliser un chier /etc/hosts : moins que vous ne fassiez attention le maintenir bien jour, linformation quil contient peut devenir obsolte. Leur mise jour serait une excellente tche pour rsync. Que se passe-t-il si la route par dfaut est correctement initialise mais que les serveurs de noms continuent ne pas rpondre ? Cela peut perturber sendmail (qui ne fera pas de canonisation correcte des noms) ou NFS (dont les montages peuvent chouer). Un serveur de noms devrait en fait tre install sur un hte branch un onduleur quip de batteries, ce qui sufra si les coupures sont rares. Si les coupures durent trop longtemps et que le service de noms est une application critique, il faudra envisager linstallation dun groupe lectrogne. Si cela nest pas possible, il faut reprer lhte le plus rapide dmarrer et y installer le serveur de noms. Les htes utilisant des systmes de chiers avec journalisation sont dans ce cas, car il nexcutent pas la commande fsck. Les htes possdant de petits systmes de chiers sont eux aussi rapides dmarrer. Une fois que lhte adquat est identi, il faut que son adresse IP soit inscrite dans la conguration du resolver de chaque hte ayant besoin dun service de noms permanent. On indiquera en gnral les serveurs de secours en dernier, puisquen fonctionnement normal, les clients utiliseront le serveur de noms le plus proche. Ainsi, en cas de coupure lectrique, les applications critiques pourront encore atteindre le service de noms, au prix dun lger sacrice en performances.
[12/01/08]
DNS et Bind
186
[12/01/08]
DNS et Bind
187
IN NS toystory.movie.edu. ; toystory est la racine temporaire. ; Le serveur de la racine ne connat que movie.edu et ; les deux domaines in-addr.arpa. movie.edu. IN NS toystory.movie.edu. IN NS wormhole.movie.edu. 249.249.192.in-addr.arpa. IN NS toystory.movie.edu. IN NS wormhole.movie.edu. 253.253.192.in-addr.arpa. IN NS toystory.movie.edu. IN NS wormhole.movie.edu. toystory.movie.edu. wormhole.movie.edu. IN A 192.249.249.3 IN A 192.249.249.1 IN A 192.253.253.1
Sur tous les serveurs de noms (hormis le nouveau serveur temporaire de la racine), il faut ensuite installer un chier db.cache qui inclut le nouveau serveur temporaire de la racine (le mieux est de renommer lancien chier de cache, an de le retrouver lors du retour en conguration normale). Voici le contenu du chier db.cache :
. 99999999 IN NS toystory.movie.edu. toystory.movie.edu. 99999999 IN A 192.249.249.3
Cela rendra oprationnelle la rsolution de noms dans movie.edu durant linterruption de connexion. Une fois cette connexion rtablie, il faudra dtruire la nouvelle structure zone et rtablir les indications sur la zone racine dans le chier named.conf de toystory ainsi que le chier cache dorigine sur les autres serveurs de noms.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
9
Gestion de sous-domaines
Pour dbarbouiller ses enfants, Dinah sy prenait de la faon suivante : dabord elle plaquait le pauvre petit animal au sol en lui appuyant une patte sur loreille ; puis, de lautre patte, elle lui frottait rebrousse-poil toute la figure, en commenant par le bout du nez. Or, au moment qui nous occupe, comme je viens de le dire, elle tait en train de sescrimer de toutes ses forces sur la minette blanche, qui restait allonge parfaitement immobile, et sessayait ronronner (comprenant sans nul doute que tout cela tait pour son bien).
Lorsquun domaine devient trop grand ou lorsque lon dcide de rpartir sa gestion entre plusieurs entits, il est ncessaire de le diviser en sous-domaines. Ceux-ci deviennent les enfants du domaine courant dans lespace de noms, le domaine courant tant le parent. La responsabilit des sous-domaines tant dlgue, chaque sous-domaine dispose de sa propre zone, diffrente de la zone parente. Une bonne gestion des sous-domaines comprend le dcoupage du domaine, le choix du nom des sous-domaines et la dlgation ces sous-domaines pour crer de nouvelles zones. Comme tout parent responsable, le domaine parent sassure en permanence de la prennit des liens entre sa zone et celles de ses enfants. En raison de limportance du service de noms pour la navigation entre sites, cette bonne gestion est fondamentale pour le fonctionnement correct du rseau. Une dlgation incorrecte vers des serveurs de noms peut conduire linaccessibilit dun site alors que la perte de connectivit vers les serveurs de la zone parente peut empcher les htes dun site de contacter tout hte situ lextrieur de la zone. Il sagit ici de prsenter notre point de vue sur la cration de sous-domaines et de dcrire en dtail les moyens dy parvenir. Il sera question de la gestion des relations entre parents et enfants et de la gestion du processus de dcoupage dun grand domaine en petits sous-domaines, avec un minimum dinterruption et de perturbation.
[12/01/08]
DNS et Bind
190
le besoin de rpartir la gestion dun domaine entre plusieurs organismes ; les difcults lies la grande taille du domaine ; le fractionnement peut faciliter la
gestion et rduire la charge des serveurs de noms faisant autorit ;
la ncessit de distinguer lappartenance des htes en les plaant dans des sousdomaines spciques. Une fois que la dcision de crer des sous-domaines est prise, reste en dnir le nombre.
Nombre de sous-domaines
Il ne suft pas de dcider de crer des sous-domaines, il faut aussi choisir leur position dans lespace de noms. Si une socit est organise en quatre secteurs dactivit, on peut choisir de crer quatre sous-domaines, un par secteur. Doit-on crer des sous-domaines pour chaque site, chaque dpartement ou pour chaque secteur dactivit ? vrai dire, le DNS permet une grande souplesse. On peut aussi bien crer de nombreux petits sous-domaines que ne crer que quelques grands sousdomaines. Tout est affaire de compromis. Une dlgation comptant un petit nombre de grands sous-domaines nengendre que peu de travail au domaine parent, car il y a peu de dlgations surveiller. Mais les grands domaines ont besoin de serveurs plus rapides et dots de plus de mmoire ; de plus, leur gestion nest pas distribue. En outre, en mettant en uvre des sous-domaines au niveau dun site, mme les groupes autonomes devront se partager une zone unique et devront tre grs par une seule entit. La dlgation un grand nombre de petits sous-domaines peut tre un casse-tte pour ladministrateur du domaine parent. Pour tenir jour les informations de dlgation, il faut contrler en permanence lidentit des htes qui hbergent les serveurs de noms ainsi que lidentit des zones sur lesquelles ils font autorit. Les informations voluent chaque ajout dun serveur de noms dans un sous-domaine ou lorsque ladresse dun serveur est modie. Si tous les sous-domaines sont grs par des personnes diffrentes, cela ncessite un grand nombre de prises de contact et donc une surcharge de travail. Dun autre ct, les sous-domaines sont plus petits et plus faciles grer, et les administrateurs des zones sont plus proches de leurs utilisateurs. Au vu de ces avantages et inconvnients, il peut sembler difcile de faire un choix. Le mieux est probablement de suivre lorganisation naturelle de lentreprise. Certaines socits grent les machines et les rseaux au niveau du site ; dautres ont des groupes de travail dcentraliss et relativement autonomes, qui grent tout eux-mmes. Voici quelques rgles pour faciliter la division de lespace de noms :
Ne pas forcer une entreprise entrer dans une structure trop rigide. Faire rentrer 50
divisions indpendantes dans 4 sous-domaines rgionaux peut faciliter le travail de ladministrateur mais aussi ternir sa rputation. Des oprations dcentralises et
[12/01/08]
DNS et Bind
191
autonomes requirent des zones diffrentes ; cest la raison dtre du systme de noms de domaine.
La structure dun domaine devrait suivre celle de lentreprise, entre autres en raison
de son organisation technique. Si une entit exploite des rseaux, attribue des adresses IP et gre des htes, cette entit doit aussi grer son sous-domaine.
Les noms gographiques sont plus stables que ceux des organismes, mais ils peuvent
paratre obscurs en dehors de lentreprise.
Il ne faut pas sacrier la lisibilit laspect pratique. Des noms sur deux lettres sont
rapides taper, mais impossibles reconnatre. Ainsi, labrviation pour lItalie est it , qui peut tre facilement confondue avec labrviation de Information Technology .
Trop dentreprises utilisent des noms de domaine cabalistiques : plus lentreprise est
grande, plus les noms de domaine sont indchiffrables !
Il ne faut pas utiliser des noms existants ou rservs aux domaines de niveau suprieur pour un nom de sous-domaine. Il peut sembler intressant dutiliser des abrviations gographiques en deux lettres pour des sous-domaines internationaux ou dutiliser des noms de domaine de niveau suprieur, tel que net pour un dpartement rseau (network), mais cela peut poser des problmes. En nommant com le sousdomaine du dpartement Communication, on risque davoir des difcults pour communiquer avec les htes du domaine de niveau suprieur com. Supposons que les administrateurs du sous-domaine com appellent leur nouvelle station Sun sun et leur nouvel HP 9000 hp (quel manque dimagination !). Les utilisateurs du domaine qui enverraient du courrier destination de sun.com ou hp.com, verraient leur
[12/01/08]
DNS et Bind
192
courrier aboutir dans le sous-domaine com1, puisque le nom de la zone parente est susceptible de se trouver dans la liste de recherche de certains htes.
Devenir parent
Une fois que les noms sont choisis, la cration des sous-domaines est aise. Il faut tout dabord dcider du niveau dautonomie coner aux sous-domaines. A priori, la volont de dlguer est sous-jacente la dcision de crer un sous-domaine ; dans ce cas, une nouvelle zone va tre cre. Mais cela nest pas ncessairement le cas. Jusque l, nous avons suppos que la cration dun sous-domaine tait justie par la volont den dlguer la gestion un autre organisme. Mais cette situation nest pas obligatoire. Il faut bien se gurer la manire dont les machines et les rseaux sont grs dans un sous-domaine avant de dcider si on va dlguer ou non la gestion. Une dlgation un sous-domaine na pas de sens si ce dernier ne gre pas lui-mme ses quipements. Dans une grande entreprise, le service du personnel ne gre probablement pas lui-mme ses machines. La cration dun sous-domaine pour le service du personnel ne doit donc pas tre accompagne dune dlgation.
Les utilisateurs peuvent maintenant se connecter db.personnel.movie.edu pour consulter la base de donnes. Cette conguration est intressante pour les employs du service du personnel ; si on ajoute personnel.movie.edu la liste de recherche de leurs poste de travail, ils nont qu taper telnet db pour se connecter la machine souhaite. En utilisant la structure de contrle $ORIGIN, ladministrateur peut utiliser des noms plus courts, ce qui facilitera son travail :
$ORIGIN personnel.movie.edu. brazil IN A 192.253.253.10 IN MX 10 brazil.personnel.movie.edu. IN MX 100 postmanrings2x.movie.edu. employeedb IN CNAME brazil.personnel.movie.edu. db IN CNAME brazil.personnel.movie.edu.
1. En ralit, les routeurs de messagerie ne prsentent pas tous ce problme, mais certains sendmail lont. Tout dpend de la forme de canonisation utilise. Voir la section Courrier lectronique au Chapitre 6 (page 108).
[12/01/08]
DNS et Bind
Devenir parent
193
Si on ajoute de nombreux enregistrements pour le service du personnel, on peut aussi crer un chier spar et utiliser la directive $INCLUDE pour linclure dans db.movie.edu et modier simultanment lorigine. Il ny a pas denregistrement SOA pour personnel.movie.edu : lenregistrement SOA de movie.edu indique une autorit sur lensemble de la zone movie.edu. En labsence de dlgation, personnel.movie.edu est une partie de la zone movie.edu.
Il faut dabord crer un chier de zone contenant les enregistrements pour tous les htes de fx.movie.edu. Voici le contenu de db.fx.movie.edu :
$TTL 1d @ IN SOA bladerunner.fx.movie.edu. hostmaster.fx.movie.edu. ( 1 ; numro de srie 3h ; rafrachissement aprs 3 heures 1h ; nouvel essai aprs 1 heure 1w ; expiration aprs 1 semaine 1h ) ; TTL rponse ngative d1 heure IN NS bladerunner IN NS outland ; MX records for fx.movie.edu IN MX 10 starwars IN MX 100 wormhole.movie.edu. ; starwars prend en charge le courrier de bladerunner ; wormhole est le routeur de messagerie de movie.edu
[12/01/08]
DNS et Bind
194
IN A 192.253.254.3 IN MX 10 starwars IN MX 100 wormhole.movie.edu. IN A 192.253.254.4 IN MX 10 starwars IN MX 100 wormhole.movie.edu. IN A 192.253.254.5 IN MX 10 starwars IN MX 100 wormhole.movie.edu. IN A 192.253.254.6 IN MX 10 starwars IN MX 100 wormhole.movie.edu.
starwars
empire
jedi
Lenregistrement PTR pour 1.254.253.192.in-addr.arpa dsigne volontairement moviegw.movie.edu, le routeur vers les autres rseaux de movie.edu ; il nappartient pas rellement au domaine fx.movie.edu et il nest donc pas ncessaire, dans 254.253.192.inaddr.arpa, que tous les enregistrements PTR correspondent une zone unique, condition quils correspondent au nom canonique de ces htes. Il faut ensuite initialiser le chier named.conf du serveur primaire :
options { directory "/var/named"; };
[12/01/08]
DNS et Bind
Devenir parent
195
zone "0.0.127.in-addr.arpa" { type master; file "db.127.0.0"; }; zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; }; zone "254.253.192.in-addr.arpa" { type master; file "db.192.253.254"; }; zone "." { type hint; file "db.cache"; };
ce qui vite une frappe fastidieuse. h2n conduirait approximativement aux mmes chiers db.fx.movie.edu, db.192.253.254 et named.conf. Il faut maintenant prparer le resolver de bladerunner. Il nest pas encore ncessaire de crer un chier resolv.conf. Si on initialise hostname sur bladerunner par son nouveau nom, bladerunner.fx.movie.edu, le resolver peut extraire le nom du domaine local partir du nom totalement quali. On peut enn dmarrer le processus named sur bladerunner et surveiller syslog pour les erreurs. Si named dmarre correctement et quil ny a pas de renvoi derreur vers syslog, nslookup servira pour les tests en recherchant des noms dans fx.movie.edu et dans 254.253.192.in-addr.arpa :
Default Server: bladerunner.fx.movie.edu Address: 192.253.254.2 > jedi Server: bladerunner.fx.movie.edu Address: 192.253.254.2 Name: jedi.fx.movie.edu Address: 192.253.254.6 > set type=mx > empire Server: bladerunner.fx.movie.edu Address: 192.253.254.2
[12/01/08]
DNS et Bind
196
empire.fx.movie.edu
preference = 10, mail exchanger = starwars.fx.movie.edu empire.fx.movie.edu preference = 100, mail exchanger = wormhole.movie.edu fx.movie.edu nameserver = outland.fx.movie.edu fx.movie.edu nameserver = bladerunner.fx.movie.edu starwars.fx.movie.edu internet address = 192.253.254.4 wormhole.movie.edu internet address = 192.249.249.1 wormhole.movie.edu internet address = 192.253.253.1 bladerunner.fx.movie.edu internet address = 192.253.254.2 outland.fx.movie.edu internet address = 192.253.254.3 > ls -d fx.movie.edu [bladerunner.fx.movie.edu] $ORIGIN fx.movie.edu. @ 1D IN SOA
bladerunner hostmaster ( 1 ; serial 3H ; refresh 1H ; retry 1W ; expiry 1H ) ; minimum bladerunner outland 10 starwars 100 wormhole.movie.edu. 192.253.254.2 10 starwars 100 wormhole.movie.edu. bladerunner 192.253.254.5 10 starwars 100 wormhole.movie.edu. 192.253.254.6 10 starwars 100 wormhole.movie.edu. 192.253.254.3 10 starwars 100 wormhole.movie.edu. 192.253.254.4 10 starwars 100 wormhole.movie.edu. bladerunner hostmaster ( 1 ; serial 3H ; refresh 1H ; retry 1W ; expiry 1H ) ; minimum
bladerunner
br empire
jedi
outland
starwars
1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D
IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN
NS NS MX MX A MX MX CNAME A MX MX A MX MX A MX MX A MX MX SOA
[12/01/08]
DNS et Bind
Devenir parent
> set type=ptr > 192.253.254.3 Server: bladerunner.fx.movie.edu Address: 192.253.254.2 3.254.253.192.in-addr.arpa name = outland.fx.movie.edu
197
> ls -d 254.253.192.in-addr.arpa. [bladerunner.fx.movie.edu] $ORIGIN 254.253.192.in-addr.arpa. @ 1D IN SOA bladerunner.fx.movie.edu. hostmaster.fx.movie.edu. ( 1 ; serial 3H ; refresh 1H ; retry 1W ; expiry 1H ) ; minimum 1D IN NS 1D IN NS 1D IN PTR 1D IN PTR 1D IN PTR 1D IN PTR 1D IN PTR 1D IN PTR 1D IN SOA bladerunner.fx.movie.edu. outland.fx.movie.edu. movie-gw.movie.edu. bladerunner.fx.movie.edu. outland.fx.movie.edu. starwars.fx.movie.edu. empire.fx.movie.edu. jedi.fx.movie.edu. bladerunner.fx.movie.edu. hostmaster.fx.movie.edu. ( 1 ; serial 3H ; refresh 1H ; retry 1W ; expiry 1H ) ; minimum
1 2 3 4 5 6 @
> exit
Les informations obtenues semblent correctes. Il serait bon de dmarrer maintenant un serveur-esclave et de dlguer lautorit fx.movie.edu partir de movie.edu.
Esclave de fx.movie.edu
Linitialisation du serveur-esclave de fx.movie.edu est simple : copie de named.conf, de db.127.0.0 et de db.cache partir de bladerunner, puis modication de named.conf et de db.127.0.0 selon les instructions du Chapitre 4. Voici le nouveau chier named.conf :
options { directory "/var/named"; }; zone "0.0.127.in-addr.arpa" { type master; file "db.127.0.0"; };
[12/01/08]
DNS et Bind
198
zone "fx.movie.edu" { type slave; masters { 192.253.254.2; }; file "bak.fx.movie.edu"; }; zone "254.253.192.in-addr.arpa" { type slave; masters { 192.253.254.2; }; file "bak.192.253.254"; }; zone "." { type hint; file "db.cache"; };
Tout comme bladerunner, outland na pas rellement besoin dun chier resolv.conf si hostname est initialis outland.fx.movie.edu. On peut enn dmarrer named et surveiller les erreurs renvoyes vers syslog. Sil ny en a pas, on peut tester le serveur en linterrogeant sur des enregistrements de fx.movie.edu.
Selon la RFC 1034, les noms apparaissant dans la partie spcique de lenregistrement de ressources NS (la partie droite, contenant bladerunner.fx.movie.edu et outland.fx.movie.edu) doivent tre les noms canoniques des serveurs de noms. Un serveur distant se rfrant la dlgation doit trouver au moins un enregistrement dadresse attach ces noms, mais pas denregistrement dalias (CNAME). La RFC tend cette restriction tout enregistrement de ressource incluant un nom ; ce dernier doit donc tre obligatoirement un nom canonique. Les deux enregistrements prcdents ne sufsent donc pas pour suivre la dlgation. Comment un serveur de noms situ lextrieur de fx.movie.edu pourrait-il y rechercher des informations ? Les serveurs de movie.edu doivent pouvoir donner tous les lments pour pouvoir contacter les serveurs de fx.movie.edu or ces deux enregistrements ne donnent que leur nom mais pas leur adresse IP qui nest actuellement dclare que dans la zone fx.movie.edu. Dans ltat actuel de la conguration, seuls les serveurs de noms de fx.movie.edu peuvent fournir ces adresses aux serveurs distants. Un rel problme de poule et duf ! La solution consiste inclure les adresses des serveurs de fx.movie.edu dans le chier de zone db.movie.edu. Bien quelles ne fassent pas rellement partie de la zone movie.edu, elles sont ncessaires la dlgation vers fx.movie.edu. Bien sr, si les serveurs de fx.movie.edu ne sont pas dans la zone fx.movie.edu, ces enregistrements dadresse, appels enregistrements de recollage (glue records), ne sont pas ncessaires. Un serveur distant
[12/01/08]
DNS et Bind
Devenir parent
199
trouvera les adresses de ces serveurs externes en interrogeant dautres serveurs. Ici, il faut donc ajouter les enregistrements de recollage suivants au chier db.movie.edu :
fx 86400 IN NS 86400 IN NS bladerunner.fx.movie.edu. outland.fx.movie.edu. bladerunner.fx.movie.edu. outland.fx.movie.edu. 86400 IN A 192.253.254.2 86400 IN A 192.253.254.3
Il faut prendre garde ne pas ajouter denregistrements de recollage superus dans le chier. Les serveurs BIND 8 et 9 BIND ignorent automatiquement les informations de recollage qui ne sont pas strictement ncessaires et le signalent via syslog. Si on ajoute un enregistrement NS pour movie.edu, qui dsigne un serveur situ sur un autre site, ns1.isp.net et quon fait lerreur dinclure ladresse de ce serveur dans db.movie.edu sur le serveur primaire de movie.edu, on trouvera les messages suivants dans syslog :
Aug 9 14:23:41 toystory named[19626]: dns_master_load: db.movie.edu:55: ignoring out-of-zone data
Il ne faut surtout pas oublier de tenir jour les informations de recollage. Si on ajoute une nouvelle interface de rseau bladerunner, et donc un nouveau numro IP il faut , ajouter un nouvel enregistrement A aux informations de recollage. On peut aussi crer des alias pour chaque hte quon dplace de movie.edu vers fx.movie.edu. Si on dplace plan9.movie.edu, un important serveur accessible au public, vers fx.movie.edu, il faut crer un alias dans movie.edu, liant lancien nom au nouveau :
plan9 IN CNAME plan9.fx.movie.edu.
Ceci permettra aux utilisateurs extrieurs movie.edu, datteindre plan9 tout en continuant utiliser son ancien nom plan9.movie.edu. Attention la zone laquelle appartient cet alias. Lalias plan9 est dans la zone movie.edu et a sa place dans le chier db.movie.edu. Lalias p9.fx.movie.edu dsignant plan9.fx.movie.edu est dans la zone fx.movie.edu et a sa place dans le chier db.fx.movie.edu. Si on place un enregistrement concernant lextrieur dune zone dcrite par un chier de zone, le serveur de noms nen tiendra pas compte, comme nous lavons montr avec les enregistrements de recollage inutiles.
DNS et Bind
200
Address: 0.0.0.0#53 > set type=soa > 192.in-addr.arpa. Server: toystory.movie.edu Address: 0.0.0.0#53 Non-authoritative answer: 192.in-addr.arpa origin = chia.arin.net mail addr = bind.arin.net serial = 2005112714 refresh = 1800 retry = 900 expire = 691200 minimum = 10800
Authoritative answers can be found from: 192.in-addr.arpa nameserver = chia.arin.net. 192.in-addr.arpa nameserver = dill.arin.net. 192.in-addr.arpa nameserver = basil.arin.net. 192.in-addr.arpa nameserver = henna.arin.net. 192.in-addr.arpa nameserver = indigo.arin.net. 192.in-addr.arpa nameserver = epazote.arin.net. 192.in-addr.arpa nameserver = figwort.arin.net. chia.arin.net has AAAA address 2001:440:2000:1::21 basil.arin.net internet address = 192.55.83.32 henna.arin.net internet address = 192.26.92.32 indigo.arin.net internet address = 192.31.80.32
ARIN (American Registry of Internet Numbers) est responsable de la zone 192.in-addr.arpa (voir le Chapitre 3). Il faut utiliser le formulaire http://www.arin.net/library/templates/netend-user.txt pour demander lenregistrement de la zone inverse.
[12/01/08]
DNS et Bind
Sous-domaines de in-addr.arpa
201
Les modications apporter sont simples : il faut ajouter une directive au chier named.conf de bladerunner pour indiquer named de charger la zone movie.edu en utilisant ladresse IP du serveur primaire de movie.edu, cest--dire celle de toystory.movie.edu. Voici le contenu du nouveau chier named.conf :
options { directory "/var/named"; }; zone "0.0.127.in-addr.arpa" { type master; file "db.127.0.0"; }; zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; }; zone "254.253.192.in-addr.arpa" { type master; file "db.192.253.254"; }; zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; }; zone "." { type hint; file "db.cache"; };
Sous-domaines de in-addr.arpa
La division en sous-domaines nest pas rserve aux domaines servant la rsolution directe. Si un espace de noms in-addr.arpa est trop grand, on peut le fractionner. Dans la pratique, on divise le domaine correspondant au numro de rseau, en sous-domaines correspondants aux sous-rseaux. Tout dpend donc du type de rseau utilis et du masque de sous-rseau correspondant.
[12/01/08]
DNS et Bind
202
sous-domaine du domaine altered.edu, dont fx.altered.edu pour les effets spciaux, makeup.altered.edu pour les arrangements et foley.altered.edu pour les trucages. Puisque chacun de ces dpartements dispose de son propre sous-rseau (172.20.2/24 pour les effets spciaux, 172.20.15/24 pour les arrangements et 172.20.25/24 pour les trucages), il serait judicieux de diviser lespace de noms in-addr.arpa. La dlgation des sous-domaines de in-addr.arpa est identique celle des domaines servant la rsolution directe. Dans le chier de zone db.172.20, pour dlguer chaque sous-domaine au serveur de noms adquat, il faut ajouter les enregistrements NS suivants :
2 2 15 15 25 25 86400 86400 86400 86400 86400 86400 IN IN IN IN IN IN NS NS NS NS NS NS gump.fx.altered.edu. toystory.fx.altered.edu. prettywoman.makeup.altered.edu. priscilla.makeup.altered.edu. blowup.foley.altered.edu. muppetmovie.foley.altered.edu.
Remarque importante : pour Altered States, il ne faut utiliser que le troisime octet de sous-rseau dans le premier champ, car lorigine par dfaut est 20.172.in-addr.arpa. Il est ncessaire dutiliser des noms totalement qualis pour les serveurs dans la partie droite des enregistrements NS an dviter lajout de lorigine. Enn, il ny a aucun intrt utiliser des enregistrements dadresse de recollage puisque les noms des serveurs auxquels les zones sont dlgues ne se terminent pas par le nom de la zone dlgue.
[12/01/08]
DNS et Bind
Sous-domaines de in-addr.arpa
205.1.15.in-addr.arpa. 206.1.15.in-addr.arpa. 206.1.15.in-addr.arpa. 207.1.15.in-addr.arpa. 207.1.15.in-addr.arpa. 86400 86400 86400 86400 86400 IN IN IN IN IN NS NS NS NS NS ns-2.cns.hp.com. ns-1.cns.hp.com. ns-2.cns.hp.com. ns-1.cns.hp.com. ns-2.cns.hp.com.
203
Cest beaucoup pour la dlgation dun seul sous-rseau ! Heureusement, BIND 8 depuis sa version 8.2 et BIND 9 depuis sa version 9.1.0 disposent dune structure de contrle $GENERATE. Elle permet de crer un groupe denregistrements de ressources qui ne diffrent les uns des autres que dun incrment de boucle. Ainsi, on peut crer simplement les 16 enregistrements NS suivants :
$GENERATE 200-207 $.1.15.in-addr.arpa. 86400 IN NS ns-1.cns.hp.com. $GENERATE 200-207 $.1.15.in-addr.arpa. 86400 IN NS ns-2.cns.hp.com.
La syntaxe est trs simple : lorsque le serveur lit la structure de contrle, il effectue une itration dans la plage indique dans le premier champ et remplace chaque signe $ du prototype par la valeur courante de litration.
Solution 1. La premire solution consiste grer la zone 254.253.192.in-addr.arpa comme une seule entit et mme essayer de ne pas dlguer. Cela requiert une coopration entre les administrateurs des quatre sous-rseaux concerns ou lutilisation dun outil tel que Webmin (http://www.webmin.com/) pour permettre chaque administrateur de grer ses propres informations. Solution 2. La seconde solution consiste dlguer au niveau du quatrime octet, ce qui est plus laborieux que la dlgation /8 ci-dessus. Cela ncessite au moins un couple denregistrements NS par adresse IP dans le chier db.192.253.254 :
1.254.253.192.in-addr.arpa. 1.254.253.192.in-addr.arpa. 2.254.253.192.in-addr.arpa. 2.254.253.192.in-addr.arpa. ... 65.254.253.192.in-addr.arpa. 65.254.253.192.in-addr.arpa. 66.254.253.192.in-addr.arpa. 66.254.253.192.in-addr.arpa. ... 86400 86400 86400 86400 IN IN IN IN NS NS NS NS relay.bar.com. gw.bar.com. relay.bar.com. gw.bar.com. 86400 86400 86400 86400 IN IN IN IN NS NS NS NS ns1.foo.com. ns2.foo.com. ns1.foo.com. ns2.foo.com.
[12/01/08]
DNS et Bind
204
IN IN IN IN
NS NS NS NS
et ainsi de suite jusqu 254.254.253.192.in-addr.arpa. On peut fortement condenser ces dclarations laide de $GENERATE :
$GENERATE 0-63 $.254.253.192.in-addr.arpa. 86400 IN NS ns1.foo.com. $GENERATE 0-63 $.254.253.192.in-addr.arpa. 86400 IN NS ns2.foo.com. $GENERATE 64-127 $.254.253.192.in-addr.arpa. 86400 IN NS relay.bar.com. $GENERATE 64-127 $.254.253.192.in-addr.arpa. 86400 IN NS gw.bar.com. $GENERATE 128-191 $.254.253.192.in-addr.arpa. 86400 IN NS mail.baz.com. $GENERATE 128-191 $.254.253.192.in-addr.arpa. 86400 IN NS www.baz.com.
IN IN IN
NS NS PTR
Notons que lenregistrement PTR est attach au nom de la zone, puisque ce nom correspond une seule adresse IP Dsormais, lorsquun serveur de noms de 254.253.192.in. addr.arpa reoit une requte denregistrement PTR pour 1.254.253.192.in-addr.arpa, il rpond en indiquant dinterroger ns1.foo.com ou ns2.foo.com, qui rpondront par lenregistrement PTR dans la zone.
Solution 3. Finalement, il existe une solution astucieuse qui vite de maintenir un chier de zone spar pour chaque adresse IP Le responsable de lensemble du .
[12/01/08]
DNS et Bind
Sous-domaines de in-addr.arpa
205
rseau /24 cre un enregistrement CNAME pour chacun des noms de la zone. Ces enregistrements CNAME dsignent des noms dans les nouveaux sous-domaines, chacun de ses noms tant dlgu son propre serveur. Ces nouveaux sous-domaines peuvent tre appels, par exemple, 0-63, 64-127, 128-191 et 192-255, ce qui a le mrite dindiquer clairement la plage dadresses gre par chaque serveur dans le cadre de la rsolution inverse. Chaque sous-domaine contient uniquement les enregistrements PTR le concernant. Voici un extrait du chier db.254.253.192 :
1.254.253.192.in-addr.arpa. IN CNAME 1.0-63.254.253.192.in-addr.arpa. 2.254.253.192.in-addr.arpa. IN CNAME 2.0-63.254.253.192.in-addr.arpa. ... 0-63.254.253.192.in-addr.arpa. 0-63.254.253.192.in-addr.arpa. 86400 86400 IN IN NS NS ns1.foo.com. ns2.foo.com.
65.254.253.192.in-addr.arpa. IN CNAME 65.64-127.254.253.192.in-addr.arpa. 66.254.253.192.in-addr.arpa. IN CNAME 66.64-127.254.253.192.in-addr.arpa. ... 64-127.254.253.192.in-addr.arpa. 64-127.254.253.192.in-addr.arpa. 86400 86400 IN IN NS NS relay.bar.com. gw.bar.com.
129.254.253.192.in-addr.arpa. IN CNAME 129.128-191.254.253.192.in-addr.arpa. 130.254.253.192.in-addr.arpa. IN CNAME 130.128-191.254.253.192.in-addr.arpa. ... 128-191.254.253.192.in-addr.arpa. 128-191.254.253.192.in-addr.arpa. 86400 86400 IN IN NS NS mail.baz.com. www.baz.com.
$GENERATE 65-127 $ IN CNAME $.64-127.254.253.192.in-addr.arpa. 64-127.254.253.192.in-addr.arpa. 64-127.254.253.192.in-addr.arpa. 86400 86400 IN IN NS NS relay.bar.com. gw.bar.com.
Le chier de la zone 0-63.254.253.192.in-addr.arpa, db.192.253.254.0-63, ne contient que les enregistrements PTR pour les adresses IP allant de 192.253.254.1 192.253.254.63. Voici un extrait du chier db.192.253.254.0-63 :
$TTL 1d @ IN SOA ns1.foo.com. 1 root.ns1.foo.com. ; numro de srie (
[12/01/08]
DNS et Bind
206
3h 1h 1w 1h ) IN IN 1 IN 2 IN 3 IN ... NS NS PTR PTR PTR ns1.foo.com. ns2.foo.com. thereitis.foo.com. setter.foo.com. mouse.foo.com. ; ; ; ;
Le fonctionnement de cette conguration est un peu ardu. Un resolver recherche, par exemple, lenregistrement PTR de 1.254.253.192.in-addr.arpa, induisant ainsi une recherche par son serveur local. Ce dernier serveur nit par interroger un serveur de noms de 254.253.192.in-addr.arpa qui rpond avec lenregistrement CNAME, indiquant que 1.254.253.192.in-addr.arpa est en ralit un alias de 1.0-63.254.253.192.in-addr.arpa et que lenregistrement PTR est associ ce nom. La rponse contient aussi les enregistrements NS, qui annoncent ainsi au serveur local que les serveurs qui font autorit sur 0-63.254.253.192.in-addr.arpa sont ns1.foo.com et ns2.foo.com. Le serveur local interroge alors soit ns1.foo.com, soit ns2.foo.com, demande lenregistrement PTR de 1.063.254.253.192.in-addr.arpa et reoit lenregistrement recherch.
puis le compiler :
% make
host facilite le test de la dlgation. Avec host, on peut rechercher les enregistrements NS dune zone sur les serveurs de noms de sa zone parente. Si les rsultats sont concluants, on peut ensuite utiliser host pour interroger chaque serveur de noms et demander le SOA de la zone. La requte est non-rcursive ; le serveur interrog ninterroge donc pas son tour un autre serveur pour trouver lenregistrement SOA. Si le serveur rpond, host vrie la rponse pour voir si le bit aa (authoritative answer, rponse faisant autorit) est positionn. Si cest le cas, on vrie que le message contient une rponse. Si tous ces critres sont remplis, le serveur de noms est rput faire autorit sur la zone, sinon il ne fait pas autorit et host renvoie un message derreur. Une dlgation incorrecte peut ralentir la rsolution de noms ou provoquer la propagation dinformations anciennes et errones. Un serveur de noms distant perdra du temps en suivant des enregistrements NS incorrects, simplement parce quil aura reu des indications comme quoi vos serveurs ne font pas autorit sur leur zone. Le serveur distant sera forc dinterroger un serveur dsign par un autre enregistrement NS, ce
[12/01/08]
DNS et Bind
207
qui augmentera le temps de rsolution. Pire encore, le serveur de noms distant placera lenregistrement NS incorrect en mmoire cache et le propagera ainsi aux autres serveurs de lInternet, ampliant ainsi le problme.
Utiliser host
Si nous avons russi vous convaincre de limportance dune dlgation correcte, vous avez sans doute envie dapprendre utiliser host an de vrier que vous ntes pas dans les rangs des mcrants. La premire tape consiste utiliser host pour rechercher les enregistrements NS de votre zone sur un serveur de votre zone parente an de vrier leur validit. Ci-dessous, nous vrions les enregistrements NS de fx.movie.edu sur lun des serveurs de movie.edu :
% host -t ns fx.movie.edu. toystory.movie.edu.
Cela conrme la validit des enregistrements NS de dlgation de fx.movie.edu toystory.movie.edu (le format dafchage peut varier selon la version de host, mais le contenu reste le mme). Nous utilisons ensuite le mode de test du SOA pour interroger chacun des serveurs dclars par un enregistrement NS et leur demander lenregistrement SOA de la zone fx.movie.edu. Le test vrie aussi que la rponse fait autorit :
% host -C fx.movie.edu.
Normalement, les enregistrements NS vus plus haut sont nouveau afchs, mais complts par le contenu du SOA de la zone fx.movie.edu :
Nameserver bladerunner.fx.movie.edu: fx.movie.edu SOA bladerunner.fx.movie.edu. hostmaster.fx.movie.edu. 1 10800 3600 608400 3600 Nameserver outland.fx.movie.edu: fx.movie.edu SOA bladerunner.fx.movie.edu. hostmaster.fx.movie.edu. 1 10800 3600 608400 3600
Le message suivant indique que lun des serveurs de fx.movie.edu, par exemple outland, est mal congur :
Nameserver bladerunner.fx.movie.edu: fx.movie.edu SOA bladerunner.fx.movie.edu. hostmaster.fx.movie.edu. 1 10800 3600 608400 3600 nxdomain.com has no SOA record
Ce message indique quil y a bien un serveur actif sur outland, mais quil ne fait pas autorit sur fx.movie.edu. Le message suivant indique que lun des serveurs de fx.movie.edu ne rpond pas :
Nameserver bladerunner.fx.movie.edu: fx.movie.edu SOA bladerunner.fx.movie.edu. hostmaster.fx.movie.edu. 1 10800 3600 608400 3600 ;; connection timed out; no servers could be reached
[12/01/08]
DNS et Bind
208
Dans ce cas, le message connection timed out indique que host a envoy une requte outland et quil na pas obtenu de rponse dans le temps imparti. Nous aurions pu utiliser nslookup ou dig pour tester la dlgation de fx.movie.edu, mais les puissantes options en ligne de commande de host facilitent la tche.
Grer la dlgation
Si le laboratoire des effets spciaux stend encore, des serveurs additionnels peuvent tre ncessaires. Le Chapitre 8 explique comment procder et quelles informations faire parvenir ladministrateur de la zone parente. Par contre, nous navons pas encore expliqu ce que doit effectuer cet administrateur. Son travail est relativement simple, surtout si les administrateurs du sous-domaine lui font parvenir toutes les informations. Supposons que le laboratoire des effets spciaux mette en uvre un nouveau rseau, 192.254.20/24. alien.fx.movie.edu en est le nouveau serveur. Les administrateurs de fx.movie.edu envoient un email ladministrateur de la zone parente :
Bonjour, Nous venons dinitialiser alien.fx.movie.edu (192.254.20.3) comme serveur pour fx.movie.edu. Pourriez-vous mettre jour les informations de dlgation ? Vous trouverez ci-dessous les enregistrements NS ajouter. Cordialement, Albert Muda amu@fx.movie.edu ----- couper ici ----fx.movie.edu. 86400 IN NS bladerunner.fx.movie.edu. fx.movie.edu. 86400 IN NS outland.fx.movie.edu. fx.movie.edu. 86400 IN NS alien.fx.movie.edu. bladerunner.fx.movie.edu. 86400 IN A 192.253.254.2 outland.fx.movie.edu. 86400 IN A 192.253.254.3 alien.fx.movie.edu. 86400 IN A 192.254.20.3
Ladministrateur de movie.edu doit ajouter les enregistrements NS et A db.movie.edu. Si ladministrateur de la zone parente a utilis h2n pour crer les informations, il peut placer les nouvelles donnes dans le chier spcl.movie que h2n inclut ($INCLUDE) la n du chier db.movie quil cre. La dernire tche de ladministrateur de fx.movie.edu consiste envoyer un message similaire hostmaster@arin.net (ladministrateur de la zone 192.in-addr.arpa) en lui demandant de dlguer le sous-domaine 20.254.192.in-addr.arpa alien.fx.movie.edu, bladerunner.fx.movie.edu et outland.fx.movie.edu.
[12/01/08]
DNS et Bind
209
Notons quavec des serveurs BIND 9, il faut congurer tous les serveurs de movie.edu en mode source (stub) pour fx.movie.edu. BIND 9 ne propage pas les informations de dlgation de fx.movie.edu vers la zone parente, aussi la dlgation de zone fx.movie.edu nest pas incluse dans les transferts de zone. Linitialisation de tous les serveurs de movie.edu en mode source pour le sous-domaine assure quils restent tous synchroniss.
[12/01/08]
DNS et Bind
210
Escape character is '^]'.
Certains utilisateurs ne voient mme pas ce changement inme. Il peut tre bon de les en informer. Sur lhte fx.movie.edu, qui utilise une vieille version de sendmail, il est aussi ncessaire de congurer sendmail pour quil accepte celui libell aux noms du nouveau domaine. Les versions rcentes de sendmail canonisent les noms dhtes apparaissant dans les adresses de destination des en-ttes de message en utilisant un serveur de noms avant denvoyer le message. Cela convertit un alias movie.edu en un nom canonique dans fx.movie.edu. Si sendmail sur la machine de destination est ancien et code en dur le nom dhte local, il faut changer manuellement le nom du nouveau domaine. Cela ne requiert habituellement quune simple modication de la classe w ou de la classe de chier w dans sendmail.cf (voir la section Algorithme des MX, page 90). h2n effectue tout le travail de cration des alias pour les htes des rseaux de fx.movie.edu (192.253.254/24 et 192.254.20/24) et dindication des nouveaux noms pour les htes dans le chier /etc/hosts. Par exemple, lutilisation de la table dhte de fx.movie.edu permet de gnrer facilement les alias dans movie.edu pour tous les htes de fx.movie.edu. Contenu partiel de /etc/hosts :
192.253.254.1 movie-gw.movie.edu movie-gw # serveur primaire de fx 192.253.254.2 bladerunner.fx.movie.edu bladerunner br # esclaves de fx 192.253.254.3 outland.fx.movie.edu outland 192.253.254.4 starwars.fx.movie.edu starwars 192.253.254.5 empire.fx.movie.edu empire 192.253.254.6 jedi.fx.movie.edu jedi 192.254.20.3 alien.fx.movie.edu alien
Loption -c de h2n utilise un nom de zone comme argument. Lorsque h2n trouve un hte de cette zone sur le rseau, il lui cre des alias dans la zone courante (indiqu par loption -d) :
% h2n -d movie.edu -n 192.253.254 -n 192.254.20 \ -c fx.movie.edu -f options
options contient dautres options pour la construction dinformations partir dautres domaines de movie.edu. La commande ci-dessus cre dans movie.edu un alias pour tout hte de fx.movie.edu.
[12/01/08]
DNS et Bind
211
lissue dune priode transitoire, et aprs avoir prvenu les utilisateurs, il faudra supprimer les alias, sauf ventuellement pour des machines offrant un service notoire sur lInternet. Durant la priode transitoire, les utilisateurs auront pu shabituer aux nouveaux noms et modier en consquence leurs scripts, chiers .rhosts et autres. Il ne faut pas tre tent de prenniser tous les alias dans la zone parente ; cela soppose au principe de dlgation du DNS et empche les administrateurs des deux zones de nommer les htes de manire autonome. Plutt que de conserver ternellement des enregistrements CNAME pour des htes-cls utiliss partir de lInternet et ne pouvant accepter une perte de connectivit, il vaut mieux choisir de laisser ces htes dans la zone parente. h2n, laide de loption -c, permet de supprimer des alias, mme si les enregistrements pour les htes du sous-domaine sont mlangs dans la table dhtes ou mlangs des htes du mme rseau situs dans dautres zones. Loption -e indique de supprimer tous les enregistrements contenant le nom spci. La commande ci-dessous supprime tous les enregistrements CNAME concernant fx.movie.edu, tout en ajoutant un enregistrement A pour movie-gw.movie.edu (qui est sur le rseau 192.253.254/24) :
% h2n -d movie.edu -n 192.253.254 -n 192.254.20 \ -e fx.movie.edu -f options
Une zone unique contenant la totalit des htes. Dcoupage de la zone en sous-domaines, dont certains ventuellement dans la mme
zone que le parent. Cration denregistrements CNAME dans la zone parente vers les htes notoires dplacs dans les sous-domaines.
lissue dune priode transitoire, suppression des enregistrements CNAME. Mise jour manuelle ou par zone source et test priodique de la dlgation.
Nous allons maintenant tudier les caractristiques avances des serveurs de noms.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
10
Fonctionnalits avances
quoi leur sert davoir des noms, demanda le Moucheron, sils ne rpondent pas ces noms ?
Les dernires versions de BIND, les versions 8.4.7 et 9.3.2, introduisent de nombreuses nouveauts, dont les plus importantes sont la mise jour dynamique, lannonce asynchrone de modication de zone (NOTIFY) et le transfert incrmental de zone. Les autres nouveauts importantes concernent la scurit : possibilit dindiquer un serveur de noms qui rpondre, qui proposer des transferts de zone et de qui accepter des mises jour dynamiques. Les fonctions de scurit peuvent tre inutiles lintrieur dun rseau dentreprise, par contre les autres mcanismes sont un plus pour les administrateurs de tous les serveurs. Ce chapitre dcrit ces caractristiques et leur intgration dans larchitecture du DNS. La plupart des lments utiles dans les architectures pare-feu seront traits au chapitre suivant.
Daprs cette dnition, le rseau 15.0.0.0 avec un masque de rseau 255.0.0.0 (8 bits contigus 1) scrit 15/8, ce qui pourrait aussi se dcrire par le rseau 15 de classe A . Le rseau ayant les adresses IP comprises entre 192.168.1.192 192.168.1.255 scrit
1. Les listes dadresses postrieures BIND 8.3.0 et de BIND 9 peuvent contenir des adresses et des prxes IPv6.
[12/01/08]
DNS et Bind
214
192.168.1.192/26, ce qui correspond au rseau 192.168.1.192 de masque de rseau 255.255.255.192 (26 bits contigus 1). Voici une liste dadresses incluant les deux rseaux qui viennent dtre prsents :
15/8; 192.168.1.192/26;
Une liste nomme de contrle daccs doit avoir t pralablement dnie laide dune directive acl, dont la structure est simple, dans named.conf :
acl nom_acl { liste_dadresses; };
nom_acl devient alors quivalent la liste explicite dadresses. Bien que le nom de la directive, acl, signie access control list et semble donc dvolue la scurit, on peut utiliser nom_acl partout o une liste dadresses est accepte, mme si cela na rien voir avec un contrle daccs. Si des termes sont rcurrents, il est bon dutiliser une directive acl pour les associer un nom. Associons par exemple 15/8 un nom qui correspond sa signication : HP-NET. De la mme manire, associons 192.168.1.192/26 au nom internal :
acl "HP-NET" { 15/8; }; acl "internal" { 192.168.1.192/26; };
Ces noms peuvent dsormais tre utiliss dans dautres listes daccs, rendant ainsi le chier named.conf non seulement plus facile grer, mais aussi beaucoup plus lisible. Il est conseill dencadrer les noms dACL par des guillemets, an dviter des conits potentiels avec des mots-cls utilisables dans named.conf. Quatre listes daccs sont prdnies : none Aucune adresse IP . any Toutes les adresses IP . localhost Chacune des adresses IP de la machine locale (celle qui contient le serveur). localnets Chacun des rseaux auxquels est connecte la machine courante, dtermins en combinant chacune des adresses IP associes une interface avec le masque de rseau attach.
DNS et Bind
215
enregistrements de ressource une zone. Lupdater doit dabord tablir la liste des serveurs faisant autorit partir des enregistrements NS de la zone. Si le serveur recevant un message autoris de mise jour nest pas le serveur primaire de la zone, il le retransmet son serveur-matre (update forwarding). Si celui-ci est lui-mme un esclave, il retransmet aussi la mise jour. Seul le serveur primaire dune zone dispose des chiers de zone modiables ; tous les esclaves obtiennent leurs chiers de zone du serveur primaire, que ce soit directement ou indirectement (via un esclave). Une fois que le serveur primaire a trait la mise jour dynamique et modi la zone, les esclaves peuvent en obtenir une nouvelle copie par transfert de zone. La mise jour dynamique permet plus quun simple ajout ou suppression denregistrements. Les updaters peuvent ajouter ou supprimer des enregistrements de ressource individuels, supprimer des ensembles denregistrements de ressource (RRset) de mme nom, classe ou type (par exemple toutes les adresses Internet de www.movie.edu), ou mme supprimer tous les enregistrements associs un nom. Une mise jour peut aussi prciser que certains enregistrements doivent exister ou ne pas exister dans la zone avant que la mise jour ne prenne effet. Par exemple, une mise jour peut ajouter lenregistrement dadresse :
armageddon.fx.movie.edu. 300 IN A 192.253.253.15
condition que le nom armageddon.fx.movie.edu ne soit pas dj utilis ou que armageddon.fx.movie.edu nait pas dj denregistrement dadresse.
Avant la version 9.1.0, les serveurs BIND ne retransmettent pas les mises jour. Si on utilise des serveurs plus anciens, il faut donc sassurer que les requtes arrivent directement au serveur primaire faisant autorit sur la zone mettre jour. Pour cela, il faut tenir jour le champ MNAME de lenregistrement SOA de la zone. En effet, la plupart des procdures de mise jour utilisent ce champ comme une indication sur lidentit du serveur auquel envoyer la requte.
La mise jour dynamique est surtout utilise par des programmes tels que les serveurs DHCP qui attribuent automatiquement des adresses aux machines et qui ont besoin de , dclarer les correspondances nom-adresse et adresse-nom. Certains de ces programmes utilisent la procdure du resolver ns_update() pour crer les messages de mise jour et pour les envoyer vers un serveur faisant autorit sur la zone mettre jour. Il est galement possible de gnrer manuellement des messages de mise jour laide de la commande nsupdate, intgre la distribution de BIND. nsupdate lit les paramtres en ligne de commande et les traduit en messages de mise jour. Les commandes peuvent provenir de lentre standard ou dun chier, dont le nom est pass comme argument nsupdate. Les commandes non spares par une ligne vide sont incorpores dans un message unique de mise jour, tant quil y a de la place. nsupdate comprend les commandes suivantes : prereq yxrrset nom type [donnes] Lexistence dun ensemble denregistrements de ressource (RRset) de type type et de nom nom devient une condition de mise jour pour une srie de commandes update. Si donnes est dni, la valeur doit aussi exister.
[12/01/08]
DNS et Bind
216
prereq nxrrset nom type Linexistence dun ensemble denregistrements de ressource (RRset) de type type et de nom nom devient une condition de mise jour pour une srie de commandes update. prereq yxdomain nom Lexistence du nom nom devient une condition de mise jour. prereq nxdomain nom Linexistence du nom nom devient une condition de mise jour. update delete nom [type] [donnes] Cette commande supprime le nom indiqu ou, si type est aussi indiqu, supprime lensemble denregistrements correspondant ou, si donnes est aussi indiqu, supprime lenregistrement correspondant simultanment nom, type et donnes. update add nom ttl [classe] type donnes Cette commande ajoute lenregistrement indiqu la zone. Le TTL, le type et les donnes propres lenregistrement doivent obligatoirement tre indiqus. La classe est facultative ; sa valeur par dfaut est IN. La commande :
% > > > nsupdate prereq nxdomain mib.fx.movie.edu. update add mib.fx.movie.edu. 300 A 192.253.253.16 send
demande au serveur dajouter une adresse pour mib.fx.movie.edu condition que ce nom nexiste pas encore. Avec les versions BIND 8 de nsupdate, une dernire ligne, vide, donne le signal de la mise jour, la place de la commande send. Subtil, nest-ce-pas ? La commande suivante vrie dabord que mib.fx.movie.edu dispose dun enregistrement MX et, dans lafrmative, le supprime et le remplace par deux nouveaux enregistrements :
% > > > > > nsupdate prereq yxrrset mib.fx.movie.edu. MX update delete mib.fx.movie.edu. MX update add mib.fx.movie.edu. 600 MX 10 mib.fx.movie.edu. update add mib.fx.movie.edu. 600 MX 50 postmanrings2x.movie.edu. send
Comme avec les requtes, les serveurs qui traitent les mises jour dynamique rpondent par des messages DNS indiquant si la mise jour sest bien droule et, si non, ce qui sest mal pass. Une mise jour peut chouer pour de nombreuses raisons, par exemple le serveur de nom ne fait pas rellement autorit sur la zone en cours de mise jour ou les pr-requis ne sont pas satisfaits ou, encore, parce que le demandeur nest pas autoris. Il y a quelques limites la mise jour dynamique : on ne peut ni supprimer une zone (cest--dire quon ne peut supprimer ni lenregistrement SOA ni le dernier enregistrement NS) ni en crer une.
[12/01/08]
DNS et Bind
217
[12/01/08]
DNS et Bind
218
;BIND LOG V8 [DYNAMIC_UPDATE] id 8761 from [192.249.249.3].1148 at 971389102 (named pid 17602): zone: origin movie.edu class IN serial 2000010957 update: {add} almostfamous.movie.edu. 600 IN A 192.249.249.215
Celui de BIND 9 nest pas lisible par un tre humain (en tous cas, pas par ceux que nous connaissons).
Un updater autoris utilisant allow-update peut effectuer nimporte quelle modication dans la zone : destruction de tout enregistrement (except le SOA), ajout de tout enregistrement.
[12/01/08]
DNS et Bind
219
Une autre mthode consiste utiliser des requtes signes par TSIG (qui sera dcrit en dtail au Chapitre 11). Pour le moment, il suft de savoir quune mise jour signe par TSIG porte la signature lectronique du demandeur initial, y compris lors dune retransmission. En vriant la signature, on obtient le nom de la cl de chiffrement utilise pour signer la mise jour. Ce nom ressemble un nom DNS et est souvent le nom de lhte sur lequel la cl est dclare. En BIND 8, depuis la version 8.2, une liste dadresses peut contenir une ou plusieurs cls TSIG :
zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; allow-update { key dhcp-server.fx.movie.edu.; }; // autorise uniquement les mises // jour signes avec la cl // TSIG du serveur DHCP };
Cela permet tout updater signant une mise jour dynamique avec la cl TSIG dhcpserver.fx.movie.edu deffectuer toute modication sur la zone fx.movie.edu. Malheureusement, il nest pas possible dy ajouter des restrictions bases sur les adresses IP des updaters. BIND 9 dispose dun mcanisme plus n, galement bas sur les signatures TSIG, grce la nouvelle directive de zone, update-policy. Elle permet de dnir les cls pouvant provoquer la mise jour denregistrements spciques. Cette directive ne sert en gnral que sur les serveurs primaires, puisque les serveurs-esclaves sont seulement censs faire suivre les mises jour. Le droit de mise jour est dni par le nom de la cl utilise pour signer la requte, et par le nom et le type des enregistrements concerns. Voici la syntaxe de update-policy :
(grant | deny) identit type_de_nom nom [types]
grant et deny permettent dautoriser ou dinterdire la mise jour spcique. identit fait rfrence au nom de la cl utilise pour signer la mise jour. type_de_nom prend lune des valeurs suivantes : name Le nom mettre jour doit tre le mme que celui indiqu dans le champ nom. subdomain Le nom mettre jour doit tre un sous-domaine ou situ dans un sous-domaine du domaine indiqu dans le champ nom (le nom du sous-domaine doit bien sr se trouver dans la zone). wildcard Le nom mettre jour doit correspondre lexpression indique dans le champ nom. self Le nom mettre jour doit tre le mme que celui indiqu dans le champ identit (pas nom), cest--dire lorsque le nom modier est le mme que celui de la cl
[12/01/08]
DNS et Bind
220
utilise pour signer la mise jour. Dans cette conguration, le champ nom nest pas pris en compte, mais il doit toutefois tre initialis (voir lexemple). Le champ nom doit bien sr tre du type dni par le champ type_de_nom. Ainsi, si le champ type_de_nom est wildcard, le champ nom doit contenir un mta-caractre. Le champ types est optionnel et peut dsigner tout type denregistrement de ressource, sauf NSEC (on peut prciser plusieurs types, spars par des espaces). ANY est un raccourci pour tout type sauf NSEC . Si types nest pas dni, tous les types sont concerns, sauf les types SOA, NS, RRSIG et NSEC.
Il y a une priorit dans les rgles de update-policy : cest la premire correspondance trouve qui est applique et non la plus spcique.
Ainsi, si la machine mummy.fx.movie.edu utilise une cl nomme mummy.fx.movie.edu pour signer ses mises jour dynamiques, on peut restreindre mummy.fx.movie.edu la seule mise jour de tous les enregistrements de ressource qui la concernent :
zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; update-policy { grant mummy.fx.movie.edu. self mummy.fx.movie.edu.; }; };
Plus gnralement, on peut autoriser tout client mettre jour son propre enregistrement dadresse :
zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; update-policy { grant *.fx.movie.edu. self fx.movie.edu. A; }; };
Nous pouvons autoriser notre serveur DHCP utiliser la cl dhcp-server.fx.movie.edu pour mettre jour tout enregistrement A, TXT ou PTR attach au domaine fx.movie.edu :
zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; update-policy { grant dhcp-server.fx.movie.edu. wildcard *.fx.movie.edu. A TXT PTR; }; };
[12/01/08]
DNS et Bind
221
et :
grant dhcp-server.fx.movie.edu. wildcard *.fx.movie.edu.
est que le premier autorise la cl dhcp-server.fx.movie.edu modier les enregistrements attachs fx.movie.edu (par exemple, les enregistrements NS de la zone), alors que le seconde ne le permet pas. Puisque le serveur DHCP na pas besoin de modier tout enregistrement attach au nom de la zone, la seconde forme est plus sre. Voici un exemple plus complexe : pour autoriser un client modier tous les enregistrements, sauf les enregistrements SRV, dont le nom correspond la cl, sans autoriser matrix.fx.movie.edu mettre jour les enregistrements SRV, A ou CNAME associs Active Directory (dans les sous-domaines _udp.fx.movie.edu, _tcp.fx.movie.edu, _sites.fx.movie.edu et _msdcs.fx.movie.edu), on peut utiliser :
zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; update-policy { grant matrix.fx.movie.edu. subdomain _udp.fx.movie.edu. SRV CNAME A; grant matrix.fx.movie.edu. subdomain _tcp.fx.movie.edu. SRV CNAME A; grant matrix.fx.movie.edu. subdomain _sites.fx.movie.edu. SRV CNAME A; grant matrix.fx.movie.edu. subdomain _msdcs.fx.movie.edu. SRV CNAME A; deny *.fx.movie.edu. self *.fx.movie.edu. SRV; grant *.fx.movie.edu. self *.fx.movie.edu. ANY; }; };
Puisque les rgles de update-policy sont values dans lordre de leur apparition, les clients ne peuvent pas mettre jour leur enregistrement SRV, mais peuvent modier les autres enregistrements les concernant. Si on veut utiliser les apports de la mise jour dynamique signe par TSIG, mais que les logiciels dont on dispose ne peuvent gnrer de requtes signes, on peut utiliser une version rcente de nsupdate (voir le Chapitre 11).
[12/01/08]
DNS et Bind
222
le serveur primaire pourrait survenir trs rapidement aprs une modication, ce qui viterait dattendre lexpiration de la priode de rafrachissement sur les esclaves4. La RFC 1996 propose un tel mcanisme, permettant un serveur primaire dannoncer une modication de zone. BIND 8 et 9 le mettent en uvre sous le nom de NOTIFY. Avec NOTIFY, lorsquun serveur primaire dtecte que le numro de srie dune zone a chang, il envoie une annonce tous les esclaves de cette zone. Il en dtermine la liste par la recherche des enregistrements NS de la zone et aprs avoir limin celui qui dsigne le serveur indiqu dans le champ MNAME de lenregistrement SOA de la zone ainsi que lhte local. Quand un serveur de noms remarque-t-il une modication ? Le redmarrage dun serveur primaire provoque systmatiquement lannonce ses esclaves du numro de srie de toutes ses zones, car le serveur primaire na aucun moyen de savoir si les chiers de zone ont t modis depuis son arrt. Le rechargement dune ou plusieurs zones avec un nouveau numro de srie provoque aussi une annonce aux serveurs-esclaves. Enn, une mise jour dynamique assortie dune mise jour du numro de srie provoque aussi une annonce de modication. Lannonce NOTIFY est identie par son code-opration dans len-tte de la requte. Pour la plupart des requtes, le code est QUERY. Les messages NOTIFY, que ce soit dannonce ou de rponse, utilisent le code NOTIFY. Un message NOTIFY est similaire la rponse une requte denregistrement SOA de zone ; il inclut lenregistrement SOA de la zone dont le numro de srie a chang et le bit signalant une rponse faisant autorit est positionn. Lorsquun esclave reoit un message NOTIFY en provenance de lun de ses serveursmatres, il renvoie une rponse NOTIFY qui signale au matre que lannonce a t reue et quil peut cesser de lenvoyer. Puis lesclave se comporte comme si la priode de rafrachissement venait de scouler : il demande lenregistrement SOA de la zone au serveurmatre. Si le numro de srie est suprieur celui connu par lesclave, lesclave transfre la zone. On voit bien que lors de la rception de la requte NOTIFY, lesclave ne transfre pas immdiatement la zone, mais lance dabord une requte de SOA. Cette vrication permet dliminer les fausses annonces NOTIFY, parfois mal intentionnes : les transferts de zone inutiles qui en dcoulent surchargent les rseaux et les serveurs, et provoquent des refus de service. La RFC 1996 indique quun esclave doit gnrer lui-mme des requtes NOTIFY en direction des autres serveurs faisant autorit sur une zone, sil dcide de transfrer la zone. De cette manire, les serveurs-esclaves incapables de communiquer directement avec le serveur-matre primaire et utilisant un autre esclave comme serveur-matre sont informs dune modication dans la zone. Toutefois, seuls BIND depuis la version 8.2.3 et toutes les versions 9 se comportent de cette manire. Les premires versions de BIND 8 ne propagent pas les annonces et les versions intermdiaires ne mettent en uvre cette fonction que lors dune conguration explicite.
4. En ralit, dans le cas dun rechargement de zone, le serveur de noms peut ne pas envoyer immdiatement les messages NOTIFY. Pour viter des rafales de requtes de rafrachissement en provenance des esclaves, les serveurs BIND rechargeant des zones attendent une fraction de chaque intervalle de rafrachissement de zone avant denvoyer un message NOTIFY pour cette zone.
[12/01/08]
DNS et Bind
223
La gure 10-1 rappelle la structure de notre rseau, o toystory.movie.edu est le serveurmatre primaire de la zone movie.edu et o wormhole.movie.edu et zardoz.movie.edu sont des serveurs-esclaves.
primaire de movie.edu
toystory.movie.edu
transferts de zone
wormhole.movie.edu
zardoz.movie.edu
La premire ligne est lannonce NOTIFY envoye par toystory.movie.edu, qui signale aux deux esclaves (2 NS) que le numro de srie de movie.edu est maintenant 2000010958. Les deux lignes suivantes montrent la conrmation de rception par les deux esclaves. Un serveur BIND 9 ne journaliserait que la ligne suivante :
Oct 14 22:56:34 toystory named[18764]: zone movie.edu/IN: sending notifies (serial 2000010958)
Voici maintenant un enchanement plus complexe de transfert de zone, dans lequel a est le serveur primaire dune zone ainsi que le serveur-matre de b, mais b est un serveurmatre pour c. De plus, b est connect deux rseaux ( gure 10-2).
[12/01/08]
DNS et Bind
224
matre-primaire
a
transferts de zone
b
transferts de zone
matre et esclave
c
esclave
On peut activer ou dsactiver NOTIFY pour une zone particulire, par exemple si on sait que tous les serveurs-esclaves de fx.movie.edu utilisent BIND 4 et ne comprennent donc pas les requtes NOTIFY. La structure zone suivante :
zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; notify no; };
[12/01/08]
DNS et Bind
225
empche lenvoi dannonces NOTIFY aux esclaves de fx.movie.edu. Un rglage spcique une zone est prioritaire sur un rglage global. Malheureusement, ni BIND 8, ni BIND 9 ne permettent deffectuer un rglage serveur par serveur. BIND 8 et 9 permettent dajouter des serveurs une liste dannonce, en plus de ceux apparaissant dans les enregistrements NS. On peut effectivement avoir plusieurs serveurs non ofciels (voir le Chapitre 8) que lon veut pourtant mettre rapidement jour. On peut aussi avoir un ancien esclave en BIND 8, matre dun autre esclave, et qui ncessite lenvoi de messages NOTIFY. La sous-structure also-notify de la structure zone permet dajouter des serveurs la liste :
zone "fx.movie.edu" { type slave; file "bak.fx.movie.edu"; notify yes; also-notify { 15.255.152.4; }; // esclave BIND 8, explicitement // configur pour envoyer des // annonces ses esclaves };
partir de BIND 8.2.2, on peut aussi utiliser also-notify dans la structure options. Ce rglage sappliquera toutes les zones pour lesquelles NOTIFY est valid (et qui nont pas leur propre sous-structure also-notify). partir de BIND 8.3.2 et 9.1.0, loption explicit provoque la suppression des annonces NOTIFY tous les serveurs sauf ceux indiqus dans la liste also-notify. Les deux dclarations suivantes indiquent au serveur de noms de nenvoyer des messages NOTIFY qu lesclave dadresse IP 192.249.249.20 :
options { also-notify { 192.249.249.20; }; notify explicit; };
On peut aussi utiliser allow-notify pour indiquer au serveur daccepter les annonces provenant dautres serveurs que le serveur-matre de la zone :
options { allow-notify { 192.249.249.17; }; // acceptation des messages NOTIFY en // provenance de 192.249.249.17 };
Utilise dans la structure options, allow-notify concerne toutes les zones. Utilise dans une structure zone, allow-notify rinitialise toutes les dnitions globales allow-notify pour cette zone.
[12/01/08]
DNS et Bind
226
Toutefois, imaginons une trs vaste zone contenant des milliers de postes dans Active Directory et dmarrant par DHCP donc mise jour dynamiquement une frquence , trs leve. Chaque client met lui-mme jour son enregistrement dadresse dans la zone et le contrleur de domaine met jour les enregistrements qui indiquent au client les services quil doit fournir (le Chapitre 17 donne plus de dtails sur Active Directory). chaque rception de mise jour sur le serveur primaire, le numro de srie de la zone est incrment et une annonce NOTIFY est envoye vers les serveurs-esclaves. chaque rception dune annonce NOTIFY, chaque serveur-esclave vrie le numro de srie de la zone sur son serveur-matre et, ventuellement, demande un transfert de zone. Plus la zone est vaste, plus le temps de transfert est lev,et plus les risques darrive dune mise jour durant ce temps est importante. Lesclave peut donc tre amen transfrer la zone en permanence ! Les serveurs passeront beaucoup de temps transfrer la totalit de la zone, alors que la modication apporte la zone est probablement minime (par exemple, ajout dun enregistrement dadresse). Le transfert incrmental de zone (Incremental zone transfer ou IXFR) rsout ce problme : lesclave indique au matre le numro de srie de la zone quil possde et demande au matre de ne lui transfrer que les modications entre cette version et la nouvelle version. Cette mthode permet de rduire considrablement la taille et la dure du transfert. IXFR est le type pour une requte de transfert incrmental de zone, au lieu de AXFR pour un transfert complet de zone. La requte contient lenregistrement SOA actuel de lesclave dans la section des serveurs faisant autorit. Lorsque le serveur-matre reoit une requte de transfert incrmental, il recherche la trace des modications apportes la zone entre la version dont dispose lesclave et celle dont dispose le matre. Si cette trace nexiste pas, le matre effectue un transfert de zone complet. Si elle existe, le matre nenvoie que les diffrences entre les deux versions.
Limites de IXFR
IXFR prsente plusieurs restrictions. Tout dabord, IXFR ne fonctionne pas bien avant BIND 8.2.3. Tous les serveurs BIND 9 mettent en uvre IXFR correctement et peuvent interagir avec BIND 8.2.3. Ensuite, IXFR ne fonctionne habituellement que lorsquon modie une zone par des mises jour dynamiques et non par des mises jour manuelles. En effet, les mises jour dynamiques conservent une trace des modications apportes une zone, ainsi que le numro de srie de zone associ chaque mise jour, ce qui correspond exactement aux besoins dun serveur-matre pour rpondre une requte IXFR en provenance dun serveur-esclave. Par contre, un serveur rechargeant la totalit dun chier de zone aurait calculer les diffrences entre cette zone et la version prcdente de la zone, comme sil effectuait un diff entre les versions. On peut donc en conclure que pour tirer au mieux parti de IXFR, il faut modier une zone par mise jour dynamique et ne jamais modier les chiers manuellement.
[12/01/08]
DNS et Bind
227
que lon peut maintenant (ou nouveau) modier manuellement les chiers de zone. Il faut toutefois sassurer que les chiers que lon modie contiennent bien la dernire version de la zone et que les mises jour dynamique sont refuses pendant que lon travaille sur les chiers (les mises jour dynamiques pourraient modier les donnes en mmoire et le chier en cours de modication ne reprsenterait plus ltat en mmoire). La directive ixfr-from-differences permet de mettre uvre cette fonction. On peut lutiliser indiffremment dans une structure options ou une structure zone. Lexemple cidessous dcrit la mise en uvre pour toutes les zones :
options { directory "/var/named"; ixfr-from-differences yes; };
La commande freeze de rndc gnre une nouvelle version du chier de zone et de suspendre les mises jour dynamique :
% rndc freeze zone [classe [vue]]
La commande rndc thaw permet de dgeler la zone en relisant le chier de zone et permettant les mises jour dynamiques :
% rndc thaw zone [classe [vue]]
Il faut viter de geler une zone trop longtemps, particulirement si lon craint de perdre des mises jour importantes.
Fichiers IXFR
Un serveur BIND 8 garde une trace des transferts IXFR dans un chier distinct de celui pour la mise jour dynamique. Tout comme ce dernier, le chier de journalisation IXFR est modi chaque fois quun serveur reoit une mise jour. Par contre, il nest jamais dtruit, bien que le serveur puisse tre congur pour le purger lorsquil dpasse une certaine taille. En BIND 8, le nom de ce chier est celui du chier de zone suivi du sufxe .ixfr. Un serveur BIND 9 utilise le chier de journalisation de la mise jour dynamique, ou chier journal, pour construire les rponses IXFR et pour maintenir lintgrit dune zone. Puisquun serveur primaire ne sait jamais quand il pourra avoir besoin dune information sur une modication spcique de la zone, il ne dtruit jamais le chier journal. Un esclave BIND 9 sauvegarde le chier journal mme sil reoit un transfert intgral de zone, car il peut servir de matre pour un ou plusieurs esclaves.
[12/01/08]
DNS et Bind
228
maintain-ixfr-base yes; };
Il faut ensuite indiquer aux esclaves denvoyer des requtes IXFR vers leur serveurmatre, laide de la sous-structure support-ixfr de la structure server :
server 192.249.249.3 { support-ixfr yes; };
Et cest tout, moins quon ne veuille modier le nom du chier de journalisation des transferts IXFR sur le matre, laide de la sous-structure ixfr-base de la structure zone :
zone "movie.edu" { type master; file "db.movie.edu"; ixfr-base "ixfr.movie.edu"; };
Enn, on peut indiquer au serveur de noms de limiter la taille du chier5 de journalisation IXFR une valeur prdtermine :
options { directory "/var/named"; maintain-ixfr-base yes; max-ixfr-log-size 1M; };
Lorsque la taille du chier de journalisation dpasse la limite de 100 kilo-octets, le serveur de noms le ramne sa limite. Cette valeur de dpassement de 100 kilo-octets permet dviter que le chier ne soit redimensionn chaque mise jour. En utilisant le format many-answers lors dun transfert de zone, les performances peuvent tre meilleures (voir les transferts de zone many-answers plus loin dans ce chapitre).
provide-ixfr peut aussi apparatre dans la structure options ; dans ce cas, il concerne tous les esclaves qui nont pas de directive provide-ixfr dans la structure server.
5.
Avant BIND 8.2.3, il faut indiquer la taille en octets, au lieu des abrviations telles que 1M , en raison dun bogue.
[12/01/08]
DNS et Bind
Redirection (forwarding)
229
Puisque les serveurs-matres BIND 9 effectuent des transferts de zone many-answers en standard, la conguration transfer-format est inutile. La sous-structure request-ixfr peut apparatre dans les structures options ou server. Si on a un mlange de serveurs capables de fonctionner en IXFR et de serveurs ne pouvant pas le faire, on peut adapter les requtes de transfert de zone partir des esclaves aux possibilits de leur matre :
options { directory "/var/named"; request-ixfr no; }; server 192.249.249.3 { request-ixfr yes; };
BIND 9 ne gre pas la sous-structure max-ixfr-log-size. Depuis sa version 9.3.0, BIND 9 gre la conguration de la taille maximale du chier de journalisation laide de la directive max-journal-size de la structure options.
Redirection ( forwarding)
Certaines connexions dissuadent denvoyer de grandes quantits de donnes lextrieur dun site, peut-tre en raison dun lien lent fort dlai, comme les liaisons par satellite. Dans ce cas, il est souhaitable de limiter le trac DNS vers lextrieur. BIND propose le mcanisme de la redirection (forwarding). La redirection sert galement lier la rsolution de noms un serveur particulier. Ainsi, si une seule machine dune entreprise dispose dune connectivit Internet et que cette machine hberge un serveur de noms, on peut congurer les autres serveurs, internes lentreprise, pour quils utilisent cette machine comme redirecteur des requtes de noms (cette architecture sera tudie en dtail lorsque nous prsenterons les pare-feu dans le Chapitre 11). En dsignant certains serveurs dun site comme tant ceux qui redirigent, la totalit des requtes concernant lextrieur leur est dabord transmise. Les redirecteurs ( forwarders) traitent la totalit des requtes vers lextrieur dun site et peuvent ainsi btir une mmoire cache riche en informations. La probabilit quun redirecteur puisse rpondre immdiatement une requte vers une zone distante partir des informations dans sa mmoire cache est leve, ce qui vite aux serveurs internes denvoyer des paquets en dehors du site. Il ny a rien de particulier faire pour transformer un serveur en redirecteur ; par contre, il faut modier les autres serveurs du site an quils transmettent leurs requtes aux redirecteurs. Le mode de fonctionnement dun serveur primaire ou dun serveur-esclave change lorsquil utilise un redirecteur. Si linformation recherche se trouve dans les informations sur lesquelles il fait autorit ou dans sa mmoire cache, il rpond directement ; sinon, le serveur envoie la requte au redirecteur et attend un court dlai avant de reprendre un fonctionnement habituel et de dmarrer le processus de recherche itrative. Ce mode est appel forward rst. Ici, ce qui est diffrent de lhabitude est que le serveur envoie une requte rcursive au redirecteur, en esprant obtenir une rponse
[12/01/08]
DNS et Bind
230
complte. Dans tous les autres cas, le serveur envoie des requtes itratives (non rcursives) vers les autres serveurs de noms. Voici la sous-structure redirecteurs de BIND 8 et 9, pour les serveurs de movie.edu. wormhole.movie.edu et toystory.movie.edu sont les redirecteurs du site. Cette directive forwarders est ajoute au chier de conguration de chaque serveur, sauf pour les forwarders eux-mmes :
options { forwarders { 192.249.249.1; 192.249.249.3; }; };
La ligne forwarders doit apparatre dans le chier de conguration. Lutilisation seule de la ligne forward-only ne suft pas. la cration dun serveur forward-only et avec un serveur antrieur BIND 8.2.3, il est intressant de citer plusieurs fois les adresses IP des forwarders :
options { forwarders { 192.249.249.1; 192.249.249.3; 192.249.249.1; 192.249.249.3; }; forward only; };
En effet, un serveur contacte une seule fois chaque redirecteur et attend quelques instants larrive dune rponse. En indiquant plusieurs fois chaque redirecteur, le serveur peut ritrer ses requtes vers les redirecteurs, ce qui augmente avantageusement le temps dattente de rponse en provenance des redirecteurs.
[12/01/08]
DNS et Bind
Redirection (forwarding)
Notre exprience nous a montr que le mode redirecteur simple mne en ralit une rsolution de noms plus prvisible que le mode forward-rst (le mode par dfaut). En effet, en cas de problme, le dlai dattente vers les redirecteurs est si long que le serveur dmarre entre temps une rsolution itrative et que le resolver qui a gnr la requte a dj abandonn ou est sur le point dabandonner sa requte. Il en rsulte que le resolver obtient des rsultats incohrents : certaines requtes, dont la rsolution est rapide, mnent une rponse et dautres naboutissent jamais.
231
Quel est lintrt dagir ainsi, plutt que de laisser le serveur suivre la dlgation des serveurs de com vers ceux de pixar.com ? Imaginons que lon dispose dune liaison spcialise vers Pixar et que lon sache quil faut utiliser un ensemble spcial de serveurs, visibles uniquement de notre rseau, pour rsoudre les noms de pixar.com. Bien que les rgles de redirection soient dnies dans la structure zone, elles sappliquent tous les noms se terminant par le domaine indiqu. Ainsi, que le nom recherch, foo.bar.pixar.com, soit dans la zone pixar.com ou non, la rgle sapplique parce que ce nom se termine par pixar.com (ce qui revient dire que la rgle sapplique parce que le nom est dans le domaine pixar.com). On peut aussi dnir des rgles qui fonctionnent en sens inverse du prcdent : elles permettent de dnir des requtes spciques qui ne seront pas rediriges. Elles ne peuvent sappliquer qu des serveurs qui ont des forwarders dnis dans la structure options, ce qui sapplique normalement toutes les requtes. Cela se fait dans une structure zone qui nest pas du type forward. Il sagit de zones standard (master, slave ou stub) avec une sous-structure forwarders. Pour ne pas prendre en compte la redirection congure dans la structure options, nous dnissons une liste vide de redirecteurs :
options { directory "/var/named";
[12/01/08]
DNS et Bind
232
}; zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; forwarders {}; };
Mais pourquoi dsactiver la redirection dans cette situation ? Souvenons-nous que les rgles de redirection sappliquent toutes les requtes de noms se terminant par le nom de la zone. Ainsi, cette rgle sapplique seulement toute requte de nom concernant les sous-domaines de movie.edu, comme fx.movie.edu. Sans la rgle de redirection, ce serveur aurait retransmis une requte concernant matrix.fx.movie.edu vers les serveurs 192.249.249.3 et 192.249.249.1. Avec la rgle, le serveur utilise les enregistrements NS contenus dans la zone movie.edu et interroge directement les serveurs de fx.movie.edu. La redirection par zone est fondamentale dans les congurations avec pare-feu (voir le Chapitre 11).
Slection de redirecteur
Avec BIND 8 depuis la version 8.2.3 ou BIND 9 depuis la version 9.3.0, il nest pas utile de nommer plusieurs fois les redirecteurs. En effet, ces versions ninterrogent pas ncessairement les redirecteurs dans lordre dans lequel ils apparaissent ; elles interprtent les serveurs de la liste comme des redirecteurs candidats et en choisissent un en fonction du temps daller-retour, dtermin par le temps pass attendre une rponse lors de la prcdente requte. Cela est un rel bnce en cas de dfaillance dun redirecteur. Les anciennes versions de BIND continuaient interroger les redirecteurs en panne et attendaient avant dinterroger le suivant dans la liste. Les nouvelles versions se rendent rapidement compte que le redirecteur ne rpond pas et, par la suite, en interrogeront un autre en premier.
Vues
BIND 9 introduit les vues (views), mcanisme trs utile dans les environnements avec pare-feu. Les vues permettent un serveur de noms de prsenter un certain aspect un ensemble dhtes et un autre aspect un autre ensemble dhtes. Cela est particulirement pratique si le serveur reoit des requtes aussi bien des htes internes que des htes sur lInternet (cette architecture sera dcrite au Chapitre 11). Si on ne congure pas de vue, BIND 9 en cre une unique automatiquement, quil montre tout hte linterrogeant. Pour crer explicitement une vue, il faut utiliser la structure view, dont largument est le nom de la vue :
view "internal" { };
[12/01/08]
DNS et Bind
Vues
233
Il est bon que le nom dune vue soit reprsentatif de sa fonction. Il est conseill de mettre son nom entre guillemets, an dviter des conits potentiels avec les mots rservs de BIND. La structure view ne peut apparatre quaprs la structure options, mais pas ncessairement immdiatement aprs. La sous-structure match-clients de view permet de dnir les clients concerns par une vue. Son argument est une liste dadresses. Si on ne dnit aucun groupe dhtes laide de match-clients, la vue sadresse tous les clients. Construisons une vue de la zone fx.movie.edu uniquement visible du Dpartement des Effets Spciaux. Pour cela, nous pouvons crer une vue accessible par les htes de ce sous-rseau uniquement :
view "internal" { match-clients { 192.253.254/24; }; };
LACL doit tre dni lextrieur de view. On peut aussi dnir qui peut voir une vue laide de la structure match-destinations de la structure view, qui, comme match-clients, reoit une liste dadresses comme argument. match-destinations est adapte aux serveurs disposant de plusieurs adresses IP : des clients interrogeant lune des adresses IP auront accs une certaine vue, ceux interrogeant une autre des adresses IP accderont une autre vue. match-clients et match-destinations peuvent tre utilises en commun an de slectionner les requtes provenant dun certain client et destines une adresse particulire. Il existe mme une directive boolenne match-recursive-only qui permet de distinguer les requtes rcursives des requtes itratives. On peut quasiment tout faire lintrieur dune structure view (sauf dnir une directive acl) : dnir une zone avec la structure zone, dcrire un serveur de noms distant avec la structure server ou congurer les cls TSIG avec la structure key. On peut utiliser la plupart des sous-structures de options, en les dnissant toutefois directement dans la structure view :
acl "fx-subnet" { 192.253.254/24; }; view "internal" { match-clients { "fx-subnet"; }; recursion yes; // active la rcursivit pour cette vue (elle // est globalement dsactive dans la structure options) };
Toute option de conguration qui apparat dans view est prioritaire sur une option globale de mme nom (cest--dire une option dnie dans la structure options) pour tout hte qui correspond match-clients.
[12/01/08]
DNS et Bind
234
La liste complte des directives utilisables dans une structure view en fonction de la version de BIND 9 utilise (il y a des diffrences entre les versions) apparat dans le chier doc/misc/options de la distribution de BIND. Voici maintenant le chier named.conf complet pour le Laboratoire des Effets Spciaux, ce qui montre la puissance des vues :
options { directory "/var/named"; }; acl "fx-subnet" { 192.253.254/24; }; view "interne" { // aspect interne des zones match-clients { "fx-subnet"; }; zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; }; zone "254.253.192.in-addr.arpa" { type master; file "db.192.253.254"; // fichier de zone vu de lintrieur }; }; view "externe" { // aspect des zones prsentes au reste du monde match-clients { any; }; // Implicite. recursion no; // En dehors du sous-rseau, il ne // devrait pas y avoir de rcursivit. zone "fx.movie.edu" { type master; file "db.fx.movie.edu.external"; // fichier de zone vu de lextrieur }; zone "254.253.192.in-addr.arpa" { type master; file "db.192.253.254.external"; }; };
Chaque vue contient une dnition de zone pour fx.movie.edu et 254.253.192.inaddr.arpa, mais le contenu des chiers de zone est diffrent entre les vues interne et externe. Cela permet de prsenter au monde un aspect diffrent de celui expos en interne. Lordre des structures view est important car la premire vue correspondant un hte est celle qui lui sera prsent. Si la vue externe tait indique en premier dans la liste, elle occulterait la vue interne, car la vue externe correspond toutes les adresses.
[12/01/08]
DNS et Bind
235
Un dernier point (avant de retrouver nouveau les vues au Chapitre 11) : si on dnit ne serait-ce quune vue, toutes les structures zone doivent apparatre dans des vues explicites.
puis :
192.168.1.2 192.168.1.3 192.168.1.1
Cette fonction est particulirement utile si on a plusieurs ressources quivalentes, telles que des serveurs FTP en miroir, des serveurs web ou des serveurs de terminaux, et quon veut rpartir la charge entre eux. On xe des noms correspondant au groupe de ressources, on congure les clients pour quils accdent ce nom, et le serveur de noms rpartit les connexions entre les diffrentes adresses IP indiques6. Avec BIND 8 et 9, les serveurs font tourner les adresses lorsquun nom a plusieurs enregistrements A (en fait, le serveur permute tous les types lorsquun nom correspond plusieurs valeurs7). Les enregistrements :
foo.bar.baz. foo.bar.baz. foo.bar.baz. 60 60 60 IN IN IN A A A 192.168.1.1 192.168.1.2 192.168.1.3
sur des serveurs BIND 8 et 9, produisent le mme rsultat que les enregistrements dadresse permuts dun serveurs 4.8.3 modi. La documentation de BIND appelle ce mcanisme un tourniquet (round robin). Comme le montre cet exemple, il est bon de rduire le TTL. De cette manire, si les adresses sont stockes dans la mmoire cache dun serveur intermdiaire qui ne pratique pas le round robin, elles disparatront rapidement de la mmoire. Si le serveur intermdiaire recherche nouveau le nom, le serveur faisant autorit sur les adresses peut nouveau leur appliquer un round robin. Il sagit de rpartition de charge, et non dquilibrage, puisque les serveurs renvoient les adresses selon un schma totalement dterministe, indpendamment de la charge ou
6.
7.
NdR : Comme nous lavons vu plus haut, certains resolvers rordonnent les adresses reues en fonction de leur rseau an de privilgier les adresses les plus proches. Ces resolvers rendent la permutation inefcace. Avant BIND 9, les enregistrements PTR ne sont pas permuts. BIND 9 permute tous les types.
[12/01/08]
DNS et Bind
236
de la capacit des serveurs traitant la requte. Dans lexemple, le serveur dadresse 192.168.1.3 pourrait tre un 486DX33 sous Linux et les autres des serveurs HP9000 Superdomes ; malgr cela, le systme Linux recevrait un tiers des requtes. Ce comportement ne changerait pas, mme en citant plusieurs fois ladresse dun serveur grande capacit, car BIND limine les enregistrements dupliqus.
CNAME multiples
Du temps de BIND 4, certains administrateurs craient un tourniquet avec plusieurs enregistrements CNAME plutt quavec plusieurs enregistrements dadresse :
foo1.bar.baz. foo2.bar.baz. foo3.bar.baz. foo.bar.baz. foo.bar.baz. foo.bar.baz. 60 60 60 60 60 60 IN IN IN IN IN IN A 192.168.1.1 A 192.168.1.2 A 192.168.1.3 CNAME foo1.bar.baz. CNAME foo2.bar.baz. CNAME foo3.bar.baz.
Cela paratra bizarre ceux qui nous entendent rabcher quil est dangereux dassocier nimporte quoi des enregistrements CNAME. Mais les serveurs de noms BIND 4 ne reconnaissent pas cette conguration comme une erreur (ce quelle est pourtant) et renvoient simplement les enregistrements CNAME pour foo.bar.baz en appliquant un tourniquet sur lordre8. Les serveurs de noms BIND 8 sont plus vigilants et nludent pas cette erreur. On peut toutefois congurer BIND 8 explicitement pour quil accepte des enregistrements CNAME multiples pour un seul nom :
options { multiple-cnames yes; };
Notez que vous ne devriez jamais utiliser cette directive. Les serveurs de noms BIND 9 ne relvent pas lerreur de CNAME multiples avant la version 9.1.0. BIND 9.1.0 dtecte le problme mais noffre pas la possibilit dattribuer plusieurs enregistrements CNAME laide de loption multiple-cnames. Nous pensons que cest la bonne approche : lassociation de plusieurs enregistrements CNAME un nom unique est une violation des normes du DNS (en particulier de la RFC 2181). Ne le faites pas.
Sous-structure rrset-order
Parfois, on prfrerait quun serveur de noms nutilise pas de tourniquet. Ainsi, si un serveur web sert de secours, le serveur de noms doit toujours renvoyer son adresse aprs celle du serveur web principal, ce qui nest pas possible cause du tourniquet. Depuis BIND 8.2 et partir de la version 9.1.0 pour BIND 9, on peut dsactiver le tourniquet pour certains noms ou types denregistrement. Ainsi, pour renvoyer toujours dans le mme ordre les adresses de www.movie.edu, on peut utiliser la directive rrsetorder :
8.
La bonne manire pour raliser cette conguration serait dassocier les adresses de foo1.bar.baz, foo2.bar.baz et foo3.bar.baz directement au nom foo.bar.baz.
[12/01/08]
DNS et Bind
237
En diminuant le TTL sur les adresses de www.movie.edu, un serveur de noms ne garderait pas longtemps les adresses en mmoire cache et participerait rapidement au tourniquet. Les rglages class, type et name dterminent les enregistrements auxquels sapplique lordre. En standard, la classe est IN, le type ANY et le nom *, ce qui revient dire que tous les enregistrements sont concerns. La structure :
options { rrset-order { order random; }; };
indique que le serveur doit renvoyer les enregistrements dans un ordre alatoire. La dnition du nom peut contenir un mta-caractre dans le membre le plus gauche :
options { rrset-order { type A name "*.movie.edu" order cyclic; }; };
On ne peut dnir quune seule sous-structure rrset-order, mais on peut y xer plusieurs directives dordre. Le serveur applique la premire directive possible. On peut dnir trois types dordre avec rrset-order : fixed Les enregistrements sont toujours renvoys dans le mme ordre. random Les enregistrements sont renvoys dans un ordre alatoire. cyclic Les enregistrements sont renvoys dans un ordre cyclique (tourniquet). Malheureusement, BIND 9.3.2 ne prend pas encore totalement en compte lordre xed9. La valeur par dfaut est :
options { rrset-order { class IN type ANY name "*" order cyclic; }; };
9.
Lordre xed ne fonctionne que si les enregistrements sont dclars dans lordre de DNSSEC (voir le Chapitre 11).
[12/01/08]
DNS et Bind
238
La conguration par rrset-order est encore loin dtre une solution complte car, malheureusement, les mmoires caches des resolvers et des serveurs peuvent interfrer avec cette opration. Les enregistrements SRV prsentent une solution long terme (voir le Chapitre 17).
La seule valeur de cette liste na quun seul lment. Les adresses appartenant au rseau 192.249.249/24 sont classes en premier dans les rponses aux demandeurs qui sont euxmmes sur ce rseau. Ainsi, si le client dadresse 192.249.249.101 recherche un nom
[12/01/08]
DNS et Bind
239
correspondant deux adresses, 192.249.249.87 et 192.253.253.87, le serveur de noms placera 192.249.249.87 au dbut de la rponse. Si une valeur a deux lments, le premier est utilis pour tester ladresse IP de lexpditeur de la requte. Si cette dernire correspond la liste, le serveur de noms classe les adresses dans la rponse, de manire ce que toute adresse en correspondance avec le second lment apparaisse en premier dans la rponse. Le second lment peut tre en ralit une liste dadresses comprenant plusieurs valeurs. Dans ce cas, la premire adresse ajoute la rponse est la premire qui apparat dans la liste. Voici un exemple :
options { sortlist { { 192.249.249/24; { 192.249.249/24; 192.253.253/24; }; }; }; };
Cette liste concerne les demandeurs du rseau 192.249.249/24. Les adresses appartenant au rseau 192.249.249/24 sont classes en premier dans les rponses aux demandeurs qui sont eux-mmes sur ce rseau. Elles sont suivies des adresses appartenant au rseau 192.253.253/24. Les lments de la liste peuvent aussi tre des sous-rseaux ou mme des htes :
options { sortlist { { 15.1.200/21; { 15.1.200/21; 15/8; }; }; }; };
// si le demandeur est sur 15.1.200/21, alors // privilgier les adresses de ce sous-rseau // ou du moins celles du rseau 15/8
[12/01/08]
DNS et Bind
240
La structure topology permet dintroduire une nouvelle notion dans le choix du serveur de noms interroger. Cette structure permet de favoriser les serveurs dun rseau spcique. topology reoit en paramtre une liste ordonne dadresses, reprsentant des rseaux, selon le privilge souhait (du plus fort au plus faible). La structure :
topology { 15/8; 172.88/16; };
indique au serveur local de prfrer les serveurs du rseau 15/8 tous les autres, puis les serveurs du rseau 172.88/16 tous les serveurs autres que ceux du rseau 15/8. Si un serveur a le choix entre un serveur sur le rseau 15/8, un serveur sur le rseau 172.88/16 et un serveur sur le rseau 192.168.1/24, et que ces trois serveurs sont dans la mme classe de RTT, il choisira dinterroger le serveur situ sur le rseau 15/8. On peut galement inverser les valeurs de manire pnaliser les serveurs dun certain rseau. Plus la correspondance avec une valeur inverse apparat tt dans la liste, plus la pnalit est grande. Ce mcanisme vitera aussi quun serveur local nenvoie des requtes vers les serveurs distants dun rseau particulirement sollicit.
De cette manire, le serveur traite une requte rcursive comme si elle ne ltait pas. En conjonction avec loption recursion no, loption fetch-glue vite quun serveur ne cre une mmoire cache :
10. Un serveur de la racine ne reoit habituellement pas de requte rcursive, moins quun administrateur nait congur son serveur pour utiliser le serveur de la racine comme forwarder, quun administrateur nait congur le resolver de son hte pour quil utilise un serveur de la racine comme serveur ou quun utilisateur nait interrog le serveur de la racine laide de nslookup ou dig. Tout cela arrive bien plus souvent que lon ne pourrait imaginer.
[12/01/08]
DNS et Bind
241
Cette option indique au serveur de ne pas rechercher les informations manquantes lorsquil construit une rponse. Les serveurs BIND 9 ne le faisant jamais, la sous-structure fetch-glue est obsolte en BIND 9. Si on choisit dinstaller un serveur itratif, il ne faut pas le citer dans les chiers resolv.conf. Bien quon puisse fabriquer un serveur itratif, aucune option ne permet de congurer un resolver pour quil puisse travailler avec un serveur itratif11. Si un serveur doit continuer servir un ou plusieurs resolvers, on peut utiliser la sous-structure allowrecursion, disponible depuis BIND 8.2.1. allow-recursion est suivie dune liste dadresses ; tous les htes rpertoris peuvent envoyer des requtes rcursives, mais celles-ci sont traites comme si elles ne ltaient pas :
options { allow-recursion { 192.253.254/24; }; // seuls les resolvers du rseau FX // peuvent envoyer des requtes rcursives };
La valeur par dfaut de allow-recursion est de permettre la rcursivit toutes les adresses IP . Il ne faut pas citer un serveur itratif comme redirecteur. Lorsquun serveur utilise un autre serveur comme redirecteur, il lui transmet sa requte sous forme rcursive. Sur le redirecteur, on peut utiliser allow-recursion pour nautoriser que certains serveurs rediriger des requtes. On peut dclarer un serveur itratif comme lun des serveurs faisant autorit sur une zone (on peut demander un serveur-parent de rpondre aux requtes concernant une zone en faisant rfrence ce serveur). Cela fonctionne car les serveurs senvoient des requtes itratives entre eux.
Il faut bien sr indiquer la bonne adresse IP pas celle de lexemple. , Si le serveur dsign est le seul de sa zone, il devient impossible de rechercher des noms dans cette zone. Heureusement, il y a dautres serveurs dans cette zone pour renvoyer des informations correctes.
11. En gnral, des programmes construits pour envoyer des requtes itratives ou qui peuvent tre congurs pour envoyer de telles requtes, tels que nslookup ou dig, peuvent encore fonctionner.
[12/01/08]
DNS et Bind
242
Pour interdire linterrogation dun serveur, on peut aussi utiliser une liste noire (blackhole). Un serveur ninterrogera pas les serveurs de la liste et ne rpondra pas leurs requtes12. blackhole est une sous-structure de options dont largument est une liste dadresses :
options { /* Ne pas perdre de temps rpondre aux requtes en provenance des rseaux privs dfinis dans la RFC 1918 */ blackhole { 10/8; 172.16/12; 192.168/16; }; };
Cela vite au serveur de tenter de rpondre des requtes provenant des adresses prives dnies dans la RFC 1918. LInternet ne route pas ces adresses et une tentative de rponse vers ces adresses serait une perte de temps CPU et de bande passante. La sous-structure blackhole est apparue avec la version 8.2 de BIND 8 et la version 9.1.0 de BIND 9.
Paramtrer le systme
Les valeurs de conguration par dfaut conviennent la plupart des sites, mais il peut savrer ncessaire dafner certains rglages. Cette section dcrit tous les paramtres permettant dajuster le fonctionnement dun serveur de noms.
Transferts de zone
Les transferts de zone peuvent normment surcharger les serveurs. BIND propose donc des mcanismes permettant de limiter la charge lie aux transferts de zone, induite par les esclaves sur leurs matres.
BIND 9 permet aussi de limiter les transferts serveur par serveur. Pour cela, il faut utiliser la sous-structure transfers lintrieur des structures server pour lesquelles on veut mettre en uvre une limitation :
12. Alors que les demandeurs qui apparaissent dans une liste allow-query reoivent un message leur indiquant que leur requte a t refuse, ceux qui apparaissent dans une liste noire ne reoivent rien du tout.
[12/01/08]
DNS et Bind
Paramtrer le systme
server 192.168.1.2 { transfers 2; };
243
Ce rglage est prpondrant sur toutes les limitations globales effectues dans la structure options. La limite par dfaut est de deux transferts simultans par serveur-matre, ce qui peut paratre faible. Dtaillons le principe en prenant lexemple dun serveur qui a besoin de transfrer quatre zones partir dun serveur-matre unique. Le serveur commence transfrer les deux premires zones. Ds quil a termin de transfrer lune delles, il commence le transfert de la troisime. Ds quil ny a plus quun transfert en cours, il passe enn celui de la quatrime zone. Le rsultat nal est le mme quavant la mise en place de la limitation, mais le travail est mieux rparti. Il est possible daugmenter cette limite, si on constate que la synchronisation de la totalit des zones avec le serveur-matre est trop longue cause de lenchanement en squence et pas de la lenteur du rseau ou des serveurs. Ce besoin napparat probablement que dans le cas de serveurs grant plusieurs centaines ou milliers de zones. Avant daugmenter la limite, il faut sassurer que le serveur-matre et le rseau peuvent absorber laugmentation de charge due aux transferts simultans.
Si un hte ou un rseau ne peut pas supporter 10 transferts simultans, il faut diminuer la limite. Si le serveur gre plusieurs centaines ou milliers de zones et que lhte et le rseau peuvent supporter la charge, on peut augmenter la limite. Dans ce cas, il peut aussi savrer ncessaire daugmenter la limitation par serveur (par exemple, un serveur charge des zones partir de quatre serveurs distants seulement ; seulement huit transferts peuvent prendre place simultanment ; la seule augmentation de la limite totale naurait ici aucun effet).
[12/01/08]
DNS et Bind
244
options { transfers-out 10; };
La limite de dure peut tre xe zone par zone en plaant max-transfer-time-in dans une structure zone. Par exemple, si le transfert de la zone rinkydink.com prend toujours trois heures en raison de la liaison trs lente mais que le transfert des autres zones ne pose aucun problme et accepterait une limite dune heure, on peut utiliser :
options { max-transfer-time-in 60; }; zone "rinkydink.com" { type slave; file "bak.rinkydink.com"; masters { 192.168.1.2; }; max-transfer-time-in 180; };
BIND 9 propose aussi la sous-structure max-transfer-time-out, utilisable aux mmes endroits (cest--dire soit dans la structure options soit dans la structure zone), et qui gre la dure dun transfert de zone en sortie (cest--dire vers un esclave). Comme pour maxtransfer-time-in, la valeur par dfaut est de 120 minutes. BIND 9 dispose mme dune limitation de la dure dinactivit lors dun transfert de zone, cest--dire du temps coul depuis que les dernires informations dun transfert de zone ont t changes. Les deux sous-structures, max-transfer-idle-in et max-transferidle-out, grent respectivement les dures de suspension dun transfert entrant et dun transfert sortant. Comme les sous-structures prcdentes, elles peuvent tre utilises dans la structure globale options ou dans une structure zone. Leur valeur par dfaut est xe 60 minutes.
[12/01/08]
DNS et Bind
Paramtrer le systme
245
tel serveur-esclave doit absolument consulter la section Limiter les requtes de SOA (page 248) car il peut savrer ncessaire dajuster le nombre de requtes simultanes de SOA). lautre extrme, un administrateur inexpriment peut xer un intervalle de rafrachissement si grand que des incohrences prolonges peuvent apparatre entre le serveur primaire dune zone et les serveurs-esclaves. Depuis BIND 9.1.0, on peut encadrer lintervalle de rafrachissement avec max-refreshtime et min-refresh-time pour lensemble des zones gres (structure options) ou pour une zone spcique (structure zone). La valeur est exprime en secondes :
options { max-refresh-time 86400; min-refresh-time 1800; }; // rafrachissement maxi d1 jour // et mini de 30 minutes
Depuis BIND 9.1.0, on peut aussi limiter lintervalle de nouvel essai avec les sous-structures max-retry-time et min-retry-time, dont la syntaxe est la mme.
modie le comportement par dfaut pour la totalit des esclaves, moins quune spcicit napparaisse dans une structure server :
server 192.168.1.2 { transfer-format one-answer; };
soit xer le format global de transfert many-answers (voire ne rien faire avec BIND
9) si la plupart des esclaves utilisent BIND 8, BIND 9 ou le serveur DNS de Microsoft, qui comprend lui aussi ce format ;
[12/01/08]
DNS et Bind
246
soit xer le format global de transfert one-answer si la plupart des esclaves utilisent
BIND 4. Il faut ensuite utiliser transfer-format au niveau des structures server pour modier le rglage global pour un serveur spcique. Noublions pas que si on utilise BIND 9, il faut explicitement ajouter une structure server pour chaque serveur-esclave BIND 4, an de ramener le format de transfert oneanswer.
taille est une valeur entire exprime, en standard, en octets. On peut indiquer une autre unit en ajoutant un caractre la valeur : k (kilo-octet), m (mga-octet) ou g (gigaoctet). Par exemple, 64m reprsente 64 mga-octets.
Tous les systmes dexploitation ne permettent pas cette augmentation pour des processus spciques. Dans ce cas, si on tente malgr tout une telle augmentation, le serveur de noms envoie un message vers syslog au niveau LOG_WARNING pour le signaler.
taille a la mme forme que pour datasize. Cela ne fonctionne quavec les systmes dexploitation acceptant la modication de limite de taille de pile par un processus.
[12/01/08]
DNS et Bind
Paramtrer le systme
247
ment, si named na pas la possibilit de gnrer un chier core complet en raison dune limitation impose par le systme dexploitation, on peut ventuellement augmenter la limite. La syntaxe de coresize est :
options { coresize taille; };
Cela ne fonctionne quavec les systmes dexploitation acceptant la modication de limite de taille de chier core gnr par un processus et ne fonctionne pas avant la version 9.1.0 de BIND 9.
Si le systme dexploitation permet de modier la limite processus par processus, on peut augmenter la limite en utilisant la sous-structure les de BIND :
options { files nombre; };
La valeur par dfaut nest pas limite (unlimited), ce qui signie que le serveur ne xe aucune limite sur le nombre de chiers ouverts simultanment ; dans ce cas, cest la limite impose par le systme dexploitation qui agira. Cette limitation fonctionne pas partir de la version 9.1.0 de BIND 9.
13. Le Chapitre 14 dcrit de meilleures solutions au problme du dpassement de la limite sur le nombre de chiers ouverts.
[12/01/08]
DNS et Bind
248
indique que le serveur refuse des requtes rcursives ; dans ce cas, on peut augmenter la limite. Inversement, si le serveur a du mal suivre le rythme des requtes rcursives, la limite peut tre diminue. On peut aussi limiter le nombre de connexions TCP concurrentes que peut traiter le serveur (pour les transferts de zone et les requtes achemines par TCP) avec la sousstructure tcp-clients. Les connexions TCP consomment beaucoup plus de ressources que le fonctionnement en UDP en raison de la conservation dtat en TCP La valeur stan, . dard est xe 100.
serial-queries est obsolte en BIND 9. BIND 9 limite le rythme de requtes de numro de srie sortantes (20 par seconde) et non pas le nombre de requtes simultanes. Cette limite peut tre ajuste laide de la directive serial-query-rate, dont largument est un nombre entier (nombre de requtes par seconde).
Oprations priodiques
Les serveurs de noms BIND effectuent priodiquement des oprations automatiques dentretien, telles que le rafrachissement des zones sur un esclave. BIND 8 et 9 permettent de contrler lactivit et la priodicit de ces oprations.
Priodicit de purge
Tous les serveurs suppriment passivement les donnes primes de leur mmoire cache. Avant quun serveur ne renvoie un enregistrement un demandeur, il vrie le TTL de lenregistrement pour voir si ce dernier est encore valable. Si ce nest pas le cas, le serveur lance un processus de rsolution pour rechercher une information plus jour. Toutefois, le fait de sappuyer entirement sur ce mcanisme peut conduire une mmoire cache inutilement grande. En effet, un serveur peut conserver de trs nombreux enregistrements prims dans sa mmoire cache. Pour rgler ce problme, BIND parcourt priodiquement la mmoire cache et supprime les enregistrements prims, ce qui permet de minimiser la taille de mmoire utilise par le cache. Par contre, le processus de purge utilise du temps-machine, ce qui peut tre gnant sur les serveurs trs lents ou trs chargs. Par dfaut, la priodicit de purge est xe 60 minutes. On peut la modier laide de la directive cleaning-interval de la structure options. Par exemple :
options { cleaning-interval 120; };
[12/01/08]
DNS et Bind
Paramtrer le systme
249
Cette option xe la priodicit de purge 120 minutes. Pour dsactiver le processus de purge, il suft de xer une priodicit 0.
Par contre, si un hte dmarre ou arrte des interfaces plus souvent quune fois par heure, on peut rduire lintervalle de surveillance.
La valeur par dfaut est de 60 minutes et une valeur 0 dsactive la gnration des statistiques. BIND 9 ne gnrant pas de statistiques vers syslog, il ne dispose pas doptions de rglage concernant les statistiques.
TTL
En interne, BIND limite le TTL des enregistrements en mmoire cache des valeurs raisonnables. BIND 8 et 9 permettent de rgler ces limites. Depuis BIND 8.2, et avec toutes les versions de BIND 9, on peut limiter le TTL dune rponse ngative avec la sous-structure max-ncache-ttl de options. Pour ceux qui passent BIND 8.2, il sagit dun garde-fou qui met en uvre le nouveau mcanisme de mmoire cache ngative (RFC 2308, dcrit au Chapitre 4). Cette version de BIND gre en mmoire cache les rponses ngatives en utilisant le dernier champ de lenregistrement SOA. Or, de nombreux administrateurs utilisent encore ce champ pour xer la valeur par dfaut du TTL de leur zone, valeur en gnral trop grande pour grer lexpiration dune rponse ngative. Aussi, un administrateur prudent peut-il utiliser la sousstructure :
options { max-ncache-ttl 3600; // 1 heure };
[12/01/08]
DNS et Bind
250
pour limiter une heure le TTL dune rponse ngative. La valeur standard est de 10800 secondes (3 heures). Sans cette prcaution, il est possible que quelquun qui recherche un nouvel enregistrement, obtienne une rponse ngative (peut-tre parce que ce nouvel enregistrement nest pas encore parvenu tous les esclaves) et que son serveur place trop longtemps cette rponse ngative dans sa mmoire cache, empchant ainsi la rsolution de nom correspondante. BIND 9 ajoute la possibilit de limiter le TTL sur les enregistrements placs en mmoire cache avec la sous-structure max-cache-ttl. La valeur standard est dune semaine. BIND 8 offre la mme limitation, mais elle nest pas rglable. Enn, il reste le lame TTL, qui nest pas proprement parler un TTL. Cette valeur reprsente la dure pendant laquelle un serveur se souvient quun serveur distant ne fait pas autorit sur une zone qui lui est dlgue. Cela vite au serveur de perdre du temps et des ressources en interrogeant un serveur sur des donnes dont il ignore tout. BIND 8 depuis la version 8.2 et BIND 9 depuis la version 9.1.0 permettent dajuster cette valeur avec la sous-structure lame-ttl de options. La valeur Sil est possible dannuler cette mmorisation avec une valeur nulle, cela nest pas trs conseill.
Compatibilit
Cette section traite des rglages relatifs la compatibilit dun serveur de noms avec des resolvers ou dautres serveurs de noms. La sous-structure rfc2308-type1 xe le format des rponses ngatives envoyes par un serveur. En standard, BIND 8 et 9 placent uniquement lenregistrement SOA dans une rponse ngative. Il est aussi possible dinclure les enregistrements NS de la zone, mais certains anciens serveurs interprtent cette rponse comme une rfrence dautres serveurs. Si malgr tout on souhaite envoyer ces enregistrements NS (mais nous nen voyons vraiment pas lintrt), on peut utiliser la dclaration :
options { rfc2308-type1 yes; };
rfc2308-type1 a t introduit avec BIND 8.2 mais nest pas gr par BIND 9. Certains anciens serveurs peuvent avoir des problmes lors de la rception de rponses ngatives. Avant linvention de la mise en mmoire cache des rponses ngatives, toutes les rponses ngatives taient considres comme faisant autorit. Aussi certains dveloppeurs avaient-ils ajout un test aux serveurs, pour naccepter que les rponses ngatives faisant autorit. Depuis linstitution de la mmoire cache ngative, des rponses ngatives peuvent ne pas faire autorit, ce qui pose problme avec le test effectu sur certains anciens serveurs. La sous-structure auth-nxdomain de options permet un serveur de dclarer quune rponse ngative issue de sa mmoire cache fait en ralit autorit, cest--dire exactement ce quattend un ancien serveur modi. En standard, auth-nxdomain est actif (initialis yes) dans BIND 8 ; cest linverse avec BIND 9. Lorsque des dveloppeurs ont port BIND 8.2.2 sur Windows NT, ils ont dcouvert que le serveur devait traiter un retour-chariot (carriage return) suivi dun saut de ligne (newline) (la squence Windows indiquant une n de ligne) de la mme manire quun
[12/01/08]
DNS et Bind
251
simple saut de ligne (une n de ligne en Unix). Pour obtenir ce comportement, il faut utiliser :
options { treat-cr-as-space yes; };
BIND 9 na pas besoin de cette option, car il traite ces deux cas de la mme manire, cest--dire comme un simple saut de ligne. Enn, si lun des serveurs BIND est esclave de Microsoft DNS Servers avec des zones intgres dans Active Directory, on peut ventuellement voir un message syslog informant que le numro de srie des zones a diminu. Cest un effet de bord du mcanisme de rplication utilis par Active Directory et il ne faut pas sen inquiter. Si on veut viter ce message, on peut utiliser la sous-structure multi-master de zone de BIND 9.3.0 pour indiquer lesclave que les adresses IP de la directive masters correspondent en ralit plusieurs serveurs, et non plusieurs interfaces dun mme serveur :
zone "_msdcs.domain.com" { type slave; masters { 10.0.0.2; 10.0.0.3; }; file "bak._msdcs.domain.com"; multi-master yes; };
Le premier groupe (2001 ici) est llment le plus signicatif de ladresse. Il reprsente les 16 bits de poids forts de ladresse. Dans la reprsentation, les groupes de nombres qui commencent par un ou plusieurs zros nont pas besoin dtre cals sur quatre chiffres. On peut donc donner une nouvelle reprsentation de ladresse prcdente :
2001:db80:123:4567:89ab:cdef:123:4567
Chaque groupe doit contenir au moins un nombre, sauf si on utilise la notation :: . Elle permet de condenser la reprsentation dune suite de zros, ce qui est pratique, par exemple, pour dnir un prxe IPv6 :
2001:db80:dead:beef::
Cette adresse xe les 64 premiers bits dune adresse IPv6 2001:db80:dead:beef et les 64 bits restants zro. :: peut aussi tre utilis au dbut dune adresse IPv6 pour dnir un sufxe. Ainsi, ladresse de bouclage (loopback) IPv6 scrit habituellement :
::1
[12/01/08]
DNS et Bind
252
cela signie une suite de 127 zros suivis dun unique 1. :: peut aussi servir au milieu dune adresse pour condenser la reprsentation dune suite de zros :
2001:db80:dead:beef::1
:: ne peut tre utilis quune seule fois dans une adresse, car une utilisation multiple conduirait des ambiguts. Les prxes IPv6 sont dnis dans un format similaire la notation CIDR dIPv4. Les bits signicatifs du prxe sont reprsents selon la notation standard en IPv6 et sont suivis dun slash puis du nombre exact (en dcimal) de bits signicatifs. Ainsi, les trois dnitions de prxes suivantes sont quivalentes :
2001:db80:dead:beef:0000:00f1:0000:0000/96 2001:db80:dead:beef:0:f1:0:0/96 2001:db80:dead:beef:0:f1::/96
Lquivalent IPv6 dune adresse de rseau IPv4 sappelle un prxe de routage global (global routing prex). Il sagit dun nombre variable de bits de poids fort dune adresse IPv6, utilis pour identier un rseau particulier. Toutes les adresses unicast globales ont un prxe de routage global commenant par la valeur binaire 001. Ces adresses sont attribues par un registry dadresses ou par un fournisseur daccs Internet. Le prxe de routage global peut lui-mme tre hirarchique, un registry dadresse tant alors charg dattribuer des bits de poids plus faible diffrents FAI, eux-mmes responsables de lattribution de ces bits de poids faible du prxe leurs clients. la suite du prxe de routage global, une adresse IPv6 peut contenir un autre nombre variable de bits pour dsigner un sous-rseau particulier lintrieur dun rseau ; il sagit alors dun identiant de sous-rseau (subnet ID). Les bits restants de ladresse dnissent une interface particulire et sont appels identiant dinterface (interface ID). Le diagramme de la RFC 3513 dcrit cette structure :
| n bits | m bits | 128-n-m bits | +---------------------------+-------------------+----------------+ | prfixe de routage global | ID de sous-rseau | ID dinterface | +---------------------------+-------------------+----------------+
Conformment la RFC 3177, qui dcrit lattribution des adresses IPv6 aux sites :
les particuliers devraient recevoir un prxe /48 ; les petites et grandes entreprises devraient recevoir un prxe /48 ; les trs grandes entreprises devraient recevoir un prxe /47 ou lgrement plus
court.
Adresses et ports
Comme IPv4 est relativement simple compar IPv6, nous allons dcrire simultanment la conguration dun serveur IPv4 et dun serveur IPv6. Depuis la version 8.4.0 de BIND et avec BIND 9, un serveur peut aussi bien utiliser un transport IPv4 quun transport IPv6, cest--dire quil peut envoyer des requtes et recevoir des rponses via IPv4 ou IPv6. BIND 8 ne fonctionne quen IPv4. Les deux types disposent de sous-structures similaires pour congurer les interfaces et les ports utiliser pour les requtes reues et envoyes.
[12/01/08]
DNS et Bind
Adresses et ports
253
Le serveur est lcoute de toutes les interfaces correspondant la liste dadresses. Pour dnir un port autre que le port 53, on peut ajouter le paramtre port :
options { listen-on port 5353 { 192.249.249/24; }; };
Notons qutant donn que la plupart des resolvers ne sont pas congurables pour interroger un autre port que le 53, le serveur dni ci-dessus nest pas trs utile. Il peut toutefois servir aux transferts de zone, puisque quon peut prciser un autre port dans une sous-structure masters :
zone "movie.edu" { type slave; masters port 5353 { 192.249.249.1; }; file "bak.movie.edu"; };
Si un serveur BIND 9 a plusieurs serveurs-matres (chacun lcoute dun port diffrent), on peut utiliser une sous-structure masters semblable ce qui suit :
zone "movie.edu" { type slave; masters { 192.249.249.1 port 5353; 192.253.253.1 port 1053; }; file "bak.movie.edu"; };
BIND 9 permet mme denvoyer les messages NOTIFY vers des ports alternatifs. Si le port alternatif est le mme sur tous les esclaves, on peut utiliser :
also-notify port 5353 { 192.249.249.9; 192.253.253.9; }; // les 2 adresses de // zardoz
Si un esclave multi-domicili a besoin dutiliser une interface spcique pour envoyer ses requtes, par exemple si lun de ses matres ne le reconnat que par une seule de ses adresses, on peut utiliser la sous-structure query-source :
options { query-source address 192.249.249.1; };
[12/01/08]
DNS et Bind
254
Notons que largument nest pas une liste dadresses, mais une adresse IP unicast. On peut aussi dnir un port dorigine spcique pour gnrer les requtes :
options { query-source address 192.249.249.1 port 53; };
Le comportement par dfaut de BIND consiste utiliser toute interface dsigne par la route jusqu la destination, ainsi quun port non privilgi, choisi alatoirement :
options { query-source address * port *; };
Notons que query-source ne concerne que les requtes vhicules par UDP ; les requtes achemines par TCP choisissent ladresse dorigine en fonction de la table de routage et un port au hasard. La sous-structure transfer-source fonctionne de manire analogue et permet de xer ladresse dorigine utilise pour un transfert de zone. En BIND 9, elle sapplique aussi aux demandes de SOA faites par un serveur-esclave, ainsi qu la retransmission des mises jour dynamiques :
options { transfer-source 192.249.249.1; };
Comme avec query-source, largument est une simple adresse IP mais sans le mot-cl , address. Avec BIND 8, il ny a pas doption port. Avec BIND 9, on peut dnir le port dorigine :
options { transfer-source 192.249.249.1 port 1053; };
Toutefois, ce port dorigine ne sapplique quau trac UDP (requte de SOA et retransmission de mise jour dynamique). transfer-source peut aussi apparatre dans une sous-structure zone. Dans ce cas, elle naffecte que les transferts de cette zone en BIND 8, mais aussi les requtes de SOA et les mises jour dynamiques en BIND 9 :
zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; transfer-source 192.249.249.1; // utiliser toujours des adresses IP du mme // rseau pour les transferts de movie.edu };
Enn, la sous-structure notify-source de BIND 9.1.0 permet de dnir ladresse partir de laquelle on envoie les messages NOTIFY. Cela est utile avec des serveurs multi-domicilis car, par dfaut, les serveurs-esclaves nacceptent les messages NOTIFY pour une zone que lorsquils proviennent dune adresse IP qui apparat dans la sous-structure masters pour cette zone. La syntaxe de notify-source est semblable celle de toutes les sous-structures -source :
[12/01/08]
DNS et Bind
Adresses et ports
options { notify-source 192.249.249.1; };
255
Comme avec transfer-source, notify-source peut comporter un numro de port dorigine et peut tre utilise dans une structure zone lorsquelle ne concerne quune zone spcique :
zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; notify-source 192.249.249.1 port 5353; };
Si on ne peut pas contrler ladresse IP de laquelle proviennent les messages NOTIFY (parce que lon nest pas ladministrateur du serveur-matre, par exemple), on peut soit inclure les adresses IP de tous les matres dans la sous-structure masters, soit utiliser allow-notify pour permettre explicitement les messages NOTIFY pour des adresses non dnies dans masters.
Avant BIND 9.3.0, la structure listen-on-v6 nacceptait que les arguments any et none. On peut aussi congurer un serveur BIND pour quil soit lcoute dun port alternatif ou mme de plusieurs ports, avec loption port :
options { listen-on-v6 port 1053 { any; }; };
Pour couter sur plus dune interface ou dun port IPv6, il suft de dclarer plusieurs directives listen-on-v6. Bien sr, le port standard est le port 53. La sous-structure transfer-source-v6 xe ladresse dorigine IPv6 utilise par le serveur pour envoyer des requtes :
options { transfer-source-v6 222:10:2521:1:210:4bff:fe10:d24; };
Seul BIND 9 permet de dnir le port dorigine. En standard, ladresse dorigine utilise correspond linterface rseau dsigne par la route vers la destination et le port non privilgi est choisi alatoirement. Comme pour transfer-source, on peut utiliser transfer-
[12/01/08]
DNS et Bind
256
source-v6 comme sous-structure de zone. Le port dorigine concerne aussi les requtes de SOA et la retransmission de mises jour dynamiques. Enn, depuis BIND 9.1.0, on peut xer ladresse IPv6 utilise dans les messages NOTIFY avec la sous-structure notify-source-v6, de la mme manire quavec la sous-structure notify-source :
options { notify-source-v6 222:10:2521:1:210:4bff:fe10:d24; };
Comme avec transfer-source-v6, il est possible de prciser un autre port dorigine et de recourir la sous-structure dans une structure zone.
EDNS0
Les messages DNS bass sur UDP sont traditionnellement limits 512 octets. Cette limite a t institue pour viter la fragmentation, qui tait coteuse et peu able aux dbuts dInternet. Les temps ont chang et la plupart des chemins sur Internet peuvent vhiculer des datagrammes UDP plus grands. En raison des nouvelles caractristiques du DNS, telles que DNSSEC ou la prise en compte de IPv6, la taille moyenne des rponses est bien plus importante. En particulier, les rponses provenant des zones signes peuvent facilement dpasser la limite des 512 octets, ce qui peut provoquer des redirections coteuses en TCP . Le mcanisme dextension du DNS version 0 (Extension Mechanisms for DNS, version 0, ou EDNS0) dnit un systme de signalisation simple dans le DNS. Avec EDNS0, un resolver ou un serveur de noms informe un autre serveur quil peut grer des messages DNS plus longs que 512 octets (il peut aussi signaler dautres caractristiques, comme nous le verrons au prochain chapitre). Les serveurs de noms BIND grent EDNS0 depuis les versions 9.0.0 et 8.3.0. Par dfaut, ces serveurs envoient des informations de signalisation EDNS0 et tentent de ngocier une taille de message DNS bas sur UDP de 4096 octets. Sils reoivent une rponse indiquant que le serveur distant ne comprend pas EDNS0, ils utilisent des messages de longueur classique de 512 octets. Cette technique fonctionne gnralement bien mais, parfois, certains serveurs ragissent mal aux sondages EDNS0. Pour faire face ce problme, la directive edns de server permet dinvalider EDNS0 pour ce serveur de noms :
server 10.0.0.1 { edns no; };
Cette directive est disponible depuis BIND 9.2.0 et BIND 8.3.2. Avec BIND 9 depuis sa version 9.3.0 et avec BIND 8 depuis sa version 8.4.0, on peut aussi dnir la taille des messages DNS bass sur UDP que le serveur ngociera, laide de la directive edns-udp-size de options :
options { directory "/var/named"; edns-udp-size 512; };
[12/01/08]
DNS et Bind
Adresses et ports
257
Cette conguration peut tre utile si un pare-feu ne comprend pas que les messages DNS peuvent dpasser 512 octets et quil continue abandonner ces messages pourtant lgitimes (le mieux serait bien sr de faire voluer le pare-feu, mais cette option peut permettre de patienter). La valeur maximale de edns-udp-size est de 4096 et son minimum est de 512.
AAAA et ip6.arpa
Cette manire daborder le problme de la correspondance directe, dcrite dans la RFC 1886, consiste mettre en place un enregistrement dadresse quatre fois plus long quun enregistrement A, lenregistrement AAAA. Lenregistrement AAAA contient la forme textuelle dune adresse IPv6 :
ipv6-host IN AAAA 2001:db80:1:2:3:4:567:89ab
La RFC 1886 dnit galement ip6.int, maintenant remplac par ip6.arpa, un nouvel espace de noms pour la correspondance inverse des adresses IPv6. Chaque niveau de sous-domaine de ip6.arpa correspond quatre bits de ladresse sur 128 bits, reprsents sous la forme de nombres hexadcimaux. Les bits les moins signicatifs (les bits de poids faible de ladresse) sont positionns gauche dans le nom. la diffrence de la reprsentation des adresses dans lenregistrement AAAA, il est impossible domettre les suites de zros : il faut quil y ait bien 32 nombres hexadcimaux et donc 32 niveaux de sousdomaines correspondant ladresse IPv6 complte. Le nom correspondant ladresse prcdente est alors :
b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa.
[12/01/08]
DNS et Bind
258
Ces noms sont attachs des enregistrements PTR, de la mme manire que ceux du domaine in-addr.arpa :
b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.8.b.d.1.0.0.2.ip6.arpa. IN PTR mash.ip6.movie.edu.
La raison principale du remplacement de lenregistrement AAAA et du schma de correspondance inverse ip6.int tait quils rendaient difciles les re-numrotations. Ainsi, si une entreprise dcide de changer de FAI, elle doit changer tous les enregistrements AAAA dans ses chiers de zone, puisque certains des bits dune adresse IPv6 identient un le FAI14. On peut imaginer limpact dun changement de registry dadresse par le FAI : cela bouleverserait toutes les donnes de zone de ses clients.
14. De plus, le nouveau FAI peut utiliser un registry diffrent, ce qui implique de modier encore plus de bits.
[12/01/08]
DNS et Bind
Adresses et ports
259
dnit les 64 derniers bits de ladresse IPv6 de drunkenmaster.movie.edu, cest--dire lID dinterface. Le nombre 64 qui apparat dans lenregistrement indique que les 64 premiers bits ne sont pas dnis dans cet enregistrement A6, mais quils le sont dans lenregistrement A6 de subnet1.v6.movie.edu. subnet1.v6.movie.edu dnit les 16 derniers bits du prxe de 64 bits, cest--dire lID de sous-rseau qui nest pas dni dans ladresse de lenregistrement A6 de drunkenmaster.movie.edu, mais galement le nom de lenregistrement A6 quil faut chercher pour connatre les premiers bits
$ORIGIN v6.movie.edu. subnet1 IN A6 48 0:0:0:1:: movie-u.isp-a.net. subnet1 IN A6 48 0:0:0:1:: movie.isp-b.net.
Les 48 premiers bits du prxe dans lenregistrement A6 de subnet1.v6.movie.edu sont initialiss 0 car ils nont pas de signication ici. Ces deux derniers enregistrements indiquent de chercher deux autres enregistrements A6, lun de nom movie-u.isp-a.net et lautre de nom movie.isp-b.net pour dcouvrir le dbut du prxe. Lexistence de deux enregistrements vient du fait que lUniversit du Cinma est connecte deux FAI, FAI A et FAI B. Dans la zone du FAI A, on trouve :
$ORIGIN isp-a.net. movie-u IN A6 40 0:0:21:: isp-a.rir-1.net.
qui dnit 8 bits du prxe de routage global dni par le FAI A pour lUniversit du Cinma (le prxe de routage global peut tre lui-mme hirarchique : il comprend la fois une identication du FAI, attribue par son registry dadresse, et une identication du site de lUniversit du Cinma). Puisque le FAI attribue une partie des bits du prxe de routage global mais que le reste du prxe est attribu par son registry dadresse, seuls les bits attribus par le FAI apparaissent dans les donnes de zone du FAI. Le reste du prxe est dni dans un enregistrement A6 dans les donnes de zone du registry dadresse. Dans la zone du FAI B, lenregistrement suivant dnit lidentiant de site du rseau de lUniversit du Cinma :
$ORIGIN isp-b.net. movie IN A6 40 0:0:42:: isp-b.rir-2.net.
Dans les zones des registries dadresse, on trouve les quatre bits suivants de ladresse IPv6 :
$ORIGIN rir-1.net. isp-a IN A6 36 0:0:0500:: rir-2.top-level-v6.net.
et :
$ORIGIN rir-2.net. isp-b IN A6 36 0:0:0600:: rir-1.top-level-v6.net.
Enn, dans la zone de lorganisme denregistrement des adresses de plus haut niveau, on trouve les enregistrements dnissant les bits des prxes attribus au RIR 1 et au RIR 2 :
$ORIGIN top-level-v6.net. rir-1 IN A6 0 2001:db80::2 rir-2 IN A6 0 2001:db80::6
[12/01/08]
DNS et Bind
260
En suivant cet enchanement denregistrements A6, un serveur de noms peut reconstituer lensemble des 128 bits des deux adresses IPv6 de drunkenmaster.movie.edu :
2001:db80:2521:1:210:4bff:fe10:d24 2001:db80:6642:1:210:4bff:fe10:d24
Pour atteindre le rseau de lUniversit, la premire de ces deux adresses donne une route via le RIR 1 et le FAI A, et la seconde une route via le RIR 2 et le FAI B (luniversit est connecte deux FAI pour la redondance). Notons que si le RIR 1 modie le prxe attribu au FAI A, il lui suft de modier lenregistrement A6 de isp-a.rir-1.net dans sa zone ; les modications seront vues en cascade dans tous les enchanements denregistrements A6 mettant en jeu le FAI A. Cela facilite la gestion de ladressage dans les rseaux IPv6 et permet aussi de changer facilement de FAI. Vous voyez peut-tre dj certains des problmes lis aux enregistrements A6. La rsolution de noms vers une simple adresse IPv6 peut ncessiter plusieurs requtes indpendantes (recherche des enregistrements A6 du RIR, du FAI, etc). La rsolution complte peut prendre plusieurs fois le temps dune recherche denregistrement AAAA, et si lune des rsolutions lmentaires choue, la totalit du processus de rsolution choue aussi.
Si un serveur apparat dans un enregistrement NS, associ un ou plusieurs enregistrements A6, ces derniers doivent dnir la totalit des 128 bits de ladresse IPv6. Cela vite les problmes dinterblocage qui apparatraient lors du contact dun serveur distant par un resolver ou un serveur pour rsoudre une partie de ladresse IPv6 du serveur.
[12/01/08]
DNS et Bind
Adresses et ports
IN IN IN NS MX wormhole.movie.edu. 10 postmanrings2x.movie.edu.
261
DNAME movie.edu.
Lenregistrement DNAME dans la zone movieu.edu sapplique tous les noms qui se terminent par movieu.edu sauf movieu.edu lui-mme. la diffrence dun enregistrement CNAME, un enregistrement DNAME peut coexister avec dautres types denregistrements associs au mme nom, condition quils ne soient ni un CNAME ni un autre DNAME. Cependant, le nom associ lenregistrement DNAME ne peut pas avoir de sous-domaine. Lorsquun serveur de movieu.edu reoit une requte de nom se terminant par movieu.edu, par exemple cuckoosnest.movieu.edu, lenregistrement DNAME lui indique de construire un alias de cuckoosnest.movieu.edu vers cuckoosnest.movie.edu, en remplaant, en quelque sorte, le nom movieu.edu par movie.edu :
cuckoosnest.movieu.edu. IN CNAME cuckoosnest.movie.edu.
Cela ressemble la commande s (substitute) de sed. Le serveur de noms de movieu.edu rpond par cet enregistrement CNAME. Sil rpond un serveur rcent, il joint lenregistrement DNAME la rponse, ce qui permet au serveur qui interroge de construire lui-mme ses propres enregistrements CNAME partir de lenregistrement DNAME quil aura plac dans sa mmoire cache. Les chanes de bits (Bitstring labels) constituent la seconde moiti du mcanisme mis en jeu dans la correspondance inverse en IPv6. Les chanes de bits sont simplement un moyen de condenser une longue squence de noms reprsentant chacun un nombre binaire (cest--dire un bit) dans un nom complet. En effet, on veut construire une dlgation correspondant chaque bit dune adresse IP ce qui implique de reprsenter , chaque bit de ladresse par un nom dans un nom complet. Mais cela ncessiterait de dnir 128 noms pour reprsenter une adresse IPv6. Du pain sur la planche ! Et cela dpasse la limite sur le nombre de termes dans un nom totalement quali ! Les chanes de bits concatnent les bits en un raccourci hexadcimal, octal, binaire ou une chane doctets en notation pointe. La chane est encadre par \[ et ] pour la diffrencier dun nom traditionnel et commence par une lettre qui indique la base utilise dans la chane : b pour le binaire, o pour loctal et x pour lhexadcimal. Voici les chanes qui correspondent aux deux adresses IPv6 de drunkenmaster.movie.edu :
\[x2001db802521000102104bfffe100d24] \[x2001db806642000102104bfffe100d24]
Notons que le bit le plus signicatif est au dbut de la chane, comme dans la reprsentation de ladresse IPv6, mais dans le sens oppos de lordre des tiquettes dans le domaine in-addr.arpa. Il ne sagit que de reprsentations diffrentes dun mme nom standard codant ladresse, en commenant par les poids faibles :
0.0.1.0.0.1.0.0.1.0.1.1.0.0.0.0.0.0.0.0.1.0.0.0.0.1.1.1.1.1.1.1...
Notons galement que les 32 nombres hexadcimaux de ladresse sont prsents dans cette reprsentation : il nest pas possible de condenser les zros, car il ny a pas de : pour sparer les groupes de quatre nombres.
[12/01/08]
DNS et Bind
262
Les chanes de bits peuvent aussi permettre de dnir des parties dadresse IPv6, ce qui ncessite de dnir le nombre de bits signicatifs dans la chane, spar de la chane par un slash. Ainsi la portion de prxe de routage global attribue au RIR est \[x2001db802/ 36]. Associs, les DNAME et les chanes de bits sont utiliss pour mettre en correspondance des parties dun nom long qui reprsentent une adresse IPv6 et pour modier chaque itration le nom recherch vers un nom situ dans la zone sous contrle de lorganisme qui gre lhte avec cette adresse IPv6. Supposons que nous fassions une recherche inverse du nom \[x2001db806642000102104bfffe100d24].ip6.arpa, qui correspond linterface rseau de lhte drunkenmaster.movie.edu lorsquil est atteint via le RIR 2 et le FAI B. Les serveurs de la racine indiqueront probablement de sadresser aux serveurs de ip6.arpa, qui contiennent ces enregistrements :
$ORIGIN ip6.arpa. \[x2001db802/36] \[x2001db806/36] IN IN DNAME DNAME ip6.rir-1.net. ip6.rir-2.net.
Le second de ces deux enregistrements correspond au dbut du nom que nous cherchons, aussi les serveurs de ip6.arpa rpondent-ils par lalias suivant :
\[x2001db806642000102104bfffe100d24].ip6.arpa. IN CNAME \[x642000102104bfffe100d24].ip6.rir-2.net.
Notons que les neuf premiers nombres hexadcimaux (les 36 bits les plus signicatifs) de ladresse ont t limins et que la n de la cible de lalias est maintenant ip6.rir-2.net, cette adresse appartenant au RIR 2. Dans ip6.rir-2.net, nous trouvons :
$ORIGIN ip6.rir-2.net. \[x6/4] IN DNAME ip6.isp-b.net.
par :
\[x42000102104bfffe100d24].ip6.isp-b.net
Ensuite, le serveur de noms interroge un serveur de ip6.isp-b.net au sujet de ce nouveau nom. Lenregistrement suivant de la zone ip6.isp-b.net :
$ORIGIN ip6.isp-b.net. \[x42/8] IN DNAME ip6.movie.edu.
Enn, la zone ip6.movie.edu contient lenregistrement PTR qui renvoie vers le nom dhte recherch :
$ORIGIN ip6.movie.edu. \[x000102104bfffe100d24/80] IN PTR drunkenmaster.ip6.movie.edu.
[12/01/08]
DNS et Bind
Adresses et ports
263
Heureusement, en temps quadministrateur de zone, on ne sera probablement responsable que de lenregistrement PTR tel que ceux dans ip6.movie.edu. Mme si on travaille pour un RIR ou un FAI, la cration denregistrements DNAME permettant dextraire les bits adquats du prxe de routage global pour les adresses des clients nest pas aussi lourde que cela. De plus, mme si un hte a plusieurs adresses ou si on est connect plusieurs FAI, on gagne en souplesse navoir quun seul chier de correspondance inverse grer.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
11
Scurit
Jespre que vos cheveux tiennent bien ? poursuivit-il, tandis quils se remettaient en route. Comme ceux de tout le monde, rpondit Alice en souriant. Ce nest gure suffisant, dit-il dune voix angoisse. Le vent est tellement fort ici, vous voyez. Il est fort comme la soupe. Avez-vous invent un systme pour empcher les cheveux dtre souffls par le vent ? senquit Alice. Pas encore, dit le Cavalier, mais jai dj un systme pour les empcher de tomber.
Pourquoi faut-il se proccuper de scurit avec le DNS ? Pourquoi perdre du temps scuriser un service dont le rle essentiel est de mettre en correspondance des noms et des adresses ? Et bien, lisez la petite histoire qui suit. En juillet 1997, durant deux priodes de quelques jours, des utilisateurs pensant se connecter sur le site web dInterNIC (www.internic.net) aboutissent en fait sur celui dAlterNIC. Ce dernier gre un autre ensemble de serveurs de la racine, qui cre des dlgations vers des domaines supplmentaires tels que med et porn. Eugene Kashpureff, alors membre dAlterNIC, vient dexcuter un programme pour empoisonner la mmoire cache de plusieurs serveurs de noms principaux travers le monde, an de leur faire croire que ladresse de www.internic.net est en ralit celle du serveur web dAlterNIC. Kashpureff na fait aucune tentative de mystication ; le site web atteint par les utilisateurs est effectivement celui dAlterNIC et non une imitation de celui dInterNIC. Mais imaginons une opration similaire pour rediriger www.amazon.com ou www.wellsfargo.com vers un serveur priv, install hors de porte des lois locales. Imaginons quun utilisateur lui fournisse son numro de carte de crdit et la date dexpiration. Il ny a pas grand chose de plus dire ! La protection des utilisateurs contre ce type dattaque sappuie sur la scurit au niveau du DNS. Plusieurs axes sont envisageables. On peut scuriser les transactions : les requtes, les rponses et tous les messages reus ou envoys par un serveur de noms. On
[12/01/08]
DNS et Bind
266
Chapitre 11 Scurit
peut scuriser le serveur de noms en refusant de rpondre, de transfrer une zone ou de la mettre jour dynamiquement selon ladresse dorigine de la requte. On peut mme scuriser les informations dune zone en leur appliquant une signature. Puisque la scurit est le sujet le plus complexe du DNS, nous commencerons par le plus simple et terminerons par le plus ardu.
TSIG
BIND 8.2 introduit un nouveau mcanisme de scurisation des messages DNS, la signature de transaction (Transaction SIGnature ou TSIG). TSIG est bas sur un secret partag (des cls) et utilise une fonction de hachage non inversible pour authentier les messages DNS, particulirement les rponses et les mises jour. TSIG, dni dans la RFC 2845, est relativement simple congurer, lger pour les resolvers et les serveurs de noms, et sufsamment exible pour scuriser les messages DNS (y compris les transferts de zone) et les mises jour dynamiques (en cela, il contraste avec les extensions de scurit du DNS, qui seront prsentes la n de ce chapitre). Lorsque TSIG est congur, un serveur de noms, ou un updater, place un enregistrement TSIG dans la section des enregistrements complmentaires dun message DNS. Lenregistrement TSIG signe le message, ce qui permet de prouver que lexpditeur et le destinataire partagent la mme cl et que le message na pas t modi depuis son envoi1.
Lenregistrement TSIG
Nous ne dcrirons pas lenregistrement TSIG en dtail car cela est inutile : il napparat jamais, ni dans les informations dune zone, ni en mmoire cache de resolver ou de
1.
Les spcialistes de la cryptographie argueront que les signatures TSIG ne sont pas rellement des signatures au sens du chiffrement, car elles ne fournissent pas le service de non rpudiation. Comme tous les dtenteurs de la cl partage peuvent crer un message sign, le destinataire dun message sign ne peut pas prtendre que seul lexpditeur peut avoir envoy le message (le destinataire peut lavoir lui-mme forg).
[12/01/08]
DNS et Bind
TSIG
267
serveur de noms. Un expditeur ajoute lenregistrement TSIG au message DNS, le destinataire le supprime et vrie lenregistrement avant de le traiter. Par contre, il est utile de savoir que lenregistrement TSIG contient une valeur de hachage calcule sur lensemble du message DNS et sur certains champs complmentaires (ces informations sont fournies lalgorithme HMAC-MD5 pour gnrer la valeur de hachage). La valeur de hachage est ensuite chiffre laide dune cl prive partage entre le signataire et le vricateur. La vrication de la valeur de hachage prouve que le message DNS a t sign par un dtenteur de la cl partage et quil na pas t modi aprs signature. Les champs complmentaires signs par TSIG comprennent la date et lheure de signature du message DNS, an dviter quun pirate ne rejoue ultrieurement une transaction signe et autorise suite une capture (par exemple une mise jour dynamique supprimant un enregistrement de ressources important). Le destinataire vrie que lheure de signature est sufsamment rcente.
Congurer TSIG
Avant dutiliser TSIG pour lauthentication, il faut congurer une ou plusieurs cls TSIG chaque extrmit de la transaction. Ainsi, si on veut utiliser TSIG pour scuriser les transferts de zone entre le serveur-matre et les serveurs-esclaves de movie.edu, il faut congurer tous les serveurs avec une cl commune :
key toystory-wormhole.movie.edu. { algorithm hmac-md5; secret "skrKc4Twy/cIgIykQu7JZA=="; };
Largument de la structure key de cet exemple, toystory-wormhole.movie.edu., est en ralit le nom de la cl, bien quil ressemble un nom de domaine (il est cod dans un message DNS au mme format que les noms de domaine). La RFC dcrivant TSIG recommande de nommer les cls daprs le nom des deux htes qui lutilisent. La RFC conseille aussi dutiliser une cl spcique par paire dhtes. Cette disposition permet de se prmunir contre la divulgation dune cl unique, ce qui compromettrait toutes les communications, grce la limitation de lutilisation de chaque cl. Il est important que le nom de la cl, et pas seulement la valeur quelle contient, soit exactement le mme aux deux extrmits de la transaction. Si ce nest pas le cas, le destinataire tente de vrier lenregistrement TSIG et dcouvre quil ne connat pas la cl annonce par cet enregistrement et utilise pour signer le message. Un message derreur apparat :
Jan 4 16:05:35 wormhole named[86705]: client 192.249.249.1#4666: request has invalid signature: TSIG tsig-key.movie.edu: tsig verify failure (BADKEY)
Pour le moment, le seul algorithme est hmac-md5. La sous-structure secret mmorise la cl, code en base 64. Le programme dnssec-keygen de BIND 9 ou dnskeygen de BIND 8 permet de gnrer de telles cls. dnssec-keygen est le plus facile utiliser :
# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST toystory-wormhole.movie.edu. Ktoystory-wormhole.movie.edu.+157+28446
[12/01/08]
DNS et Bind
268
Chapitre 11 Scurit
Loption a permet de dnir lalgorithme avec lequel la cl sera utilise (dnssec-keygen peut gnrer dautres types de cl ; voir la section Extensions de scurit du DNS). Loption b dnit la longueur de la cl ; la RFC recommande des signatures avec des cls de 128 bits. Loption n dnit le type de cl gnrer, ici HOST (DNSSEC utilise des cls de type ZONE). La dernire valeur est le nom de la cl. dnssec-keygen et dnskeygen crent tous deux des chiers situs dans leur rpertoire de travail, et contenant les cls gnres. dnssec-keygen afche le prxe des noms de ces chiers. Ici, dnssec-keygen cre les chiers Ktoystory-wormhole.movie.edu.+157+28446.key et Ktoystory-wormhole.movie.edu.+157+28446.private. Les nombres 157 et 28446 reprsentent, respectivement, la rfrence dalgorithme de cl de DNSSEC (157 pour HMACMD5) et un identiant pour la cl gnre (une valeur de hachage calcule partir de la cl). Cet identiant ne sert pas TSIG, mais il est utile pour DNSSEC, qui accepte plusieurs cls par zone. Le chier Ktoystory-wormhole.movie.edu.+157+28446.key contient :
toystory-wormhole.movie.edu. IN KEY 512 3 157 skrKc4Twy/cIgIykQu7JZA==
Comme la valeur de la cl est condentielle, son transfert vers tous les serveurs doit tre entour de prcautions (par exemple en utilisant ssh) et on doit sassurer que personne ne peut y accder en lecture. En particulier, le chier named.conf ne doit pas tre en lecture publique ; on peut aussi placer les structures key dans un chier annexe non accessible en lecture publique, puis charger ce chier par une structure include :
include "/etc/dns.keys.conf";
Reste enn le problme crucial de la synchronisation temporelle. Lestampille temporelle place dans lenregistrement TSIG sert empcher quune transaction ne soit rejoue. En cas de dsynchronisation, les messages sont rejets (les horloges des serveurs de noms ne doivent pas tre dcales de plus de cinq minutes) :
wormhole named[86705]: client 192.249.249.1#54331: request has invalid signature: TSIG toystory-wormhole.movie.edu.: tsig verify failure (BADTIME)
La solution la plus simple et la plus rapide est de mettre en uvre NTP (Network Time Protocol)2, un protocole de synchronisation temporelle.
2.
[12/01/08]
DNS et Bind
TSIG
269
Utiliser TSIG
Maintenant que les cls TSIG sont congures, on peut les utiliser. Depuis BIND 8.2 et avec toutes les versions de BIND 9, TSIG permet de scuriser les requtes, les rponses, les transferts de zone et les mises jour dynamique. Cest le rle de la sous-structure keys de la structure server. La structure server suivante indique au serveur, ici wormhole.movie.edu, de signer les requtes vers 192.249.249.1 (toystory.movie.edu) avec la cl toystory-wormhole.movie.edu :
server 192.249.249.1 { keys { toystory-wormhole.movie.edu.; }; };
Si on est uniquement concern par les transferts de zone (et non par lensemble du trac de requtes), on peut dnir la cl dans la directive masters pour toutes les zones esclave :
zone "movie.edu" { type slave; masters { 192.249.249.1 key toystory-wormhole.movie.edu.; }; file "bak.movie.edu"; };
Sur toystory.movie.edu, les transferts de zone peuvent tre restreints aux requtes signes avec la cl toystory-wormhole.movie.edu :
zone "movie.edu" { type master; file "db.movie.edu"; allow-transfer { key toystory-wormhole.movie.edu.; }; };
toystory.movie.edu signe aussi les donnes transfres, ce qui permet wormhole.movie.edu de les vrier. On peut aussi restreindre les mises jour dynamiques laide de TSIG, en utilisant les sous-structures allow-update et update-policy (voir le Chapitre 17). Le programme nsupdate, fourni avec BIND 8 depuis la version 8.2 et toutes les versions de BIND 9, est compatible avec TSIG. Si les cls ont t cres par dnssec-keygen, on peut utiliser nimporte lequel des deux noms de chiers crs avec loption k de nsupdate. Voici comment utiliser la version de nsupdate livre avec BIND 9 :
% nsupdate -k Ktoystory-wormhole.movie.edu.+157+28446.key
ou :
% nsupdate -k Ktoystory-wormhole.movie.edu.+157+28446.private
La syntaxe de nsupdate en BIND 8 est lgrement diffrente : k dnit un rpertoire et un nom de cl, spars par un : :
% nsupdate -k /var/named:toystory-wormhole.movie.edu.
Si les chiers ne sont pas disponibles en local (par exemple si on utilise nsupdate sur un autre hte), on peut encore dnir le nom de cl et la cl secrte en ligne de commande, avec la version BIND 9 de nsupdate :
% nsupdate -y toystory-wormhole.movie.edu.:skrKc4Twy/cIgIykQu7JZA==
[12/01/08]
DNS et Bind
270
Chapitre 11 Scurit
Le nom de la cl est le premier argument de loption y ; il est suivi dun caractre : , puis de la valeur secrte code en base 64. Il nest pas ncessaire de placer cette dernire entre guillemets pour la protger dune interprtation par le Shell, car les valeurs codes en base 64 ne peuvent contenir aucun mta-caractre de Shell. Le module Perl Net::DNS de Michael Fuhr permet aussi de gnrer des mises jour dynamiques et des requtes de transfert de zone signes par TSIG. Pour plus dinformation sur Net::DNS, voyez le Chapitre 15. Maintenant que nous avons prsent un mcanisme pratique pour scuriser les transactions du DNS, nous allons tudier la scurisation dun serveur de noms.
Scuriser un serveur
BIND 8 et 9 disposent de plusieurs fonctions de scurit, particulirement importantes pour les serveurs connects lInternet, mais aussi utiles en interne. Nous prsenterons tout dabord des mesures qui devraient tre prises sur tous les serveurs pour lesquels la scurit est importante. Nous aborderons ensuite un modle o les serveurs sont rpartis en deux classes, lune uniquement pour rpondre aux requtes des resolvers, lautre pour rpondre celles des autres serveurs.
Version de BIND
Lun des meilleurs moyens pour augmenter la scurit est dinstaller une version rcente de BIND. Toutes les versions antrieures BIND 8.4.7 ou BIND 9.2.3 sont vulnrables au moins quelques attaques connues. LISC gre une liste des vulnrabilits en fonction des versions de BIND : http://www.isc.org/sw/bind/bind-security.php. Mais ne vous contentez pas de cela : de nouvelles attaques apparaissent quotidiennement. Il faut donc tenir jour son exemplaire de BIND. Il est conseill de lire rgulirement le forum comp.protocols.dns.bind ou de sabonner la liste quivalente, bindusers. On peut aussi se contenter de la liste bind-announce qui annonce les nouveaux correctifs ou les nouvelles versions3. La version de BIND elle-mme est un lment de scurit : si un pirate peut facilement dcouvrir la version de BIND utilise sur un serveur, il peut orienter des attaques en fonction des failles connues pour cette version. Or depuis BIND 4.9, si on cherche sur un serveur lenregistrement TXT associ au nom version.bind dans la classe CHAOSNET, BIND rpond par son numro de version :
% dig txt chaos version.bind. ; <<>> DiG 9.3.2 <<>> txt chaos version.bind. ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14286 ;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION:
3. Nous avons dcrit labonnement la liste bind-users au Chapitre 3. Les instructions pour labonnement bind-announce sont les mmes.
[12/01/08]
DNS et Bind
Scuriser un serveur
;version.bind. ;; ANSWER SECTION: version.bind. ;; AUTHORITY SECTION: version.bind. ;; ;; ;; ;; 0 0 CH CH CH TXT TXT NS "9.3.2" version.bind.
271
Query time: 17 msec SERVER: 192.168.0.1#53(192.168.0.1) WHEN: Sat Jan 7 16:14:39 2006 MSG SIZE rcvd: 62
Pour contourner ce problme, on peut xer la rponse cette question depuis BIND 8.2 :
options { version "Mlez-vous de ce qui vous regarde !"; };
videmment, avec une telle rponse, un pirate aura lindication que le serveur est postrieur BIND 8.2, mais cela lui mettra tout de mme des btons dans les roues. Cest pour cela que loption version none a t introduite depuis BIND 9.3.0 :
options { directory "/var/named"; version none; };
CH
TXT
;; AUTHORITY SECTION: version.bind. 86400 CH sion.bind. 0 28800 7200 604800 86400 ;; ;; ;; ;; Query time: 2 msec SERVER: 192.168.0.1#53(192.168.0.1) WHEN: Sat Jan 7 16:16:43 2006 MSG SIZE rcvd: 77
SOA
version.bind. hostmaster.ver-
[12/01/08]
DNS et Bind
272
Chapitre 11 Scurit
Le comportement des utilisateurs ayant volu, les administrateurs de pare-feu ont lgitimement besoin de masquer certaines portions de leur espace de noms une partie du monde, tout en les rendant disponibles dautres utilisateurs. La structure allow-query de BIND 8 et 9 permet de congurer un contrle daccs bas sur les adresses IP de lorigine des requtes, en acceptant ou non les requtes correspondantes. LACL peut sappliquer soit aux requtes concernant une zone particulire, soit lensemble des requtes reues par le serveur. Autrement dit, lACL dnit les adresses IP qui peuvent lgitimement poser des questions un serveur.
Pour indiquer un serveur de ne rpondre quaux requtes provenant des trois rseaux principaux de lUniversit du Cinma, il faut utiliser :
options { allow-query { 192.249.249/24; 192.253.253/24; 192.253.254/24; }; };
Tout type de serveur, matre ou esclave, faisant autorit peut appliquer une ACL la zone4. Les ACL spciques une zone sont prpondrantes sur les ACL globales. LACL propre une zone peut mme tre plus souple que lACL globale. En labsence dACL spcique, toute ACL globale sapplique.
[12/01/08]
DNS et Bind
Scuriser un serveur
273
demander le numro de Jean Dupont et, dautre part, se procurer lannuaire de cette entreprise. La sous-structure allow-transfer de BIND 8 et 9 permet dappliquer une ACL aux transferts de zone. allow-transfer limite les transferts dune zone spcique, en tant que sousstructure dune structure zone, ou de toutes les zones, en tant que sous-structure dune structure options. Le paramtre de allow-transfer est une liste dadresses. Les serveurs-esclaves de la zone movie.edu ont pour adresses IP 192.249.249.1 et 192.253.253.1 (wormhole.movie.edu), et 192.249.249.9 et 192.253.253.9 (zardoz.movie.edu). La structure zone :
zone "movie.edu" { type master; file "db.movie.edu"; allow-transfer { 192.249.249.1; 192.253.253.1; 192.249.249.9; 192.253.253.9; }; };
autorise ces seuls serveurs transfrer la zone movie.edu partir du serveur-matre primaire. Comme par dfaut BIND 8 et 9 permettent nimporte quelle adresse IP de demander un transfert de zone, il ne faut pas se contenter de protger le matre primaire ; il faut galement protger les esclaves, qui ne le sont pas en standard :
zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; allow-transfer { none; }; };
BIND 8 et 9 permettent aussi dappliquer une ACL globale pour les transferts de zone. Il sapplique toutes les zones qui nont pas dACL propre dnie dans leur structure zone. Par exemple, on peut vouloir rserver tous les transferts de zone aux htes du rseau local :
options { allow-transfer { 192.249.249/24; 192.253.253/24; 192.253.254/24; }; };
Enn, comme nous lavons dj mentionn dans ce chapitre, depuis BIND 8.2 et toutes les versions de BIND 9, on peut rserver les transferts de zone aux esclaves qui fournissent une signature de transaction correcte lorsquils requirent un transfert. Sur le serveur-matre, il faut dnir la cl dans une structure key, puis invoquer cette cl dans la liste daccs :
key toystory-wormhole. { algorithm hmac-md5; secret "UNd5xYLjz0FPkoqWRymtgI+paxW927LU/gTrDyulJRI="; }; zone "movie.edu" { type master; file "db.movie.edu"; allow-transfer { key toystory-wormhole.; }; };
[12/01/08]
DNS et Bind
274
Chapitre 11 Scurit
Il faut congurer lesclave pour quil signe les requtes de transfert de zone, avec la mme cl :
key toystory-wormhole. { algorithm hmac-md5; secret "UNd5xYLjz0FPkoqWRymtgI+paxW927LU/gTrDyulJRI="; }; server 192.249.249.3 { keys { toystory-wormhole.; }; // signature des requtes vers // 192.249.249.3 avec cette cl }; zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; };
Si un serveur primaire est accessible de lInternet, il peut tre intressant de ne permettre les transferts de zone qu ses serveurs-esclaves. La scurisation des transferts dans le cas de serveurs internes placs derrire un pare-feu est moins utile, moins que lon ne craigne les attaques internes.
[12/01/08]
DNS et Bind
Scuriser un serveur
t
275
Dnit la racine du systme de chiers vu par BIND aprs utilisation de chroot( ). Si on utilise les options -u et -g, il faut choisir lutilisateur et le groupe qui excutent BIND. Lidal est de crer un nouvel utilisateur et un nouveau groupe, tels que bind ou named. Puisque le serveur de noms lit le chier named.conf avant dabandonner les privilges de root, il nest pas ncessaire de modier les permissions de ce chier. Par contre, il faudra peut-tre modier les permissions et la proprit des chiers de zone, an que le nouvel utilisateur excutant le serveur puisse les lire. Si on utilise la mise jour dynamique, il faut aussi donner cet utilisateur un droit dcriture sur ces chiers. Si le serveur est congur pour enregistrer les vnements dans des chiers (et non pas via syslog), ces chiers doivent exister et tre accessibles en criture par le serveur. Loption t ncessite plus de prparation. En particulier, il est ncessaire que tous les chiers que named utilise soient prsents dans larborescence dans laquelle le serveur est restreint. Voici la procdure de mise en uvre via chroot pour une restriction daccs la seule arborescence /var/named5. 1. Crez ventuellement le rpertoire /var/named. Crez les sous-rpertoires dev, etc, lib, usr et var. Dans usr, crez le sous-rpertoire sbin. Dans var, crez les sous-rpertoires named et run :
# mkdir /var/named # cd /var/named # mkdir -p dev etc lib usr/sbin var/named var/run
3. En BIND 9, qui nutilise pas named-xfer, passez directement au point 4. En BIND 8, copiez le programme named-xfer vers le sous-rpertoire usr/sbin/ ou etc (selon que loriginal se trouve dans /usr/sbin ou dans /etc) :
# cp /usr/sbin/named-xfer usr/sbin
Vous pouvez aussi le placer o vous le souhaitez sous /var/named, puis utiliser la sous-structure named-xfer pour en informer named. Noubliez pas dexclure le rpertoire /var/named des noms de chemin car, lors de la lecture de named.conf par named, /var/named reprsentera en fait la racine. 4. Crez dev/null dans le nouvel environnement chroot6 :
# mknod dev/null c 2 2
Selon le systme dexploitation, les chemins peuvent varier. BIND 9 est autosufsant ; la copie des bibliothques nest donc pas ncessaire. 6. Modiez les chiers de dmarrage pour lancer syslogd avec loption a /var/named/ dev/log. Dans la plupart des Unix rcents, syslogd est dmarr par le script /etc/rc ou
5. 6.
Cette procdure est base sur FreeBSD. Elle peut donc demander des adaptations. Les paramtres de mknod pour crer dev/null peuvent varier dun systmes dexploitation lautre.
[12/01/08]
DNS et Bind
276
Chapitre 11 Scurit
/etc/rc.d/init.d/syslog. Au redmarrage suivant, syslogd crera /var/named/dev/log, et named lutilisera pour enregistrer ses messages. Si le syslogd utilis ne connat pas loption a, utilisez la structure logging dcrite dans le Chapitre 7 pour enregistrer les messages dans le rpertoire sous contrle de chroot( ). 7. Si vous utilisez BIND 8 et ses options u ou g, crez les chiers passwd et group dans le sous-rpertoire etc pour associer les arguments de u et g leur valeur numrique (ou utilisez directement des valeurs numriques) :
# echo "named:x:42:42:named:/:" > etc/passwd # echo "named::42" > etc/group
puis ajoutez les lignes aux chiers /etc/passwd et /etc/group du systme. En BIND 9, il suft de complter /etc/passwd et /etc/group, puisque les serveurs BIND 9 lisent les informations requises avant dappeler chroot( ). 8. Enn, modiez les chiers de dmarrage pour lancer named avec loption t /var/ named. De mme que pour syslogd, la plupart des Unix rcents lancent named via le script /etc/rc ou /etc/rc.d/init.d/named. Si on est habitu au pilotage de BIND 8 par ndc, on peut continuer lutiliser condition de dnir le chemin de la socket de domaine Unix laide de loption c de ndc :
# ndc -c /var/named/var/run/ndc reload
En BIND 9, rndc fonctionne de la mme manire quauparavant puisquil sadresse au serveur uniquement par le port 953.
[12/01/08]
DNS et Bind
Scuriser un serveur
277
une requte vers un serveur sous contrle du pirate. Cela se fait laide dune requte rcursive concernant un domaine servi par le serveur sous contrle du pirate. Pour dsactiver la rcursivit, il faut utiliser la structure suivante, en BIND 8 et 9 :
options { recursion no; };
Il faudrait aussi rserver le transfert de zones des serveurs-esclaves bien connus (voir prcdemment dans ce chapitre la section Contrler les transferts de zone, page 272). Enn, on pourrait dsactiver la construction de mmoire cache. En effet, un serveur tente de rsoudre les noms de chaque serveur apparaissant dans les enregistrements NS. Pour len empcher tout en lui permettant de gnrer des requtes sa propre initiative, il faut utiliser, avec BIND 8 (cette option nest pas disponible avec BIND 9) :
options { fetch-glue no; };
Dans ce cas, les seuls resolvers capables denvoyer des requtes rcursives vers un serveur et de provoquer linterrogation dautres serveurs par ce serveur, sont les resolvers internes, qui sont normalement plutt gentils. Loption use-id-pool permet de scuriser un peu plus le serveur de rsolution :
options { use-id-pool yes; };
Loption use-id-pool est apparue avec BIND 8.2. Elle indique au serveur dutiliser des ID alatoires pour les messages. En effet, les ID de messages ne sont pas sufsamment alatoires pour viter des attaques par force brute qui essaieraient de dcouvrir les ID en cours dutilisation an de simuler des rponses. Lactivation de cette option est inutile en BIND 9 car cette fonction est devenue standard.
Deux serveurs en un
Si on ne dispose que dune seule machine pour la fois annoncer une zone sur lInternet et rpondre aux requtes des resolvers locaux, il y a plusieurs solutions. Deux dentre elles sont bases sur un serveur unique en tirant parti de la exibilit de BIND
[12/01/08]
DNS et Bind
278
Chapitre 11 Scurit
8 et 9. Lune de ces congurations permet nimporte qui dinterroger le serveur, mais seuls les resolvers internes peuvent linterroger pour rechercher des informations sur lesquelles il ne fait pas autorit. Bien que cela nempche pas des resolvers distants denvoyer des requtes rcursives, ces requtes doivent concerner des informations sur lesquelles le serveur fait autorit, an que ce dernier nait pas gnrer de recherches complmentaires. Voici le chier named.conf correspondant :
acl "interne" { 192.249.249/24; 192.253.253/24; 192.253.254/24; localhost; }; acl "esclaves" { 192.249.249.1; 192.253.253.1; 192.249.249.9; 192.253.253.9; }; options { directory "/var/named"; allow-query { "interne"; }; use-id-pool yes; }; zone "movie.edu" { type master; file "db.movie.edu"; allow-query { any; }; allow-transfer { "esclaves"; }; }; zone "249.249.192.in-addr.arpa" { type master; file "db.192.249.249"; allow-query { any; }; allow-transfer { "esclaves"; }; }; zone "." { type hint; file "db.cache"; };
Ici, lACL, plus permissive et spcique une zone, sapplique des requtes provenant de la zone sur laquelle le serveur fait autorit, alors que lACL globale, plus restrictive, sapplique toutes les requtes. Depuis BIND 8.2.1 ou avec toutes les versions de BIND 9, on peut simplier cette conguration laide de la sous-structure allow-recursion :
acl "interne" { 192.249.249/24; 192.253.253/24; 192.253.254/24; localhost; };
[12/01/08]
DNS et Bind
Scuriser un serveur
acl "esclaves" { 192.249.249.1; 192.253.253.1; 192.249.249.9; 192.253.253.9; }; options { directory "/var/named"; allow-recursion { "interne"; }; use-id-pool yes; }; zone "movie.edu" { type master; file "db.movie.edu"; allow-transfer { "esclaves"; }; }; zone "249.249.192.in-addr.arpa" { type master; file "db.192.249.249"; allow-transfer { "esclaves"; }; }; zone "." { type hint; file "db.cache"; };
279
La sous-structure allow-query nest plus ncessaire : le serveur peut recevoir des requtes de lextrieur, mais il les traite comme des requtes itratives. Ces requtes ne peuvent donc pas induire de recherches complmentaires par le serveur de noms. Cette conguration a aussi lavantage de ne pas souffrir dun ala qui existe dans la prcdente conguration : si le serveur fait autorit sur une zone-parente, il peut recevoir des requtes provenant de serveurs distants concernant des noms situs dans un sousdomaine dlgu de cette zone-parente. La solution base sur allow-query rejette ces requtes, pourtant lgitimes, alors que celle base sur allow-recursion les accepte. Une autre solution consiste utiliser deux processus named sur la mme machine. Lun est congur comme serveur de publication, lautre comme serveur de rsolution. Comme il nexiste aucun moyen dindiquer des serveurs distants ou des resolvers dinterroger lun des serveurs sur un port autre que le 53 (le port par dfaut du DNS), il faut excuter ces serveurs sur des adresses IP diffrentes. Bien sr, si lhte a dj plusieurs interfaces de rseau, il ny a aucune difcult. Mme sil nen a quune, le systme dexploitation accepte peut-tre les alias dadresses IP Cela . permettrait dattribuer plus dune adresse IP une mme interface. Un processus named peut tre lcoute sur chaque adresse. Si le systme dexploitation naccepte pas les alias dadresses IP, il est encore possible dattribuer lun des named ladresse du rseau local, et lautre ladresse de bouclage. Seul lhte local pourra envoyer des requtes au named lcoute sur ladresse de bouclage ; cela ne fonctionne donc que si le resolver de lhte local est le seul client.
[12/01/08]
DNS et Bind
280
Chapitre 11 Scurit
Tout dabord, voici le chier named.conf du serveur de publication, lcoute sur ladresse IP de linterface rseau :
acl "esclaves" { 192.249.249.1; 192.253.253.1; 192.249.249.9; 192;253.253.9; }; options { directory "/var/named-advertising"; recursion no; fetch-glue no; listen-on { 192.249.249.3; }; pid-file "/var/run/named.advertising.pid"; }; zone "movie.edu" { type master; file "db.movie.edu"; allow-transfer { "esclaves"; }; }; zone "249.249.192.in-addr.arpa" { type master; file "db.192.249.249"; allow-transfer { "esclaves"; }; };
Voici maintenant le chier named.conf du serveur de rsolution, lcoute sur ladresse de bouclage :
options { directory "/var/named-resolving"; listen-on { 127.0.0.1; }; pid-file "/var/run/named.resolving.pid"; use-id-pool yes; }; zone "." { type hint; file "db.cache"; };
Une ACL est inutile pour le serveur de rsolution, puisquil ncoute que linterface de bouclage et quil ne peut recevoir aucune requte en provenance dun autre hte (si le serveur de rsolution est lcoute sur un alias dadresse IP ou sur une autre interface, , on peut utiliser allow-query pour viter que dautres htes nutilisent le serveur). Nous avons dsactiv la rcursivit sur le serveur de publication, mais nous lavons laisse sur le serveur de rsolution. Chaque serveur dispose de son propre chier PID an dviter toute collision entre chiers PID, ainsi que de son propre rpertoire de travail de manire ce que les chiers de dbogage et les chiers de statistiques soient sauvegards dans des endroits diffrents.
[12/01/08]
DNS et Bind
Scuriser un serveur
281
Pour utiliser le serveur de rsolution lcoute sur ladresse de bouclage, le chier resolv.conf de lhte local doit contenir comme premire directive nameserver :
nameserver 127.0.0.1
En BIND 9, on peut mme runir la conguration des deux serveurs en une seule laide des vues :
options { directory "/var/named"; }; acl "interne" { 192.249.249/24; 192.253.253/24; 192.253.254/24; localhost; }; view "interne" { match-clients { "interne"; }; recursion yes; zone "movie.edu" { type master; file "db.movie.edu"; }; zone "249.249.192.in-addr.arpa" { type master; file "db.192.249.249"; }; zone "." { type hint; file "db.cache"; }; }; view "externe" { match-clients { any; }; recursion no; zone "movie.edu" { type master; file "db.movie.edu"; }; zone "249.249.192.in-addr.arpa" { type master; file "db.192.249.249"; }; zone "." { type hint;
[12/01/08]
DNS et Bind
282
file "db.cache"; }; };
Chapitre 11 Scurit
Cette conguration deux vues est simple : lintrieur et lextrieur. La rcursivit est valide dans la vue interne, qui ne concerne que le rseau local. Elle est inhibe dans la vue externe, qui concerne tout le reste. Les zones movie.edu et 249.249.192.in-addr.arpa sont dnies de la mme manire dans les deux vues. On pourrait afner cette conguration, par exemple en dnissant deux zones diffrentes, lune pour la vue interne et lautre pour la vue externe, ce que nous rservons pour la prochaine section.
DNS et pare-feu
Le systme de noms de domaine na pas t conu pour travailler avec un pare-feu de lInternet. Toutefois, la exibilit du DNS et de sa mise en uvre par BIND permettent de congurer le DNS pour quil puisse travailler avec un pare-feu de lInternet. La conguration de BIND pour fonctionner dans un environnement protg par un pare-feu, bien que facile, ncessite toutefois une comprhension complte du DNS et de quelques caractristiques complexes de BIND. Leur description occupe une part importante de ce chapitre. La premire partie dcrit les deux principales familles de pare-feu : le ltrage de paquets et les proxies (passerelles applicatives). Les caractristiques de chaque famille dtermineront une partie de la conguration de BIND. La partie suivante dtaille les deux principales architectures DNS utilises avec un pare-feu, les redirecteurs et les racines internes ; elle dcrit les avantages et inconvnients de chaque mthode. Il sera ensuite question des zones rediriges, nouvelle possibilit qui combine le meilleur des racines internes et des redirecteurs. Enn, on trouvera des dtails sur les espaces de noms spars et la conguration dune machine bastion, hte au cur dun systme bas sur un pare-feu.
Familles de pare-feu
Avant de congurer BIND associ un pare-feu, il est ncessaire de comprendre les fonctions du pare-feu utilis. Ces fonctions inuenceront les choix darchitecture DNS ainsi que leur mise en uvre. Si vous ne connaissez pas les rponses ces questions, partez la recherche dun collgue qui saurait y rpondre ou, encore mieux, travaillez avec ladministrateur du pare-feu lors de la conception darchitecture DNS, an dtre certain que le DNS et le pare-feu coexisteront parfaitement. Cette section dcrit les deux principales familles de pare-feux, dans loptique de leur utilisation avec des serveurs de noms. Pour une tude exhaustive des pare-feu, il faudra consulter louvrage Building Internet Firewalls dElizabeth D. Zwicky, Simon Cooper et D. Brent Chapman (OReilly Media).
Filtrage de paquets
Le pare-feu par ltrage de paquets travaille essentiellement aux niveaux rseau et transport de la pile TCP/IP (couches trois et quatre du modle de rfrence OSI). Il dcide de router un paquet selon des critres tels que le protocole de transport (TCP ou UDP), les adresses dorigine et de destination, et les ports dorigine et de destination (voir la gure 11-1).
[12/01/08]
DNS et Bind
DNS et pare-feu
283
couche application couche prsentation couche session couche transport (port origine et destination) couche rseau (adresse IP origine et destination) couche liaison de donnes couche physique
Proxies
Les proxies (passerelles applicatives) travaillent au niveau application (couche sept du modle de rfrence OSI), donc plusieurs couches au-dessus dun pare-feu par ltrage de paquets (voir la gure 11-2). En quelque sorte, une passerelle comprend le protocole de lapplication, de la mme manire quun serveur spcique cette application. Un proxy FTP par exemple, peut dcider dautoriser ou dinterdire une opration FTP , particulire, telle que RETR (get) ou STOR (put).
couche application (opration de niveau application : STOR, RETR) couche prsentation couche session couche transport couche rseau couche liaison de donnes couche physique
[12/01/08]
DNS et Bind
284
Chapitre 11 Scurit
demande BIND dutiliser le port 53 comme origine des requtes envoyes via toutes les interfaces locales. On peut indiquer une adresse explicite pour limiter les adresses partir desquelles BIND enverra des requtes. Ainsi, sur wormhole.movie.edu, la structure :
options { query-source address 192.249.249.1 port *; };
demande BIND denvoyer toutes ses requtes via linterface 192.249.249.1, et non par 192.253.253.1, et dutiliser dynamiquement les ports numro lev. Lutilisation de query-source avec une adresse gnrique est dfectueuse en BIND 9 avant la version 9.1.0, mais on peut nanmoins demander tout serveur BIND 9 denvoyer toutes ses requtes depuis le port 53 de nimporte quelle adresse.
Le problme est que la plupart des pare-feu de type proxy ne comprennent que les protocoles applicatifs bass sur TCP Le DNS utilise intensivement UDP Par consquent, si on . . utilise un pare-feu de type proxy, les htes internes ne pourront pas facilement communiquer avec les serveurs de noms sur lInternet. Firewall Toolkit, dit par Trusted Information Systems (TIS, maintenant liale de MCAfee), tait un ensemble de proxies pour les protocoles de lInternet tels que Telnet, FTP et HTTP Les produits pare-feu Sidewinder de Secure Computing ou ceux de Symantec . sont eux aussi bass sur des proxies.
[12/01/08]
DNS et Bind
DNS et pare-feu
285
Ces deux catgories de pare-feu sont thoriques. La technologie volue trs rapidement : les nouveaux pare-feu ltrage de paquets peuvent inspecter les donnes de niveau applicatif et les pare-feu bass sur les proxies prennent dsormais en charge le DNS. La classication en deux grandes familles de pare-feu doit surtout servir cerner les possibilits thoriques dun pare-feu ; il faut ensuite regarder les caractristiques particulires de chacun deux.
Conguration viter
Dans la conguration la plus simple, celle dun pare-feu laissant passer la totalit du trac DNS, tout serveur de noms interne peut interroger tout serveur de lInternet, et tout serveur de noms de lInternet peut interroger tout serveur interne. Cest une mauvaise conguration pour au moins deux raisons : Suivi de versions Les auteurs de BIND dcouvrent et corrigent en permanence des bogues de scurit dans BIND. Par consquent, il est important de toujours utiliser une version rcente, et plus particulirement sur les serveurs directement exposs lInternet. Si un unique serveur interne peut communiquer directement avec des serveurs de lInternet, seul ce serveur a besoin dtre mis jour de manire suivie, ce qui est relativement facile. Si tous les serveurs sont exposs, il faut tous les mettre jour rapidement, ce qui est plus contraignant et plus difcile. Vecteur de pntration Mme si on nexcute pas un serveur de noms sur un hte, si le trac DNS est libre travers le pare-feu, un pirate peut utiliser le vecteur du DNS pour attaquer cet hte. Un complice situ lintrieur de la zone peut, par exemple, installer un serveur Telnet lcoute du port du DNS, permettant ainsi au pirate dutiliser telnet, mme si le protocole Telnet est interdit travers le pare-feu. Dans le reste de ce chapitre, nous tenterons de construire un bon exemple.
[12/01/08]
DNS et Bind
286
Chapitre 11 Scurit
Internet
routeur
Rseau interne
Internet
routeur
Rseau interne
serveur de noms
Figure 11-4. Schma dun petit rseau, montrant les serveurs privilgis internes
Les serveurs internes qui peuvent directement interroger des serveurs de lInternet ne requirent aucune conguration spciale. Leur chier dindications initiales contient la liste des serveurs de la racine, ce qui leur permet de rsoudre les noms de lInternet. Par contre, les serveurs de noms internes qui ne peuvent pas interroger directement les serveurs de lInternet ont besoin de retransmettre leurs requtes un intermdiaire. Pour cela, ils utilisent la directive forwarders, prsente au Chapitre 10. La gure 11-5 reprsente une architecture courante : les serveurs de noms internes redirigent leurs requtes un serveur de noms situ sur une machine bastion. Dans le cas de lUniversit du Cinma, un pare-feu protge le rseau des assauts de lInternet. Il sagit dun pare-feu par ltrage de paquets qui autorise le trac DNS entre les serveurs de noms de lInternet et deux des serveurs de noms internes, toystory.movie.edu et wormhole.movie.edu. Voici la conguration mise en place sur les autres serveurs, pour ceux utilisant BIND 8 ou 9 :
options { forwarders { 192.249.249.1; 192.249.249.3; }; forward only; };
[12/01/08]
DNS et Bind
DNS et pare-feu
287
Serveur DNS
Internet
Machine bastion
routeur dentre
3 4
1 2 3 4
Les clients interrogent le serveur interne. Ce serveur interroge le forwarder sur la machine bastion. La machine bastion interroge lInternet et reoit les rponses. La machine bastion rpond au serveur interne. Le serveur interne rpond au client.
Client DNS
Serveur DNS
Client interne
Serveur interne
Problme li la redirection
Malheureusement, la redirection ne fonctionne pas comme escompt lors de la mise en place de sous-rseaux ou lors de la construction dun grand rseau volutif. Pour expliquer le problme, regardons le chier de conguration de zardoz.movie.edu :
options { directory "/var/named"; forwarders { 192.249.249.1; 192.253.253.3; }; }; zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; };
[12/01/08]
DNS et Bind
288
Chapitre 11 Scurit
zardoz.movie.edu est un esclave pour movie.edu et utilise les deux forwarders. Supposons que zardoz.movie.edu reoive une requte concernant fx.movie.edu. En tant que serveur faisant autorit sur movie.edu, zardoz.movie.edu possde les enregistrements NS qui dlguent fx.movie.edu vers les serveurs de noms du sous-rseau. Mais zardoz.movie.edu est aussi congur pour rediriger les requtes auxquelles il ne sait pas rpondre lui-mme vers les forwarders toystory.movie.edu et wormhole.movie.edu. Que se passe-t-il alors ? Il savre que zardoz.movie.edu ne tient pas compte de linformation de dlgation et redirige la requte, par exemple, toystory.movie.edu. toystory.movie.edu reoit donc la requte rcursive et recherche les enregistrements NS de fx.movie.edu pour le compte de zardoz.movie.edu. Ce schma fonctionne mais nest pas efcace, puisque zardoz.movie.edu aurait pu rechercher linformation lui-mme. Imaginons maintenant le cas dun rseau grande chelle, celui dune multinationale, contenant des dizaines de milliers de machines et une centaine de serveurs de noms. Tous les serveurs internes qui ne possdent pas la connectivit directe lInternet, utilisent un ensemble rduit de redirecteurs. Plusieurs problmes peuvent apparatre : Vulnrabilit Si les redirecteurs tombent en panne, les serveurs internes perdent la capacit de rsoudre la fois les noms de lInternet et les noms internes quils nauraient pas dj en mmoire cache, ou sur lesquels il ne feraient pas autorit. Concentration de la charge Les redirecteurs reoivent une norme charge de requtes, en raison du grand nombre de serveurs internes qui les sollicitent, et des requtes rcursives qui induisent un travail important avant de pouvoir rpondre. Rsolution inefficace Imaginons deux serveurs de noms internes faisant respectivement autorit sur west.acmebw.com et east.acmebw.com, situs tous deux sur le mme segment de rseau Boulder, au Colorado. Ils sont tous deux congurs pour utiliser le forwarder de lentreprise Bethesda dans le Maryland7. Si west.acmebw.com doit rsoudre un nom situ dans east.acmebw.com, il redirige la requte au redirecteur de Bethesda. Ce dernier envoie ensuite la requte Boulder au serveur de east.acmebw.com, le voisin du demandeur dorigine. Le serveur east.acmebw.com rpond au forwarder Bethesda, qui renvoie la rponse Boulder. Dans une conguration traditionnelle, le serveur de west.acmebw.com aurait rapidement appris que le serveur east.acmebw.com se trouve juste proximit, en raison du faible temps daller-retour, et il laurait privilgi. Lutilisation de redirecteurs court-circuite lefcacit normale du processus de rsolution. En bref, la redirection fonctionne bien pour des petits rseaux et des espaces de noms simples, mais est totalement inadapte pour les grands rseaux et espaces de noms complexes. Il est donc ncessaire de trouver une alternative.
7.
NdT : Boulder et Bethesda sont respectivement situs au centre ouest et au nord est des tats-Unis, et sont distants de 2700 km (1680 miles).
[12/01/08]
DNS et Bind
DNS et pare-feu
289
Remarquons bien la directive forwarders qui est vide. Dsormais, si zardoz.movie.edu reoit une requte dont le nom se termine par movie.edu mais est hors de la zone movie.edu (le nom est, par exemple, dans fx.movie.edu), il ne tient pas compte des forwarders dnis dans options et envoie des requtes itratives. Avec cette conguration, zardoz.movie.edu continue toutefois solliciter les redirecteurs pour la correspondance inverse. Pour lviter, il suft dajouter quelques structures zone au chier named.conf :
zone "249.249.192.in-addr.arpa" { type stub; masters { 192.249.249.3; }; file "stub.192.249.249"; forwarders {}; }; zone "253.253.192.in-addr.arpa" { type stub; masters { 192.249.249.3; }; file "stub.192.253.253"; forwarders {}; }; zone "254.253.192.in-addr.arpa" { type stub; masters { 192.253.254.2; }; file "stub.192.253.254"; forwarders {}; }; zone "20.254.192.in-addr.arpa" { type stub;
8.
La redirection conditionnelle ne fonctionne toutefois en BIND 9 qu partir de la version 9.2.0, en raison dun bogue.
[12/01/08]
DNS et Bind
290
masters { 192.253.254.2; }; file "stub.192.254.20"; forwarders {}; };
Chapitre 11 Scurit
Ces nouvelles structures zone mritent quelques explications. Tout dabord, les zones pour la correspondance inverse sont congures comme des souches (stubs). De cette manire, le serveur de noms recherche les enregistrements NS de ces zones en demandant priodiquement les serveurs-matres de ces zones. Ensuite, la sous-structure vide forwarders dsactive la redirection pour les noms contenus dans le domaine inverse correspondant. Dsormais, au lieu dinterroger les redirecteurs lors de la recherche de lenregistrement PTR 2.254.253.192.in-addr.arpa, par exemple, zardoz.movie.edu interroge directement lun des serveurs de 254.253.192.in-addr.arpa. De telles structures zone sont ncessaires sur la totalit des serveurs internes, ce qui implique aussi dutiliser une version de BIND postrieure 8.2 ou 9.2.0. Cette conguration est robuste et minimise lexposition des serveurs lInternet : elle utilise une rsolution de noms itrative, robuste et efcace pour la recherche de noms internes, ainsi que des redirecteurs lorsque cela est ncessaire pour rsoudre des noms de lInternet. Si les redirecteurs sont dfaillants ou si la connectivit lInternet est rompue, seule la capacit de rsoudre des noms de lInternet est perdue.
Racine interne
Pour annuler les problmes dchelle avec la redirection, on peut mettre en uvre sa propre racine interne, qui ne servira quaux serveurs internes de lentreprise. La racine interne na dinformations que sur la partie de lespace de noms qui correspond lentreprise. En utilisant une architecture base sur des serveurs de la racine, on bncie dune facilit de croissance de lespace de noms, dune redondance, dune distribution de charge et dune rsolution efcace. On peut avoir autant de racines internes que lInternet (environ 13) alors que cela compromettrait la scurit davoir autant de redirecteurs. De plus, les serveurs de la racine ne sont que rarement contacts : les serveurs de noms nen ont besoin que pour la recherche des zones de plus haut niveau. Avec lutilisation de forwarders, les serveurs pourraient avoir appeler un redirecteur chaque requte. En conclusion, si on envisage davoir un grand espace de noms et de nombreux serveurs internes (ou si on les possde dj), la meilleure solution est celle des serveurs internes de la racine.
[12/01/08]
DNS et Bind
DNS et pare-feu
291
Sur lInternet, ces informations apparaissent dans les chiers de zone des serveurs de edu. Dans le rseau movie.edu, videmment, il ny a pas de serveur de edu ; par consquent, la dlgation vers movie.edu est faite directement partir de la racine. On peut constater quil napparat pas de dlgation vers fx.movie.edu ou dautres sousdomaines de movie.edu. En effet, les serveurs de movie.edu savent quels serveurs font autorit pour chaque sous-rseau, et toute requte concernant un sous-domaine fait obligatoirement entrer en jeu les serveurs de movie.edu ; la dlgation partir de la racine est donc inutile.
Dlguer in-addr.arpa
partir de la racine interne, il faut aussi dlguer lautorit vers les zones in-addr.arpa, correspondant aux rseaux de lUniversit du Cinma :
249.249.192.in-addr.arpa. 86400 86400 86400 253.253.192.in-addr.arpa. 86400 86400 86400 254.253.192.in-addr.arpa. 86400 86400 86400 20.254.192.in-addr.arpa. 86400 86400 86400 IN IN IN IN IN IN IN IN IN IN IN IN NS NS NS NS NS NS NS NS NS NS NS NS toystory.movie.edu. wormhole.movie.edu. zardoz.movie.edu. toystory.movie.edu. wormhole.movie.edu. zardoz.movie.edu. bladerunner.fx.movie.edu. outland.fx.movie.edu. alien.fx.movie.edu. bladerunner.fx.movie.edu. outland.fx.movie.edu. alien.fx.movie.edu.
On constate quil ny a pas de dlgation pour les zones 254.253.192.in-addr.arpa et 20.254.192.in-addr.arpa, bien quelles correspondent la zone fx.movie.edu. Cette dlgation nest pas ncessaire car elle est dj effective vers la zone-parente movie.edu. Les serveurs de movie.edu dlguent fx.movie.edu et donc, par transitivit, la racine dlgue fx.movie.edu. Par contre, comme aucune autre zone de in-addr.arpa nest parente de 254.253.192.in-addr.arpa ou de 20.254.192.in-addr.arpa, il faut dlguer ces deux zones partir de la racine. Il est inutile dajouter des enregistrements de ressource pour les trois serveurs bladerunner.movie.edu, outland.movie.edu et alien.movie.edu, car un serveur de noms distant peut trouver leur adresse en suivant la dlgation partir de movie.edu.
[12/01/08]
DNS et Bind
292
Chapitre 11 Scurit
Le chier db.root
Il ne reste maintenant qu ajouter un enregistrement SOA pour la zone racine, ainsi que des enregistrements NS pour les serveurs de la racine interne :
$TTL 1d . IN SOA rainman.movie.edu. hostmaster.movie.edu. ( 1 ; numro de srie 3h ; rafrachissement aprs 3 heures 1h ; nouvel essai aprs 1 heure 1w ; expiration aprs 1 semaine 1h ) ; TTL rponse ngative d1 heure IN NS rainman.movie.edu. IN NS awakenings.movie.edu. rainman.movie.edu. IN A 192.249.249.254 awakenings.movie.edu. IN A 192.253.253.254
rainman.movie.edu et awakenings.movie.edu sont les htes qui hbergent la racine interne. On nutilise pas la machine bastion comme racine interne, en raison du risque de corruption de cette racine par pollution du cache par des donnes externes. Pour nir, voici le chier db.root complet (par convention, nous appelons db.root le chier de la zone racine) :
$TTL 1d . IN SOA rainman.movie.edu. hostmaster.movie.edu. ( 1 ; numro de srie 3h ; rafrachissement aprs 3 heures 1h ; nouvel essai aprs 1 heure 1w ; expiration aprs 1 semaine 1h ) ; TTL rponse ngative d1 heure IN NS rainman.movie.edu. IN NS awakenings.movie.edu. rainman.movie.edu. IN A 192.249.249.254 awakenings.movie.edu. IN A 192.253.253.254 movie.edu. IN NS toystory.movie.edu. IN NS wormhole.movie.edu. IN NS zardoz.movie.edu. toystory.movie.edu. wormhole.movie.edu. zardoz.movie.edu. IN IN IN IN IN A A A A A 192.249.249.3 192.249.249.1 192.253.253.1 192.249.249.9 192.253.253.9
[12/01/08]
DNS et Bind
DNS et pare-feu
253.253.192.in-addr.arpa. IN IN IN 254.253.192.in-addr.arpa. IN IN IN 20.254.192.in-addr.arpa. IN IN IN NS NS NS NS NS NS NS NS NS toystory.movie.edu. wormhole.movie.edu. zardoz.movie.edu. bladerunner.fx.movie.edu. outland.fx.movie.edu. alien.fx.movie.edu. bladerunner.fx.movie.edu. outland.fx.movie.edu. alien.fx.movie.edu.
293
Cela remplace une structure zone de type hint, car un serveur de la racine na pas besoin de chier dindications initiales lui permettant dapprendre o sont les autres serveurs de la racine ; il peut trouver cette information dans le chier db.root. Cela veut-il dire que chaque serveur de la racine est un serveur primaire de la zone racine ? La rponse est non, car la zone racine est similaire toutes les zones, ce qui fait quon aura probablement un serveur primaire, tous les autres tant des esclaves. Si on na pas sufsamment de machines inoccupes pour y installer un serveur de la racine interne, on peut le faire sur tout serveur interne existant, cest--dire autre que la machine bastion et non situ lextrieur par rapport au pare-feu. En effet, un serveur unique peut servir de racine interne et de serveur faisant autorit sur toute zone quon lui ferait charger. Souvenons-nous quun serveur unique peut faire autorit sur de trs trs nombreuses zones, dont la zone racine.
Les serveurs utilisant ce chier pourront rsoudre eux-mmes les noms de movie.edu et des domaines de in-addr.arpa correspondants, mais pas ceux hors de ces domaines.
[12/01/08]
DNS et Bind
294
Chapitre 11 Scurit
Lenregistrement MX *.edu est ncessaire, en plus de lenregistrement *, en raison des restrictions sur les mta-enregistrements exposes la section Mta-caractres du Chapitre 17 (page 461). Puisquil y a, dans la zone, des informations explicites concernant movie.edu, le premier enregistrement MX ninclura, ni movie.edu, ni aucun autre sous-domaine de edu. Il faut donc un autre mta-enregistrement explicite pour edu an de trouver une correspondance pour tous les sous-domaines de edu. Les htes internes de movie.edu enverront les courriers destination de lInternet via postmanrings2x.movie.edu. Le premier mta-enregistrement MX sapplique au courrier envoy nic.ddn.mil :
% nslookup -type=mx nic.ddn.mil. Correspond lenregistrement MX *
[12/01/08]
DNS et Bind
DNS et pare-feu
Server: rainman.movie.edu Address: 192.249.249.19 nic.ddn.mil preference = 5, mail exchanger = postmanrings2x.movie.edu postmanrings2x.movie.edu internet address = 192.249.249.20
295
vangogh.cs.berkeley.edu preference = 10, mail exchanger = postmanrings2x.movie.edu postmanrings2x.movie.edu internet address = 192.249.249.20
Une fois que le courrier atteint la machine bastion postmanrings2x.movie.edu, le routeur de messagerie de postmanrings2x.movie.edu recherche lui-mme les enregistrements MX des adresses de destination. Puisque postmanrings2x.movie.edu rsout le nom de destination en utilisant lespace des noms de lInternet et non pas lespace des noms internes, il trouve les vrais enregistrements MX et peut livrer le courrier. Aucune reconguration de sendmail nest ncessaire.
Dsormais, tous les courriers adresss aux sous-domaines de uk seront retransmis la machine bastion holygrail.movie.ac.uk, qui est cense tre plus habile pour faire suivre le courrier vers les diffrentes destinations du Royaume Uni.
[12/01/08]
DNS et Bind
296
Chapitre 11 Scurit
ces htes auront sans doute besoin dhberger des serveurs proxy pour permettre aux autres htes internes daccder des services situs sur lInternet. Dans les autres rseaux, toutefois, le pare-feu Internet ou les logiciels de ce type peuvent exiger que tous les htes internes soient capables de rsoudre les noms de lespace des noms Internet. Pour ces rseaux, une architecture racine interne ne fonctionnera pas.
; ; ; ; ;
IN IN IN IN IN
NS NS A MX MX
; le serveur de nom du FAI ; est un esclave de movie.edu 200.1.4.4 ; pour ceux qui tentent daccder http://movie.edu 10 postmanrings2x.movie.edu. 100 mail.isp.net.
[12/01/08]
DNS et Bind
DNS et pare-feu
297
www
IN
A A MX MX
200.1.4.4 200.1.4.2 10 postmanrings2x.movie.edu. 100 mail.isp.net. traite le courrier adress ns.movie.edu 200.1.4.3 10 postmanrings2x.movie.edu. 100 mail.isp.net. 10 postmanrings2x.movie.edu. 100 mail.isp.net.
postmanrings2x IN IN IN
; postmanrings2x.movie.edu ns IN A IN MX IN MX * IN IN MX MX
Aucun sous-rseau de movie.edu, ni aucune information de dlgation vers les serveurs de noms de ces sous-domaines ne sont mentionns. Ces informations ne sont pas ncessaires, puisquil ny a rien dans ces sous-domaines qui puisse intresser lInternet et le courrier entrant adress aux htes du sous-domaine est intercept grce au mta-caractre. Le chier db.200.1.4, dont on a besoin sur lInternet pour la rsolution inverse des adresses de movie.edu, contient :
$TTL 1d @ IN SOA ns.movie.edu. 1 3h 1h 1w 1h ) ns.movie.edu. ns1.isp.net. hostmaster.movie.edu. ( numro de srie rafrachissement aprs 3 heures nouvel essai aprs 1 heure expiration aprs 1 semaine TTL rponse ngative d1 heure
; ; ; ; ;
IN IN 2 3 4 IN IN IN
Il faut sassurer que les resolvers de la machine bastion, du serveur de messagerie et du serveur web ne sont pas congurs pour utiliser ns.movie.edu. Puisque ce dernier ne peut pas voir la zone interne relle movie.edu, son utilisation rendrait les trois machines cites incapables de faire correspondre les noms internes aux adresses et les adresses internes aux noms.
[12/01/08]
DNS et Bind
298
Chapitre 11 Scurit
les traces de connexion, pour livrer le courrier entrant, etc. Par contre, en congurant la machine bastion pour quelle utilise la racine interne, elle ne verra pas lespace de noms de lInternet, dont elle a pourtant besoin pour agir comme un pare-feu. Quelle option choisir ? Si on a des serveurs internes qui peuvent rsoudre la fois des noms internes et des noms de lInternet, en utilisant des zones rediriges, on peut simplement congurer le resolver de la machine bastion pour quil les interroge. Mais si on utilise la redirection en interne, et selon le type de pare-feu utilis, on peut aussi avoir besoin dinstaller un redirecteur sur la machine bastion elle-mme. Si le pare-feu ne laisse pas passer le trac DNS, il faut au moins, sur la machine bastion, un serveur cache congur avec les serveurs de la racine de lInternet, an que les serveurs internes aient un serveur vers lequel rediriger les requtes non rsolues. Si les serveurs internes ne grent pas les zones rediriges, le serveur sur la machine bastion doit tre congur comme un esclave ou une source (stub) pour movie.edu et toutes les zones in-addr.arpa pour lesquelles il doit rsoudre des adresses. Ainsi, sil reoit une requte pour un nom de movie.edu, il utilise les donnes locales sur lesquelles il fait autorit pour rsoudre le nom (cas dune zone-esclave) ou suivre les enregistrements NS internes jusquaux serveurs de noms faisant autorit (cas dune zone source) (si les serveurs internes acceptent les zones rediriges et sont correctement congurs, le serveur de noms sur la machine bastion ne recevra jamais de requte de noms situs dans movie.edu). Si le nom est dans un sous-domaine dlgu de movie.edu, le serveur sur la machine bastion suit les enregistrements NS situs dans les donnes de la zone movie.edu ou reus dun serveur de movie.edu pour interroger un serveur interne au sujet du nom. Par consquent, il na pas besoin dtre congur en esclave de chacun des sous-domaines de movie.edu, tel que fx.movie.edu, mais uniquement pour le domaine de plus haut niveau (voir la gure 11-6).
Pare-feu
Internet
machine bastion serveur primaire cach de movie.edu machine externe esclave cach de movie.edu
machine interne
Lgende
Rseau ouvert
machine de FAI
[12/01/08]
DNS et Bind
DNS et pare-feu
Le chier named.conf de la machine bastion contient :
options { directory "/var/named"; }; zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; }; zone "249.249.192.in-addr.arpa" { type slave; masters { 192.249.249.3; }; file "bak.192.249.249"; }; zone "253.253.192.in-addr.arpa" { type slave; masters { 192.249.249.3; }; file "bak.192.253.253"; }; zone "254.253.192.in-addr.arpa" { type slave; masters { 192.253.254.2; }; file "bak.192.253.254"; }; zone "20.254.192.in-addr.arpa" { type slave; masters { 192.253.254.2; }; file "bak.192.254.20"; }; zone "." { type hint; file "db.cache"; };
299
DNS et Bind
300
Chapitre 11 Scurit
Il ne faut pas oublier dincorporer ladresse de bouclage dans la liste, sinon le propre resolver de la machine bastion ne peut pas obtenir de rponse du serveur local !
Conguration complte
Enn, il est ncessaire dappliquer les prcautions, dont nous avons parl, la machine bastion, et en particulier :
restriction sur les transferts de zone ; utilisation des ID alatoires de message (depuis BIND 8.2 mais pas en BIND 9) ; excution ventuelle de BIND par un utilisateur sans privilge et via chroot.
Le chier named.conf complet devrait ressembler ceci :
acl "interne" { 127/8; 192.249.249/24; 192.253.253/24; 192.253.254/24; 192.254.20/24; }; options { directory "/var/named"; allow-query { "interne"; }; allow-transfer { none; }; }; zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; }; zone "249.249.192.in-addr.arpa" { type slave; masters { 192.249.249.3; }; file "bak.192.249.249"; }; zone "253.253.192.in-addr.arpa" { type slave; masters { 192.249.249.3; }; file "bak.192.253.253"; }; zone "254.253.192.in-addr.arpa" { type slave; masters { 192.253.254.2; }; file "bak.192.253.254"; }; zone "20.254.192.in-addr.arpa" { type slave; masters { 192.253.254.2; }; file "bak.192.254.20"; };
[12/01/08]
DNS et Bind
DNS et pare-feu
zone "." { type hint; file "db.cache"; };
301
[12/01/08]
DNS et Bind
302
masters { 192.253.254.2; }; file "bak.192.254.20"; }; zone "." { type hint; file "db.cache"; }; }; acl "ns1.isp.net" { 199.11.28.12; }; view "externe" { match-clients { any; }; recursion no; zone "movie.edu" { type master; file "db.movie.edu.external"; allow-transfer { "ns1.isp.net"; }; }; zone "4.1.200.in-addr.arpa" { type master; file "db.200.1.4"; allow-transfer { "ns1.isp.net"; }; }; zone "." { type hint; file "db.cache"; }; };
Chapitre 11 Scurit
Les vues interne et externe prsentent deux aspects diffrents de movie.edu : lune est charge partir du serveur primaire de movie.edu interne et lautre partir des chiers de zone db.movie.edu.external. Sil y avait plus de zones dans la vue externe, on aurait probablement cr un sous-rpertoire diffrent pour les chiers des zones externes de celui des chiers de la zone interne.
DNS et Bind
303
RFC 4033, 4034 et 4035, utilisent un chiffrement cl publique pour permettre aux administrateurs de zone de signer lectroniquement leurs donnes, prouvant ainsi leur authenticit.
Nous allons dcrire les extensions de scurit du DNS dans leur forme actuelle, telles quelles sont dnies dans les RFC 4033 4035. Ces RFC mettent en vidence de profondes volutions dans DNSSEC depuis sa version initiale, dcrite dans la RFC 2065 (ainsi que dans la prcdente version de cet ouvrage). Toutefois, le groupe de travail DNSEXT de lIETF travaille encore sur DNSSEC et peut le faire voluer avant quil ne devienne un standard. BIND 8.2 fournit un dbut de mise en uvre de DNSSEC9, mais DNSSEC nest pas rellement utilisable avant BIND 9 ; de plus, il faut attendre la version 9.3.0 pour pouvoir lutiliser tel quil est dcrit dans cette section (et dans les RFC les plus rcents). Par consquent, nous utiliserons BIND 9.3.2 dans les exemples. Si on envisage dutiliser DNSSEC, il ne faudrait pas utiliser de version antrieure cette dernire.
[12/01/08]
DNS et Bind
304
Chapitre 11 Scurit
lauthentication (et non pas pour la condentialit) ne ncessite pas le chiffrement de la totalit du message. On commence donc par passer le message dans une fonction de hachage non inversible, puis on chiffre la valeur obtenue. On attache ensuite la valeur de hachage chiffre, quon appelle signature lectronique, au message quon veut authentier. Le destinataire authentie le message en dchiffrant la signature lectronique puis en passant le message dans la fonction de hachage non inversible. Si la valeur obtenue est gale la signature lectronique dchiffre, le message est authentique. Nous appelons signature le processus de calcul de la valeur de hachage, et vrication le processus de validation de la signature lectronique. Ils sont tous deux dcrits dans la gure 11-7.
Signature
message
fonction de hachage
signature numrique
message sign
Vrification
message sign
message
signature numrique
dchiffrement avec cl publique
valeur de hachage 1
fonction de hachage
DNS et Bind
305
Enregistrement DNSKEY
Avec les extensions de scurit du DNS, chaque zone signe dispose dune paire de cls. La cl prive est stocke dans un endroit sr, en gnral dans un chier sur le serveur de noms primaire. La cl publique de la zone est annonce sous la forme dun enregistrement de ressource, lenregistrement DNSKEY, li au nom de la zone. La version prcdente de DNSSEC comportait un enregistrement KEY usage gnral : on pouvait lutiliser pour mmoriser diffrents types de cl de chiffrement, et pas seulement les cls publiques utilises par DNSSEC. Toutefois, la nouvelle version de DNSSEC nutilise que lenregistrement DNSKEY pour stocker la cl publique dune zone. Lenregistrement DNSKEY se prsente sous la forme suivante :
movie.edu. IN DNSKEY 257 3 5 AQPWA4BRyjB3eqYNy/oykeGcSXjl+HQK9CciAxJfMcS1vEuwz9c +QG7s EJnQuH5B9i5o/ja+DVitY3jpXNa12mEn
Le nom de lenregistrement est celui de la zone laquelle est rattache la cl. Le premier champ suivant le type denregistrement, 257 ici, est un ensemble, sur deux octets, de deux drapeaux de un bit chacun :
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | |ZK | |SEP| +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
Les bits 0 6 et les bits 8 14 sont rservs et doivent tre zro. Le bit 7 dcrit le type de la cl : 0 Ce nest pas une cl de zone. Elle ne peut pas tre utilise pour vrier des donnes de zone signes. 1 Cest une cl de zone. Le nom associ lenregistrement DNSKEY est le nom de la zone signe. Le dernier bit (15) est le drapeau du point dentre de scurit (Secure Entry Point ou SEP), dont lutilisation exprimentale est dcrite dans la RFC 3757. Nous le dtaillerons plus loin dans ce chapitre. Dans lenregistrement DNSKEY dcrit plus haut, le champ des drapeaux (le premier champ aprs le type) indique que cette cl est celle de la zone movie.edu. Le champ suivant, de valeur 3, est le champ protocole. Cest un hritage de la prcdente version de DNSSEC, dans laquelle lenregistrement KEY pouvait servir diffrentes fonctions. Dans la version actuelle de DNSSEC, toutefois, lenregistrement DNSKEY ne sert qu DNSSEC, aussi ce champ est-il toujours gal 3, une valeur qui, historiquement, dsigne une cl DNSSEC. Le champ suivant, de valeur 5 ici, est le champ algorithme. DNSSEC peut fonctionner avec plusieurs algorithmes de chiffrement cl publique, ce qui ncessite de signaler lalgorithme utilis pour signer la zone :
[12/01/08]
DNS et Bind
306
0 Valeur rserve. 1
Chapitre 11 Scurit
RSA/MD5. Lutilisation de RSA/MD5 est dconseille, essentiellement en raison de la dcouverte rcente dimperfections dans lalgorithme de hachage. 2 Dife-Hellman. Dife-Hellman ne peut pas servir la signature de zones, mais il peut servir dautres objets de DNSSEC. 3 DSA/SHA-1. Lutilisation de DSA/SHA-1 (en plus de tout algorithme obligatoire) est optionnelle. 4 Valeur rserve pour un algorithme cl publique bas sur les courbes elliptiques. 5 RSA/SHA-1. Lutilisation de RSA/SHA-1 est obligatoire. 253254 Valeurs rserves une utilisation prive par la RFC 4034. 255 Valeur rserve. Dans nos exemples, nous utiliserons des cls RSA/SHA-1. Le dernier champ est la cl publique elle-mme, code en base 64. DNSKEY accepte des cls de diffrentes tailles, comme nous lavons vu rapidement lorsque nous avons gnr la cl publique de movie.edu. Plus la cl publique est longue, plus elle est sre (il est plus difcile de dcouvrir la cl prive associe), mais plus il est long de signer les donnes dune zone avec la cl prive et de les vrier avec la cl publique, et plus lenregistrement DNSKEY et la signature rsultante sont longs.
Enregistrement RRSIG
Lenregistrement DNSKEY stocke la cl publique. Il faut aussi un enregistrement pour mmoriser la signature lie la cl prive, lenregistrement RRSIG. Cet enregistrement mmorise la signature numrique dans un RRset. Un RRset (Resource Record set) est un ensemble denregistrements de ressource de mme nom, classe et type. Lensemble des enregistrements dadresse de wormhole.movie.edu, par exemple, forment un RRset. De mme, lensemble des enregistrements MX de movie.edu forment un RRset. An de gagner du temps, on signe un RRset plutt que des enregistrements individuels. En effet, il ny a aucun moyen de rechercher un seul des enregistrements dadresse de wormhole.movie.edu : un serveur renvoie toujours lensemble. Il ny a donc aucun intrt signer chaque enregistrement sparment. Voici lenregistrement RRSIG qui couvre les enregistrements dadresses de wormhole.movie.edu :
[12/01/08]
DNS et Bind
307
Le nom de lenregistrement est wormhole.movie.edu, le mme nom que celui des enregistrements signs. Le premier champ aprs le champ type, ici de valeur A, est le type couvert. Il indique quels enregistrements de wormhole.movie.edu sont signs (ici les enregistrements dadresse). Il devrait y avoir un enregistrement SIG spcique pour chaque type denregistrement associ wormhole.movie.edu. Le second champ aprs le champ type, ici de valeur 5, est la rfrence de lalgorithme. Les valeurs sont les mmes que celles utilises dans lenregistrement DNSKEY ; 5 signie donc RSA/SHA-1. Si on gnre une cl RSA/SHA-1 et quon lutilise pour signer une zone, on obtient naturellement des signatures RSA/SHA-1. Si on signe une zone avec plusieurs types de cl, par exemple RSA/SHA-1 et DSA, on obtient deux enregistrements RRSIG pour chaque RRset couvrir, un avec un numro dalgorithme 5 (RSA/SHA1) et un avec un numro dalgorithme 3 (DSA)10. Le troisime champ indique le nombre de termes dans le nom de lenregistrement. wormhole.movie.edu contient trois termes, le champ est donc ici 3. Le nombre de termes et la valeur du champ peuvent diffrer lorsque lenregistrement RRSIG couvre un enregistrement gnrique. Nous ne dcrirons pas les nuances des enregistrements gnriques dans les zones signes. Le quatrime champ contient le TTL dorigine des enregistrements de lensemble couvert (tous les enregistrements dun RRset sont censs avoir le mme TTL). Le TTL doit tre mmoris ici car un serveur mettant en mmoire cache le RRset couvert par cet enregistrement RRSIG dcrmentera le TTL des enregistrements mmoriss. Or, si on ne connat pas le TTL dorigine dun enregistrement, il nest pas possible de reconstruire lenregistrement dadresse dorigine et de le fournir la fonction de hachage pour vrier la signature numrique. Les deux champs suivants contiennent, respectivement, la date dchance de la signature et sa date dorigine. Ils sont stocks sous la forme dun entier non sign et reprsentent la dure coule, en secondes, depuis lorigine dUnix (Epoch), cest--dire depuis le 1er janvier 1970. Dans un enregistrement RRSIG, ils sont prsents sous la forme AAAAMMJJHHMMSS (dans lexemple, la date dchance est le 19 fvrier 2006 peu aprs 23h36). La date dorigine de la signature est habituellement celle de lexcution du programme de signature de la zone. La date dchance est choisie ce moment-l. Aprs lchance de la signature, lenregistrement RRSIG nest plus utilisable pour vrier le RRset. Cela signie quil est ncessaire de re-signer priodiquement une zone. Cette opration est heureusement plus rapide que la mise en place initiale. Lenregistrement suivant, ici de valeur 3674, est lidentiant de cl. Sa valeur est drive de la cl publique associe la cl prive qui a servi signer la zone. Si la zone possde
10. On peut signer une zone avec deux cls dalgorithmes diffrents de manire ce que ceux dont les logiciels prfrent DSA puissent lutiliser pour vrier les donnes et que ceux qui ne fonctionnent quavec RSA-SHA-1 puissent aussi fonctionner.
[12/01/08]
DNS et Bind
308
Chapitre 11 Scurit
plus dune cl publique (ce qui sera probablement le cas), le logiciel de vrication DNSSEC utilise lidentiant pour dterminer la cl utiliser durant la vrication. Le huitime champ, ici de valeur movie.edu., contient le nom du signataire. Cest le nom de la cl publique que doit utiliser le vricateur pour tester la signature. Associ lidentiant de cl, il dsigne lenregistrement DNSKEY utiliser. Le nom du signataire est le nom de la zone dans laquelle se trouvent les enregistrements signs. Le dernier champ est celui de la signature. Il contient la signature lectronique, par la cl prive de la zone, sur les enregistrements signs ainsi que sur la partie droite de lenregistrement RRSIG lui-mme (le champ signature exclu). Cette signature est code en base 64.
Enregistrement NSEC
DNSSEC dnit un nouvel enregistrement de ressource, lenregistrement NSEC. Que se passe-t-il si on recherche un nom qui nexiste pas, dans une zone scurise ? Si la zone nest pas signe, le serveur renvoie simplement le code no such domain name qui indique que ce nom nexiste pas. Mais comment peut-on signer un code de rponse ? Si on signe la totalit du message de rponse, il sera difcile mettre en mmoire cache. Il faut donc disposer dun lment supplmentaire qui permette de prouver quun nom nexiste pas. Lenregistrement NSEC rsout ce problme de signature de rponse ngative, en annonant le nom qui suit un autre nom dans une zone. Ce systme est bas sur un classement pralable des noms, do le nom du type denregistrement NSEC pour Next SECure (nom scuris suivant). Mais la notion de noms conscutifs sous entend un ordre canonique des noms dans la zone. Pour classer les noms dune zone, on commence par traiter les termes de droite des noms, puis viennent ensuite les termes immdiatement gauche et ainsi de suite. Lordre, qui ne tient pas compte de la casse des caractres, est celui du dictionnaire : les chiffres prcdent les lettres et les termes inexistants prcdent les chiffres. Ainsi, movie.edu prcde 0.movie.edu. Pour movie.edu, on obtient le classement suivant :
movie.edu carrie.movie.edu cujo.movie.edu fx.movie.edu bladerunner.fx.movie.edu outland.fx.movie.edu horror.movie.edu localhost.movie.edu mi.movie.edu misery.movie.edu monsters-inc.movie.edu shining.movie.edu shrek.movie.edu toys.movie.edu toystory.movie.edu
[12/01/08]
DNS et Bind
309
Notons que tout comme movie.edu prcde carrie.movie.edu, fx.movie.edu prcde bladerunner.fx.movie.edu. Une fois que la zone est classe, les enregistrements NSEC prennent tout leur sens. Voici le premier, celui de movie.edu :
movie.edu. DNSKEY NSEC carrie.movie.edu. NS SOA MX RRSIG NSEC
Cet enregistrement indique que le nom suivant movie.edu est carrie.movie.edu, ce qui est conforme la liste ordonne. Il indique aussi que movie.edu dispose denregistrements NS, dun enregistrement SOA, denregistrements MX, dun enregistrement RRSIG, dun enregistrement NSEC et dun enregistrement DNSKEY. Le dernier enregistrement NSEC dune zone est spcial ; il referme la boucle, en dsignant le premier enregistrement de la zone :
wormhole.movie.edu. NSEC movie.edu. A RRSIG NSEC
Ainsi, pour indiquer que wormhole.movie.edu est le dernier enregistrement de la zone, il suft dindiquer que le nom suivant est movie.edu, le premier de la zone. Nous dirons quil sagit dune logique circulaire. Revenons la question dorigine : comment un enregistrement NSEC fournit-il lauthentication dune rponse ngative ? Si on recherche www.movie.edu, on reoit en retour lenregistrement NSEC de wormhole.movie.edu, ce qui indique que www.movie.edu nexiste pas, car il ny a pas de nom aprs wormhole.movie.edu. De mme, si on recherche les enregistrements TXT de movie.edu, on reoit le premier enregistrement NSEC montr dans cette section, qui indique quil ny a pas denregistrement TXT pour movie.edu, mais uniquement des enregistrements NS, SOA, MX, RRSIG, NSEC et DNSKEY. Un enregistrement RRSIG couvrant lenregistrement NSEC accompagne la rponse, authentiant linexistence du nom ou du type recherch. Il est important quun enregistrement NSEC indique prcisment ce qui nexiste pas dans la zone. Un message qui dirait simplement nexiste pas pourrait tre intercept et rejou pour annoncer quun nom ou un type denregistrement nexiste pas alors quil existe en ralit. Rassurons ceux qui voudraient mettre en place un tel mcanisme : BIND fournit un outil pour ajouter automatiquement des enregistrements NSEC et RRSIG. On peut aussi sinquiter des informations fournies aux pirates par les enregistrements NSEC. Un pirate peut commencer par rechercher lenregistrement NSEC associ au nom de zone, an de dcouvrir la liste des types associs au domaine ainsi que le nom suivant. Puis il peut rechercher lenregistrement NSEC associ au suivant, et ainsi de suite, pour btir la liste de tous les noms dune zone. Cest malheureusement un effet de bord ngatif. Mais on peut toujours se dire que notre zone est sre, mais publique .
[12/01/08]
DNS et Bind
310
Chapitre 11 Scurit
86400
RRSIG
DS signie Delegation Signer (signature de dlgation). Lenregistrement DS annonce la cl publique autorise signer les donnes de la zone movie.edu. Le premier champ aprs le type est ltiquette de cl, comme dans un enregistrement RRSIG, qui aide identier lenregistrement DNSKEY autoris effectuer les signatures. Le second champ dsigne lalgorithme, comme dans les enregistrements DNSKEY et RRSIG, et il est aussi utilis pour identier lenregistrement DNSKEY appropri dans le cas de plusieurs algorithmes de chiffrement. Le troisime champ indique le type dempreinte (digest type) que le vricateur doit utiliser pour vrier cette empreinte (le dernier champ). La seule valeur actuellement admise est 1, ce qui dsigne SHA-1. Lempreinte est une valeur de hachage non inversible sur 20 octets, code en hexadcimal, de lenregistrements DNSKEY12. Un enregistrement RRSIG accompagne lenregistrement DS, montrant que ladministrateur de edu a sign lenregistrement DS de movie.edu, attestant ainsi sa valeur.
11. Actuellement, seule la zone suprieure sudoise, se, signe sa zone et peut signer des enregistrements DNSKEY. 12. Une source (daccord, lun de nos relecteurs, mais source sonne mieux) nous a signal quune version prochaine de BIND utilisera SHA-256, an de contourner une faiblesse de SHA-1.
[12/01/08]
DNS et Bind
311
En suivant la rfrence partir des serveurs de edu jusquaux serveurs de movie.edu et en vriant lenregistrements DNSKEY de movie.edu, un serveur vrie tout dabord lenregistrement RRSIG couvrant lenregistrement DS. Aprs cette vrication, le serveur recherche les enregistrements DNSKEY associs movie.edu et en slectionne un correspondant lidentiant et lalgorithme indiqus dans lenregistrement DS. Une fois lenregistrement DNSKEY adquat trouv, le serveur parcourt lenregistrement jusqu lempreinte et vrie quelle est identique celle afche dans lenregistrement DS. Dans lafrmative, lenregistrement DNSKEY est authentique ; le serveur peut lutiliser pour vrier les enregistrements RRSIG couvrant le RRset DNSKEY ou tout autre RRset sign par la cl prive correspondante. Que se passe-t-il si le serveur primaire de la zone edu est pirat ? Lenregistrement DNSKEY de la zone edu est certi par signature via un enregistrement DS dans la zone racine ; il nest donc pas facile remplacer et il en est de mme pour les donnes signes par lui. Et la zone racine ? Sa cl publique est connue de tous et est congure sur chaque serveur de noms qui supporte DNSSEC. La cl publique de la zone racine sera enregistre sur chaque serveur de noms lorsque DNSSEC sera totalement dploy. Mais pour le moment, ni la zone racine ni la zone edu ne sont signes, et aucune na de paire de cls. En attendant le dploiement complet de DNSSEC, il est toutefois possible de lutiliser au coup par coup.
lots scuriss
On souhaite scuriser la zone de lUniversit du Cinma laide de DNSSEC. On commence donc par signer la zone movie.edu mais edu ne signe pas denregistrement DNSKEY, puisque edu na pas encore scuris sa zone et na pas de paire de cls. Comment les serveurs de noms de lInternet peuvent-ils alors vrier les informations ? Comment les serveurs de la zone peuvent-ils vrier leur propres donnes ? La structure trusted-keys de BIND 9 permet de dnir la cl publique dune zone particulire dans le chier named.conf. Voici la structure trusted-keys pour movie.edu :
trusted-keys { movie.edu. 257 3 5 "AQPWA4BRyjB3eqYNy/oykeGcSXjl+HQK9CciAxJfMcS1vEuwz9c +QG7s EJnQuH5B9i5o/ja+DVitY3jpXNa12mEn"; };
Il sagit de lenregistrement DNSKEY, sans les champs classe et type ; la cl est entre guillemets. Le nom de la zone peut ventuellement tre plac entre guillemets. Si movie.edu dispose de plus dune cl publique (par exemple une cl DSA), on peut aussi la dclarer :
trusted-keys { movie.edu. 257 3 5 "AQPWA4BRyjB3eqYNy/oykeGcSXjl+HQK9CciAxJfMcS1vEuwz9c +QG7s EJnQuH5B9i5o/ja+DVitY3jpXNa12mEn"; movie.edu. 257 3 3 "AMnD8GXACuJ5GVnfCJWmRydg2A6JptSm6tjH7QoL81SfBY/kcz1Nbe Hh z4l9AT1GG2kAZjGLjH07BZHY+joz6iYMPRCDaPOIt9LO+SRfBNZg62P4 aSPT5zVQPahDIMZmTIvv O7FV6IaTV+cQiKQl6noro8uTk4asCADrAHw0 iVjzjaYpoFF5AsB0cJU18fzDiCNBUb0VqE1mKFuRA/K 1KyxM2vJ3U7IS to0IgACiCfHkYK5r3qFbMvF1GrjyVwfwCC4NcMsqEXIT8IEI/YYIgFt4 Ennh"; };
[12/01/08]
DNS et Bind
312
Chapitre 11 Scurit
Cette structure trusted-keys permet un serveur BIND 9 de vrier tous les enregistrements de la zone movie.edu. Le serveur distant peut aussi vrier tous les enregistrements des zones-enfants, comme fx.movie.edu, condition que leur enregistrement DNSKEY soit certi par un enregistrement DS et accompagn dun enregistrement RRSIG dans movie.edu. Pour rsumer, movie.edu devient un refuge de conance, au dessous duquel un serveur de noms distant peut vrier toute donne de zone signe.
DO, AD et CD
Nous avons vu un exemple pour chacun des quatre nouveaux enregistrements de DNSSEC et nous connaissons maintenant leur longueur. Mais la longueur classique dun message DNS bas sur UDP nest que de 512 octets. Lincorporation de tous ces RRSIG devrait conduire des rponses tronques. Pour faire face ce problme, DNSSEC requiert EDNS0, que nous avons prsent au Chapitre 10. EDNS0 permet lutilisation de messages DNS bass sur UDP de 4096 octets. EDNS0 utilise aussi un nouveau drapeau, DO (DNSSEC OK), pour signaler quun quipement lanant une requte supporte DNSSEC et souhaite obtenir les enregistrements relatifs DNSSEC dans la rponse. Grce au drapeau DO, un serveur nincorporera pas inutilement un ensemble denregistrements sans intrt pour des demandeurs ne mettant pas en uvre DNSSEC. DNSSEC utilise deux autres drapeaux dans les requtes : DO et CD. Ils sont intgrs dans len-tte standard des requtes DNS et ont t placs des emplacements prcdemment libres13. AD signie Authenticated Data (donnes authenties). Il est positionn par un serveur capable de grer DNSSEC, mais uniquement dans les rponses pour lesquelles la totalit des enregistrements DNSSEC inclus dans le message ont t vris.
13. Seuls trois emplacements restaient libres dans len-tte. AD et CD en occupent maintenant deux.
[12/01/08]
DNS et Bind
313
Le bit AD est destin aux resolvers qui interrogent un serveur de noms prenant en charge DNSSEC. Comme ils ne peuvent eux-mmes vrier les enregistrements DNSSEC, ils peuvent ainsi savoir si une rponse a t valide. Toutefois, ces resolvers ne peuvent avoir conance dans le bit AD que si leur communication avec le serveur de noms est sre, par exemple grce lutilisation de IPSEC ou de TSIG. Le bit CD (Checking Disabled, ne pas vrier) sert aux resolvers qui savent vrier les enregistrements DNSSEC. laide de ce bit, le resolver informe le serveur de noms quil ne doit pas perdre de temps vrier les enregistrements DNSSEC pour le compte du resolver, ce dernier tant capable deffectuer lui-mme le travail.
[12/01/08]
DNS et Bind
314
Chapitre 11 Scurit
;; ADDITIONAL SECTION: toystory.movie.edu. 86400 IN A 192.249.249.3 toystory.movie.edu. 86400 IN RRSIG A 5 3 86400 20060219233605 20060120233605 3674 movie.edu. hlz+W41UlcfIaCMdzoKVAuTPjnyqZhxY3TKOOm/ 2i7FPAkfnVyWMyTwG iBns7Z1ws6QVj7+ZedDFx7xs+V0Iyw== ;; ;; ;; ;; Query time: 13 msec SERVER: 127.0.0.1#53(127.0.0.1) WHEN: Fri Jan 20 16:52:54 2006 MSG SIZE rcvd: 474
Notons que nous avons d prciser +dnssec en ligne de commande. Cette option provoque le positionnement du drapeau DO que nous venons de dcrire, ce qui informe ainsi le serveur de noms quil doit incorporer des enregistrements DNSSEC dans la rponse. On peut voir dans lafchage de dig que ce drapeau est positionn dans la ligne commenant par ; EDNS:. Le champ des drapeaux montre bien le bit DO ainsi quun rglage de la taille maximale de message UDP ngoci 4096 octets. Notons aussi que la rponse contient trois enregistrements RRSIG : lun couvre les enregistrements de la section de la question, un autre couvre les enregistrements de la section des enregistrements faisant autorit et le dernier couvre les enregistrements dadresse de toystory.movie.edu, dans la section des enregistrements complmentaires. Pour vrier les enregistrements RRSIG, le serveur de noms doit regarder lenregistrement DNSKEY de movie.edu. Mais avant dutiliser la cl, il doit la vrier moins, bien sr, quil ne lait dj vrie ou quil ne connaisse dj la cl publique de movie.edu via une structure trusted-keys. La vrication de la cl peut ncessiter plusieurs nouvelles requtes : une vers un serveur de noms de edu pour chercher lenregistrement DS de movie.edu ainsi que les enregistrements RRSIG qui le couvrent, et ventuellement une autre vers un serveur de la racine pour rechercher lenregistrement DS de edu ainsi que les enregistrements RRSIG qui le couvrent.
DNSSEC et performances
la lecture de cet afchage de dig, il parat vident que lutilisation de DNSSEC augmente la taille moyenne dun message DNS, que DNSSEC requiert plus de traitement de la part des serveurs qui doivent vrier les informations, cette vrication pouvant gnrer plusieurs nouvelles requtes, chacune delles pouvant ramener des donnes complmentaires ncessitant elles-mmes une vrication, et que la signature dune zone augmente considrablement sa taille (des estimations tablent sur un facteur gal trois ou quatre). Chaque effet a ses propres consquences :
la vrication ncessite des dchiffrements et consomme des ressources de calcul : plus la chane de conance est longue, plus la vrication est longue. Plus la chane de conance est longue, plus le risque dune mauvaise conguration
est lev.
Plus les zones signes sont grandes, plus les processus named sont importants,
consomment de la mmoire et prennent du temps dmarrer. La complexit de DNSSEC est telle que larchitecture de BIND 8 ne pourrait le supporter totalement. DNSSEC est lune des raisons du dveloppement de BIND 9 et
[12/01/08]
DNS et Bind
315
de sa conception pour fonctionner sur des machines multiprocesseurs. Si on envisage de signer une zone, il faut sassurer pralablement que les serveurs faisant autorit disposent dune mmoire sufsante pour charger la nouvelle zone. Si un serveur doit rsoudre de plus en plus de noms provenant de zones scurises, il faut sassurer que sa puissance est sufsante pour vrier toutes les signatures.
Signature de zone
Maintenant que les principes thoriques de signature de zone sont connus, nous allons signer la zone movie.edu. Nous avons dj utilis les outils de BIND 9.3.2 qui met en uvre la nouvelle version de DNSSEC.
14. NdT : mme avec une seule cl, il ne serait pas ncessaire de contacter les administrateurs de la zone-parente lors dune modication des donnes de zone. Mais, comme on la dj vu, il est ncessaire de changer priodiquement la cl de chiffrement des donnes faute de quoi elle risquerait dtre casse. Il faut donc rpondre deux besoins diamtralement opposs : ladministrateur de la zone souhaite changer le plus souvent la cl de chiffrement de sa zone et ladministrateur de la zone-parente espre quelle changera le moins souvent possible. Le problme a t contourn en introduisant deux types de cl.
[12/01/08]
DNS et Bind
316
Chapitre 11 Scurit
Nous crons ensuite la paire de cls ZSK (cl de signature de zone) ; loption f nest pas ncessaire, puisque cette paire est la paire par dfaut :
# dnssec-keygen -a RSASHA1 -b 512 -n ZONE movie.edu. Kmovie.edu.+005+03674
dnssec-keygen est excut dans le rpertoire de travail du serveur de noms, ce qui vite dutiliser des chemins absolus dans les arguments. Si on veut utiliser la mise jour dynamique avec DNSSEC, les cls doivent absolument rsider dans le rpertoire de travail du serveur. Loption f KSK initialise le drapeau SEP dans lenregistrement DNSKEY. Pour ne pas lever ce drapeau, il suft domettre loption. Rappelons les autres options de dnssec-keygen vues la section TSIG : a Dnit lalgorithme utiliser, ici RSA/SHA-1. On aurait aussi pu utiliser DSA, mais RSA/SHA-1 est obligatoire. b Dnit la longueur de la cl, en bits. Les cls RSA/SHA-1 peuvent avoir toute longueur comprise entre 512 et 4096 octets. Les cls DSA peuvent avoir toute longueur multiple de 64 et comprise entre 512 et 1024 octets. n Dnit le type de cl. Les cls DNSSEC sont toujours des cls de zone. Le seul argument qui ne soit pas une option est le nom de la zone, movie.edu. Le programme dnssec-keygen afche le prxe des noms des chiers contenant les cls gnres. Les nombres (005 et 15494), comme nous lavons dj expliqu la section sur TSIG, reprsentent respectivement la rfrence dalgorithme utilis dans lenregistrement DNSKEY (005 pour RSA/SHA-1) et un identiant pour la cl gnre, utilis pour diffrencier les cls lorsque plusieurs cls sont associes au mme nom de zone. La cl publique est crite dans le chier prxe.key (Kmovie.edu.+005+15480.key). La cl prive est crite dans le chier prxe.private (Kmovie.edu.+005+15480.private). La cl prive doit tre protge ; toute personne connaissant cette cl peut forger des donnes signes. dnssec-keygen facilite les choses : le chier .private nest accessible en lecture et en criture que par son crateur.
15. Dans les exemples, nous utilisons des cls relativement courtes an que les enregistrements DNSKEY et RRSIG ne soient pas trop longs. Dans la ralit, il faudrait utiliser des cls dau moins 1024 bits.
[12/01/08]
DNS et Bind
317
Signer la zone
Avant de signer la zone, nous devons ajouter les enregistrements DNSKEY nos chiers de zone :
# cat "$INCLUDE Kmovie.edu.+005+15480.key" >> db.movie.edu # cat "$INCLUDE Kmovie.edu.+005+03674.key" >> db.movie.edu
Nous utilisons loption o pour dnir lorigine, au sens DNS du terme, pour le chier de zone, car dnssec-signzone ne lit pas named.conf pour en extraire le nom de la zone dcrite par ce chier de zone. Le seul argument qui ne soit pas une option est le nom du chier de zone. Si son nom est identique celui de la zone, nous pouvons omettre loption o. dnssec-signzone sait mme tenir compte du champ SEP des enregistrements DNSKEY, an de choisir la cl utiliser pour signer les enregistrements. Il utilise la cl ZSK pour signer la totalit de la zone et les cls ZSK et KSK pour signer les enregistrements DNSKEY. Lexcution de la commande produit un nouveau chier de zone, db.movie.edu.signed, qui commence par des lignes similaires ce qui suit :
; File written on Fri Jan 20 16:36:05 2006 ; dnssec_signzone version 9.3.2 movie.edu. 86400 IN SOA toystory.movie.edu. al.movie.edu. ( 2006011700 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) 86400 RRSIG SOA 5 2 86400 20060219233605 ( 20060120233605 3674 movie.edu. joujDnvBovW1h+GJ2ZEhvmXQTGqVL4cZBCHM ByFitPRLINe/dKj8VCZg87ZUHQ/eAZSSGDuw XVIlT46ByG5AOg== ) 86400 NS outland.fx.movie.edu. 86400 NS wormhole.movie.edu. 86400 NS toystory.movie.edu. 86400 RRSIG NS 5 2 86400 20060219233605 ( 20060120233605 3674 movie.edu. bwiM/R56VVV0pHrzIERVADLat7BoTR+eeFuC fgYc/GMXecdTxnUahLigRKsbNSsY+Uz8RVkc ewFSiExExFoqwA== ) 86400 MX 10 postmanrings2x.movie.edu. 86400 RRSIG MX 5 2 86400 20060219233605 ( 20060120233605 3674 movie.edu. rm7R0Ib451iK49+bRhch4pIP11F4xZMWtqll 8rQ9tKIOg+jTunNXxix5XnyVKoMQwoa8C5Tu
[12/01/08]
DNS et Bind
318
Chapitre 11 Scurit
ZFeDcbHN0UB5ow== ) misery.movie.edu. NS SOA MX RRSIG NSEC
NSEC RRSIG
86400
86400
86400
86400
NSEC 5 2 3600 20060219233605 ( 20060120233605 3674 movie.edu. V4ipZI5SHGdFNOVEFn43gsRdYffUH6COrPxn RNfUMv6gfgwkythXXr5rx0NTOSfa+Dp4CZrC qwn+CLryUN8vZg== ) DNSKEY 256 3 5 ( AQO/T4DRCAbi1diCB+UT4fDOeCvsa+1NKkO8 UJMF5TlfRvokChybhHaDG5U98xw4XgA01/4R gSlAcSDvhQeKu9n9 ) ; key id = 3674 DNSKEY 257 3 5 ( AQPWA4BRyjB3eqYNy/oykeGcSXjl+HQK9Cci AxJfMcS1vEuwz9c+QG7sEJnQuH5B9i5o/ja+ DVitY3jpXNa12mEn ) ; key id = 15480 RRSIG DNSKEY 5 2 86400 20060219233605 ( 20060120233605 3674 movie.edu. b35F2azzAY6QDghak0RqJzPacmAhcsw3lDoA zKCFPQRnqVpwl4l7tAgKw2T1Cy9GPmdHMTBx fo0DB2smQQJjog== ) RRSIG DNSKEY 5 2 86400 20060219233605 ( 20060120233605 15480 movie.edu. J267HbxKdzGq6iIKywZT6xOFQY7Ev1JWYWEc PKRyZLY2WQ9S3ro0rIUGJRIhHS5oBtzN1g0K 3DL2edi1Hgy+0A== )
Croyez-le ou non, il ne sagit que des enregistrements associs au nom movie.edu ! Le chier de zone a plus que quintupl en longueur et quadrupl en taille. Enn, on met en service DNSSEC sur le serveur de noms16 et on modie la structure zone dans le chier named.conf pour que named charge le nouveau chier de zone :
options { directory "/var/named"; dnssec-enable yes; }; zone "movie.edu" { type master; file "db.movie.edu.signed"; };
On recharge ensuite la zone et on surveille syslog. dnssec-signzone accepte plusieurs autres options.
16. Nous supposons que le serveur de noms a t compil avec loption with-openssl=yes. Si ce nest pas le cas, il faut excuter nouveau congure avec cette option (voir lAnnexe C) et recompiler.
[12/01/08]
DNS et Bind
319
s, e Dnissent les dates dorigine et dexpiration utilises dans les enregistrements RRSIG. Les valeurs par dfaut sont, respectivement, maintenant et 30 jours partir de maintenant . Le format de date est soit une valeur absolue, sous la forme AAAAMMJJHHMMSS, soit un dcalage. Pour s, le dcalage est calcul partir de maintenant ; pour -e, il est calcul partir de la date dorigine. i Prcise la frquence de re-signature des enregistrements (voir ci-dessous). Avant BIND 9.1.0, on utilisait loption c. f Indique le nom du chier dans lequel crire la zone signe. Le nom standard est celui du chier de zone auquel on ajoute le sufxe .signed. k Spcie la cl utiliser pour la signature de cl. Par dfaut, on utilise toute cl prive correspondant des enregistrements DNSKEY dont le drapeau SEP est lev. On peut aussi indiquer, comme second argument non optionnel, la cl prive utiliser pour signer la zone. Par dfaut, dnssec-signzone signe la zone avec chaque cl prive trouve dans le rpertoire. Si on indique un ou plusieurs noms de chier, seules les cls correspondantes seront utilises. Il est ncessaire de re-signer la zone chaque modication des informations de zone. Il ne sera sans doute pas ncessaire de rgnrer la paire de cls chaque fois. On peut resigner la zone en excutant dnssec-signzone sur la zone dj signe :
# # # # dnssec-signzone -o movie.edu -f db.movie.edu.signed.new db.movie.edu.signed mv db.movie.edu.signed db.movie.edu.signed.bak mv db.movie.edu.signed.new db.movie.edu.signed rndc reload movie.edu
Le programme se charge de recalculer les enregistrements NSEC, de signer les nouveaux enregistrements et de re-signer les enregistrements dont la date dexpiration de la signature approche. En standard, dnssec-signzone re-signe les enregistrements dont la signature arrive chance dans les 7,5 jours (le quart de la diffrence entre les dates standard dorigine et dexpiration). Si on dnit des dates spciques, dnssec-signzone ajuste automatiquement la dure du cycle de re-signature. On peut aussi forcer cette dure avec loption i (prcdemment c).
[12/01/08]
DNS et Bind
320
Chapitre 11 Scurit
dnssec-signzone a mme cr un enregistrement DS destination des administrateurs de edu an quils linsrent dans la zone edu ; lenregistrement DS a t crit dans le chier dsset-movie.edu17. Le chier dsset contient :
movie.edu. IN DS 15480 5 1 F340F3A05DB4D081B6D3D749F300636DCE3D6C17
Nous envoyons ensuite le chier keyset aux administrateur de la zone-parente pour signature. Comme le chier joint prouve notre identit18, ces administrateurs lajoutent la zone edu et signent nouveau leur zone. Les enregistrements rsultants dans les chiers de la zone edu ont lallure suivante :
movie.edu. 86400 86400 86400 86400 IN NS IN NS IN NS DS outland.fx.movie.edu. wormhole.movie.edu. toystory.movie.edu. 15480 5 1 ( F340F3A05DB4D081B6D3D749F300636DCE3D 6C17 ) DS 5 2 86400 20060219234934 ( 20060120234934 23912 edu. Nw4xLOhtFoP0cE6ECIC8GgpJKtGWstzk0uH6 nd2cz28/24j4kz1Ahznr/+g5oU3AADyv86EK CnWZtyOeqnfhMZ3UW0yyPcF3wy73tYLQ/KjN gPm1VPQA/Sl3smauJsFW7/YPaoQuxcnREPWf YWInWvWx12IiPKfkVU3F0EbosBA= ) edu. NS DS RRSIG NSEC NSEC 5 2 86400 20060219234934 ( 20060120234934 23912 edu. LpOmh/SZMonQUBUil5MYfIrxld5g6pVeyTxl deDvJ7OIMdI+X0vXmRI3RgmKaRJKYBr4BcNO jrNU8fQo5Ox5WvEeKn1St1NvdB62/Nqjfz6F I+LNXe6diq1uDZZUB3hx5PF+Flp28D75KHnZ 5YE9+vVJryOHHsGawklSrUAJAUg= )
86400
RRSIG
86400 86400
NSEC RRSIG
Notons lenregistrement RRSIG couvrant lenregistrement DS. Il dnote la certication par la zone edu de notre enregistrement DS et donc de notre enregistrement DNSKEY de KSK. Si nous navions pas pris la peine de faire signer notre enregistrement DNSKEY, nous aurions peut-tre saut cette tape. Bien sr, seuls les serveurs de noms disposant dune directive trusted-keys pour movie.edu auraient alors pu vrier nos donnes.
17. Au moment o nous crivons ces lignes, il nest pas encore clair sil faut envoyer le chier keyset ou un chier dsset aux administrateur de la zone-parente. Les deux feront laffaire : ladministrateur de la zone-parente peut gnrer un enregistrement DS partir dun enregistrement DNSKEY. Nous parions sur le chier keyset. 18. Comme les zones de niveau suprieur nont pas encore commenc signer leur zone, il reste encore des zones dombre telles que la manire quelles auront de nous authentier. Le courriel sign est une des possibilits.
[12/01/08]
DNS et Bind
321
pour signer la zone-parente, comme prcdemment. Les enregistrements qui dnissent la dlgation vers les sous-zones non signes ne changent pas. Voici par exemple la dlgation vers la zone non signe fx.movie.edu aprs la signature de movie.edu :
fx.movie.edu. 86400 86400 86400 3600 3600 IN NS IN NS IN NS NSEC RRSIG alien.fx.movie.edu. outland.fx.movie.edu. bladerunner.fx.movie.edu. misery.movie.edu. NS RRSIG NSEC NSEC 5 3 3600 20060220215231 ( 20060121215231 3674 movie.edu. maFMyIVEdjg5BUTKMUyCZvBu6ZrtrQwJyJRo 9A9PDO3bTpWcpCAp4Q0cQ5FwQcveIq15LMit CWyOwN745dJ86Q== ) 192.254.20.3 192.253.254.2 192.253.254.3
Notons lenregistrement NSEC li fx.movie.edu : ce nom est valable aussi loin que portent les enregistrements NSEC, mais les ni les enregistrements NS, ni les enregistrements A de recollage ne sont signs. Seul lenregistrement NSEC lui-mme est sign. Si les administrateurs de fx.movie.edu signent leur zone, ils nauront simplement qu fournir leur chier keyset ou dsset aux administrateurs de movie.edu (dune manire sufsamment scurise, videmment), de la mme manire que ces derniers ont soumis leur chier aux administrateurs de edu. Si le chier keyset de fx.movie.edu est prsent dans le rpertoire de travail lorsque nous signons movie.edu, nous pouvons utiliser loption g pour indiquer dnssec-signzone de crer automatiquement un enregistrement DS pour fx.movie.edu. Sinon, nous pouvons manuellement ajouter lenregistrement DS partir du chier dsset et signer nouveau movie.edu. Voici le chier nal de la dlgation signe :
fx.movie.edu. 86400 86400 86400 86400 IN NS IN NS IN NS DS alien.fx.movie.edu. outland.fx.movie.edu. bladerunner.fx.movie.edu. 2847 5 1 ( F495606120C4927FB4BEB04D0C354BBE5ED8 CA31 ) DS 5 3 86400 20060220230640 ( 20060121230640 3674 movie.edu. OuZCLrqLZlaEgePAxzhUCneV6FyOq6hQwRWF 4bsHPrvIrLMIuftxfB8M3mmgkKlpOlJIJFvH Qc4RUfYOGkMkdg== ) misery.movie.edu. NS DS RRSIG NSEC NSEC 5 3 3600 20060220230640 ( 20060121230640 3674 movie.edu. TUTCnZFvr0YqCD7H0OMTxRs3kAb5OkR74YP3 ZxaBN9S0XxokkeUwHIlWq4JxFJrlZJjMaamp uKf+WSgdF+v3iA== )
86400
RRSIG
3600 3600
NSEC RRSIG
Notons que les enregistrements NS ne sont toujours pas signs (techniquement, ils appartiennent la zone-enfant), mais que lenregistrement DS lest.
[12/01/08]
DNS et Bind
322
Chapitre 11 Scurit
;; AUTHORITY SECTION: movie.edu. 3600 IN SOA toystory.movie.edu. al.movie.edu. 2006011700 10800 3600 604800 3600 movie.edu. 3600 IN RRSIG SOA 5 2 86400 20060219233605 20060120233605 3674 movie.edu. joujDnvBovW1h+GJ2ZEhvmXQTGqVL4cZBCHMByFitPRLINe/ dKj8VCZg 87ZUHQ/eAZSSGDuwXVIlT46ByG5AOg== movie.edu. 3600 IN NSEC misery.movie.edu. NS SOA MX RRSIG NSEC DNSKEY movie.edu. 3600 IN RRSIG NSEC 5 2 3600 20060219233605 20060120233605 3674 movie.edu. V4ipZI5SHGdFNOVEFn43gsRdYffUH6COrPxnRNfUMv6gfgwkythXXr5r x0NTOSfa+Dp4CZrCqwn+CLryUN8vZg== misery.movie.edu. 3600 IN NSEC monsters-inc.movie.edu. A RRSIG NSEC misery.movie.edu. 3600 IN RRSIG NSEC 5 3 3600 20060219233605 20060120233605 3674 movie.edu. AFTF8DBjDtIzM/QkEajY4lUkbuEyDM5yt/ Kpe++Jrp1K1kArUSdGPuxj xDZUXujbRzPY6JoAOgBO4bU8UDx2tA== ;; ;; ;; ;; Query time: 16 msec SERVER: 127.0.0.1#53(127.0.0.1) WHEN: Fri Jan 20 17:02:51 2006 MSG SIZE rcvd: 502
[12/01/08]
DNS et Bind
323
Notons lenregistrement NSEC de misery.movie.edu, qui indique que le nom recherch nexiste pas. On utilise ensuite nsupdate pour ajouter un enregistrement dadresse pour perfectstorm.movie.edu :
% nsupdate > update add perfectstorm.movie.edu. 3600 IN A 192.249.249.91 > send
[12/01/08]
DNS et Bind
324
2i7FPAkfnVyWMyTwG iBns7Z1ws6QVj7+ZedDFx7xs+V0Iyw== ;; ;; ;; ;; Query time: 18 msec SERVER: 127.0.0.1#53(127.0.0.1) WHEN: Fri Jan 20 17:06:22 2006 MSG SIZE rcvd: 713
Chapitre 11 Scurit
On constate non seulement quun enregistrement dadresse a t ajout mais quun enregistrement RRSIG a t gnr partir de la ZSK de movie.edu20. La date dchance de la signature est xe 30 jours aprs la mise jour par dfaut, mais la structure sigvalidity-interval, dont largument est un nombre de jours, permet de la modier21 :
options { sig-validity-interval 7; // la validit sera de 7 jours sur une // signature par mise jour dynamique };
La date dorigine de la signature est toujours xe une heure avant la mise jour, an de permettre la vrication par ceux dont lhorloge serait lgrement dcale par rapport celle du serveur. En recherchant perfectstorm2.movie.edu, on obtient :
% dig +dnssec perfectstorm2.movie.edu. ; <<>> DiG 9.3.2 <<>> +dnssec perfectstorm2.movie.edu. ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 8402 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 8, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags: do; udp: 4096 ;; QUESTION SECTION: ;perfectstorm2.movie.edu. IN A ;; AUTHORITY SECTION: movie.edu. 3600 IN SOA toystory.movie.edu. al.movie.edu. 2006011701 10800 3600 604800 3600 movie.edu. 3600 IN RRSIG SOA 5 2 86400 20060220010558 20060121000558 3674 movie.edu. vwiC+zBzw8VFmrmFnARkNPLLmYEbSJRCiCsqjnvwVc5CMSzXu6kBkatN bWE9Iqd// brLiOA3E9G02BM3j+5Wkg== movie.edu. 3600 IN RRSIG SOA 5 2 86400 20060220010558 20060121000558 15480 movie.edu. HVlniwE8N8Fy+IdRSmTLw3XTVyLae0eOr26C5MAkzNoMr3OzRrDfbZUm 4+N1a6gC9P+EMzUYM1yflVQFs3Cehg== movie.edu. 3600 IN NSEC misery.movie.edu. NS SOA MX RRSIG
20. Ainsi quun autre RRSIG partir de la KSK, mais cest un bogue. 21. Avant BIND 9.1.0, largument de sig-validity-interval tait en secondes, pas en jours.
[12/01/08]
DNS et Bind
325
NSEC DNSKEY movie.edu. 3600 IN RRSIG NSEC 5 2 3600 20060219233605 20060120233605 3674 movie.edu. V4ipZI5SHGdFNOVEFn43gsRdYffUH6COrPxnRNfUMv6gfgwkythXXr5r x0NTOSfa+Dp4CZrCqwn+CLryUN8vZg== perfectstorm.movie.edu. 3600 IN NSEC shining.movie.edu. A RRSIG NSEC perfectstorm.movie.edu. 3600 IN RRSIG NSEC 5 3 3600 20060220010558 20060121000558 3674 movie.edu. EC/HwFtyrDtcf27QYvnSrJTypnAg3LsimFH+lTO/VbB/ dD7Wzj0am1Yy +/SF3u6nrJ1nV2hZBgSqmYB9plpM3Q== perfectstorm.movie.edu. 3600 IN RRSIG NSEC 5 3 3600 20060220010558 20060121000558 15480 movie.edu. H2XwAMRYkxsv721q0fOQk7g7j1SPPurKNGBDqlEDpeLnRkde8NHtlFOx VbqWDsWzq15sxoV4NRZyK14cQcbG7Q== ;; ;; ;; ;; Query time: 14 msec SERVER: 127.0.0.1#53(127.0.0.1) WHEN: Fri Jan 20 17:15:58 2006 MSG SIZE rcvd: 726
Notons la prsence du second enregistrement NSEC : il a t cr automatiquement lors de lajout de lenregistrement dadresse de perfectstorm.movie.edu car cette dernire tait un nouveau nom dans la zone. Aussi impressionnant que cela puisse paratre, il faut tre prudent lorsquon autorise la mise jour dynamique dans une zone signe. Il faut utiliser une authentication forte (par exemple avec TSIG) pour valider les mises jour, sinon on risque de crer une brche quun pirate pourra exploiter pour modier la zone scurise . Il faut aussi disposer dune puissance sufsante ; normalement, la mise jour dynamique ne requiert pas plus de puissance. Mais la mise jour dynamique dune zone scurise requiert nouveau le calcul des enregistrements NSEC et, surtout, un chiffrement asymtrique pour calculer les nouveaux enregistrements RRSIG. Le serveur de noms prendra donc plus de temps et plus de ressources pour traiter une mise jour dynamique.
plus la cl est longue, plus on complique la tche du pirate. Les cls longues nont pas
besoin dtre modies aussi souvent que les courtes ;
plus les informations dune zone prsentent dintrt, plus un pirate risque dinvestir
du temps et de largent pour trouver lune des cls. Si lintgrit dune zone est particulirement cruciale, il faut changer souvent de cl.
[12/01/08]
DNS et Bind
326
Chapitre 11 Scurit
Puisque movie.edu nest pas une cible de haut intrt, on peut se contenter de ne changer la paire de cls de signature de zone que tous les six mois. Si les informations de la zone taient plus vitales, on augmenterait la taille des cls ou changerait de cls plus souvent. Malheureusement, un changement de cl ne se rsume pas une simple gnration de cl et au remplacement de lancienne. Si on faisait cela, on empcherait les serveurs qui auraient des informations dans leur mmoire cache de retrouver lenregistrement DNSKEY de signature de la zone et de vrier ces informations. Il faut donc procder de la manire suivante : 1. Au moins une priode de TTL avant que lensemble denregistrements RRSIG signs par lancienne ZSK nexpire, gnrer une nouvelle paire ZSK. 2. Ajouter le nouvel enregistrement DNSKEY dans les donnes de zone. 3. Signer les donnes de zone avec la nouvelle cl prive et non pas lancienne, mais conserver lancien enregistrement DNSKEY dans la zone. 4. Aprs lchance de tous les enregistrements signs partir de lancienne cl, supprimer lancien enregistrement DNSKEY de la zone et signer nouveau la zone avec la nouvelle cl prive. Excutons maintenant les diffrentes phases. Nous commenons par gnrer la nouvelle paire de cls :
# dnssec-keygen -a RSA -b 512 -n ZONE movie.edu. Kmovie.edu.+005+15494
Nous indiquons dnssec-signzone les cls utiliser pour signer la zone, et dnissons la KSK :
# dnssec-signzone o movie.edu k Kmovie.edu.+005+15480 db.movie.edu.signed Kmovie.edu.+005.15494
Cette commande signe la zone avec la nouvelle ZSK ; elle conserve dans les donnes de zone la signature des enregistrements RRSIG avec lancienne ZSK, sans toutefois la rgnrer avec cette ancienne ZSK. Voici le dbut du chier rsultant :
; File written on Tue Feb 21 02:41:09 2006 ; dnssec_signzone version 9.3.2 movie.edu. 86400 IN SOA toystory.movie.edu. al.movie.edu. ( 2006022100 ; serial 10800 ; refresh (3 hours) 3600 ; retry (1 hour) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) 86400 RRSIG SOA 5 2 86400 20060220210704 ( 20060121210704 3674 movie.edu. otYTiIHqJ4K0c6M5JZ9uC8q7AvXO1Gjp5FXJ 5SRO+UL/ilAZXGSfJSCJrUDetb7R0H27NqHe yKujxcec69FoLw== )
[12/01/08]
DNS et Bind
327
Bien que la zone intgre deux enregistrements DNSKEY, les autres enregistrements de la zone (tels que le SOA visible ici) ne sont signs que par la nouvelle cl prive, dont lidentiant est 15494. Les anciens enregistrements RRSIG, gnrs laide de la cl prive didentiant 3674, sont conservs car ils sont encore valides, quoique plus pour longtemps. Remarquons les dates dexpiration des deux enregistrements RRSIG couvrant lenregistrement SOA : le RRSIG didentiant 3674 vient expiration un mois avant le nouveau RRSIG, car il na pas t rgnr. Aprs lexpiration des anciens enregistrements RRSIG, nous supprimons lancien enregistrement DNSKEY et les chiers de cls associs (de manire ce quils ne soient plus utilisables) et nous signons nouveau la zone avec la nouvelle ZSK et la KSK:
# dnssec-signzone o movie.edu db.movie.edu.signed # mv db.movie.edu.signed.signed db.movie.edu.signed
Ces commandes suppriment lancien RRSIG, devenu invalide, et signe nouveau le RRset DNSKEY avec la KSK. La modication de la KSK est similaire mais est beaucoup moins frquente : 1. Au moins une priode de TTL avant que le RRSIG couvrant le RRset DNSKEY, gnrer une nouvelle paire KSK. 2. Ajouter le nouvel enregistrement DNSKEY de KSK dans les donnes de zone. 3. Signer le RRset DNSKEY avec toutes les KSK (en utilisant plusieurs options k avec dnssec-signzone). 4. Soumettre la nouvelle KSK aux administrateurs de la zone-parente, pour certication. 5. Aprs lchance du RRSet DS dans la zone-parente, supprimer lancienne KSK de la zone et signer nouveau la zone avec la nouvelle cl. Nous sommes certain quaprs avoir pris connaissance de tout cela, vous aurez dcid dutiliser la plus grande taille de cl possible, ne serait-ce que pour viter den changer trop souvent.
Cest bientt ni ?
Labord de DNSSEC est assez dcourageant (nous avons pli la premire fois que nous lavons tudi). Mais DNSSEC a une fonction primordiale : il rend la simulation extrmement difcile. LInternet sert de plus en plus au monde des affaires et il est crucial de bien aboutir aux ressources souhaites. Cela dit, DNSSEC et lensemble des mesures de scurit dcrites dans ce chapitre ne concernent pas tout le monde. Il faut trouver un quilibre entre le niveau de scurit requis et les cots de mise en uvre, en terme de charge sur linfrastructure et de productivit.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
12
nslookup et dig
Ne restez pas marmonner entre vos dents comme cela, dit, en la regardant pour la premire fois, Heumpty Deumpty ; faites-moi plutt connatre votre nom et le genre daffaire qui vous amne ici. Mon nom est Alice, mais Que voil donc un nom idiot ! intervint avec impatience Heumpty Deumpty. Quest-ce quil signifie ? Est-il absolument ncessaire quun nom signifie quelque chose ? senquit, dubitative, Alice. videmment, que cest ncessaire, rpondit Heumpty Deumpty avec un bref rire
Pour dpanner efcacement les serveurs de noms, un outil permettant de gnrer des requtes DNS est indispensable. Ce chapitre dcrit nslookup, livr avec BIND et avec la plupart des systmes dexploitation du commerce. Cela ne signie pas que nslookup est le meilleur outil ; il prsente tant de dfauts quil est maintenant dconseill dans la distribution de BIND 9. Toutefois, nous le dcrivons car il reste encore bien prsent. Nous dcrivons aussi dig qui propose des fonctions similaires celles de nslookup, mais ne prsente pas ses dciences. Nous ne prsenterons pas tous les aspects de nslookup et de dig, car certains dentre eux sont obscurs et correspondent des utilisations marginales.
Prsentation de nslookup
nslookup permet de gnrer des requtes vers des serveurs de noms, parfois la manire dun resolver, parfois la manire dun serveur de noms. Tout dpend du problme que lon veut diagnostiquer. nslookup nappelle pas les procdures de la bibliothque du resolver de BIND ; il utilise ses propres procdures pour interroger les serveurs de noms, mais ces procdures sont bases sur celles des resolvers. Aussi son comportement est-il trs similaire celui dun resolver, bien quil diffre lgrement. Nous signalerons certaines de ces diffrences.
[12/01/08]
DNS et Bind
330
Comme mulateur du comportement dun serveur de noms, nslookup permet dinterroger un autre serveur avec le mme message que lancerait un serveur de noms, mais le schma de retransmission est sensiblement diffrent. Comme un serveur de noms, toutefois, nslookup peut transfrer une copie des donnes de zone. nslookup ne mime totalement, ni un resolver, ni un serveur de noms, mais il le fait sufsamment bien pour servir doutil de dpannage. Dtaillons un peu les diffrences auxquelles nous avons fait allusion.
Serveurs multiples
nslookup ne dialogue quavec un seul serveur la fois, ce qui constitue la premire diffrence avec un resolver. Un resolver utilise chacune des directives nameserver du chier resolv.conf. Avec deux lignes nameserver dans resolv.conf, le resolver essaie le premier serveur, puis le second, nouveau le premier, puis le second, et ainsi de suite jusqu la rception dune rponse ou labandon de la requte. Quant lui, nslookup essaie le premier serveur qui apparat dans resolv.conf et le r-essaie jusqu abandon avant de passer au second serveur. Une fois une rponse obtenue, il se lie au serveur correspondant et nen essaie pas dautre. Ce comportement est prfrable car il permet de mieux analyser les problmes lors dune recherche de panne. Si nslookup utilisait plus dun serveur, il ny aurait que peu de possibilits de contrle durant une session.
Temps dattente
Les temps dattente de nslookup correspondent ceux dun resolver ninterrogeant quun seul serveur. Les temps dattente dun serveur, par contre, dpendent de la rapidit de rponse du serveur distant interrog ; ils sont donc dynamiques et diffrent obligatoirement de ceux dun resolver et donc de ceux utiliss par nslookup. Mais lors dune analyse, cest probablement le contenu de la rponse qui est important et non pas le dlai pour lobtenir.
Liste de recherche
nslookup met en uvre une liste de recherche de la mme manire quun resolver. Toutefois, il utilise soit la liste de recherche abrge de BIND, qui ne contient que le nom du domaine local, soit la liste dnie dans la dernire ligne search de /etc/resolv.conf. Les serveurs nutilisent pas de liste de recherche, aussi faut-il dvalider la fonction de recherche de nslookup pour se comporter comme un serveur de noms (voir plus loin).
Transferts de zone
nslookup effectue les transferts de zone de la mme manire quun serveur de noms, sans toutefois tester le numro de srie du SOA de la zone tlcharge ; cette dernire opration peut ventuellement tre faite manuellement.
[12/01/08]
DNS et Bind
Interactivit
331
tion du systme. Il ne faut donc pas attendre de nslookup quil aide diagnostiquer un problme gnral de rsolution1.
Interactivit
Abordons ltude de nslookup par un exemple dutilisation. Pour chercher un unique enregistrement de ressource correspondant un seul nom, on peut utiliser la forme non interactive. Pour des recherches complexes, intgrant des changements de serveur ou doptions, il faut utiliser la forme interactive. Pour lancer une session interactive, il suft de saisir nslookup :
% nslookup Default Server: toystory.movie.edu Address: 0.0.0.0#53 > ^D
Pour avoir de laide en ligne, tapons ? ou help2. Pour quitter nslookup, saisissons ^D (Ctrl-D). Si nous essayons de quitter nslookup en linterrompant avec ^C (ou toute autre squence de caractres programme pour interrompre), nslookup intercepte linterruption, stoppe le travail en cours (par exemple un transfert de zone) et renvoie linvite de commande >. En mode non interactif, il faut donner le nom chercher en ligne de commande :
% nslookup carrie Server: toystory.movie.edu Address: 0.0.0.0#53 Name: carrie.movie.edu Address: 192.253.253.4
Jeu doptions
nslookup dispose de son propre jeu doptions que nous allons prsenter immdiatement an de les utiliser dans le reste du chapitre.
% nslookup Default Server: bladerunner.fx.movie.edu Address: 0.0.0.0#53 > set all Default Server: bladerunner.fx.movie.edu Address: 0.0.0.0 Set options: nodebug nod2
1. 2.
defname novc
search noignoretc
recurse port=53
moins que le nslookup dun systme commercial nait t amlior pour interroger NIS ou /etc/ hosts, comme cest le cas avec HP-UX. Laide nest pas mise en uvre avec le nslookup de BIND 9 au moins jusqu la version 9.3.2.
[12/01/08]
DNS et Bind
332
querytype=A class=IN root=a.root-servers.net. domain=fx.movie.edu srchlist=fx.movie.edu > ^D timeout=5
Avant de passer aux options, dcrivons les lignes dintroduction. Le serveur de noms par dfaut est bladerunner.fx.movie.edu, ce qui signie que nslookup interroge bladerunner moins quun autre serveur ne soit spci. Ladresse 0.0.0.0 dsigne cet hte . Lorsque nslookup utilise 0.0.0.0 ou 127.0.0.1 comme adresse de serveur, il sadresse au serveur situ sur lhte local (ici bladerunner). Les options se rpartissent en deux catgories : les options boolennes et celles valeur. Les options non suivies dun signe gal sont boolennes ; elles sont soit actives soit dsactives. Pour dsactiver une option boolenne, on ajoute le prxe no au nom de loption. Dans lexemple, nodebug signie que le dbogage est dsactiv, alors que loption search est active. La modication dune option dpend du mode de nslookup, interactif ou non. Dans une session interactive, la commande set permet de modier une option : set debug ou set domain=classics.movie.edu. En ligne de commande, le mot set nest pas utilis et on ajoute un tiret devant loption : nslookup -debug ou nslookup -domain=classics.movie.edu. Le nom dune option peut tre abrg au plus petit prxe discriminant : nodeb pour nodebug. En plus de son abrviation, loption querytype peut aussi sappeler simplement type. Voici la liste dtaille des options : [no]debug Par dfaut, le dbogage est dsactiv. Sil est activ, le serveur afche les dlais et les rponses. Voir [no]d2 pour une prsentation du dbogage de niveau 2. [no]defname Cette option nexiste plus en version 9.3.2. Par dfaut, nslookup ajoute le nom de domaine local aux noms ne comportant pas de point. Avant lexistence des listes de recherche, BIND aurait ajout le domaine local uniquement aux noms ne comportant aucun point ; loption permet dobtenir ce dernier comportement. nslookup peut simuler soit le comportement antrieur lexistence des listes de recherche (avec search dsactive et defname active) soit le comportement des listes de recherche (search activ). [no]search Loption search lemporte sur loption de domaine local (defname). Cela dit, defname ne sapplique que si search est dsactive. Par dfaut, nslookup ajoute les domaines de la liste de recherche (srchlist) aux noms qui ne se terminent pas par un point.
[12/01/08]
DNS et Bind
Jeu doptions
333
[no]recurse nslookup envoie des requtes rcursives par dfaut, ce qui positionne le bit de demande de rcursivit dans les messages de requte. Les resolvers de BIND gnrent des requtes rcursives par dfaut, alors que les serveurs de noms envoient des requtes itratives aux autres serveurs. [no]d2 Le dbogage de niveau 2 est dsactiv par dfaut. Sil est activ, les requtes sont afches. Lactivation de d2 active automatiquement debug. La dsactivation de d2 dsactive d2 mais pas debug. La dsactivation de debug dsactive debug et d2. [no]vc Par dfaut, nslookup envoie les requtes dans des datagrammes UDP plutt que par des circuits virtuels (TCP) ; la plupart des requtes de resolver BIND utilisent aussi UDP Par consquent, le comportement par dfaut de nslookup est celui de la . plupart des resolvers. Tout comme avec un resolver, on peut indiquer nslookup dutiliser TCP . [no]ignoretc Cette option nexiste plus en version 9.3.2. Si le bit tronqu est positionn dans un message (cest--dire que le serveur ne peut pas placer la totalit de linformation dans le datagramme de rponse UDP), nslookup ne llimine pas (comportement par dfaut) ; il renouvelle la requte en remplaant la connexion UDP par une connexion TCP (ce comportement est aussi celui dun resolver), car une rponse DNS en TCP peut contenir plusieurs fois la taille dune rponse en UDP . port=53 Les serveurs coutent le port 53. On peut dmarrer un serveur sur un autre port, par exemple des ns de dbogage, et indiquer nslookup de lutiliser. querytype=A Par dfaut, nslookup cherche des enregistrements de ressource A (adresse). Si on saisit une adresse IP et que le type recherch est A ou PTR, nslookup inverse automatiquement la recherche, ajoute le nom de domaine in-addr.arpa ladresse et cherche un enregistrement PTR. class=IN La classe IN est celle de lInternet. Le MIT et Ultrix utilisent la classe Hesiod (HS). timeout=5 Si le serveur de noms ne rpond pas dans les 5 secondes, nslookup renvoie la requte et augmente le temps dattente 10, 20, puis 40 secondes. La plupart des resolvers de BIND utilisent les mmes dlais lorsquils interrogent un serveur unique. retry=4 nslookup envoie une requte quatre fois avant dabandonner. Aprs chaque essai, le temps dattente est doubl. La plupart des resolvers BIND se comportent ainsi.
[12/01/08]
DNS et Bind
334
root=a.root-servers.net Cette option nexiste plus en version 9.3.2. La commande root remplace le serveur par dfaut. Avec les versions rcentes de nslookup, lexcution de la commande root revient utiliser server a.root-servers.net. Les anciennes versions de nslookup utilisent nic.ddn.mil comme serveur de la racine par dfaut, voire mme sri-nic.arpa pour les trs anciennes. On peut modier le serveur de la racine par dfaut en utilisant set root=serveur. domain=fx.movie.edu Cette option nexiste plus en version 9.3.2. Cest le domaine ajout par dfaut si loption defname est active. srchlist=fx.movie.edu Si loption search est active, les domaines indiqus sont ajouts aux noms qui ne comportent pas de point terminal. Les domaines sont donns dans lordre dutilisation souhaite et sont spars par des barres obliques (/).
Le chier .nslookuprc
.nslookuprc nest plus mis en uvre en version 9.3.2.
Le chier .nslookuprc sert xer ses propres options nslookup par dfaut. Lorsquil dmarre, nslookup recherche .nslookuprc dans le rpertoire personnel de lutilisateur, aussi bien en mode interactif que non interactif. Ce chier contient des commandes set, raison dune par ligne. Si la version utilise de nslookup est ancienne, le chier peut servir dnir un serveur de la racine valable :
set root=a.root-servers.net.
On peut aussi modier la liste de recherche par dfaut ou les temps dattente.
Manipulations de base
nslookup sert principalement chercher des adresses IP ou des enregistrements MX ou interroger un serveur spcique.
[12/01/08]
DNS et Bind
Manipulations de base
335
> set q=any recherche denregistrement de tout type > monsters-inc Server: toystory.movie.edu Address: 0.0.0.0#53 monsters-inc.movie.edu monsters-inc.movie.edu inc.movie.edu monsters-inc.movie.edu internet address = 192.249.249.4 preference = 10, mail exchanger = monstersinternet address = 192.249.249.4
[12/01/08]
DNS et Bind
336
> slate.mines.colorado.edu. Server: toystory.movie.edu Address: 0.0.0.0#53 Name: slate.mines.colorado.edu Address: 138.67.1.3
sa premire recherche de slate.mines.colorado.edu, le serveur local contacte un serveur de mines.colorado.edu dont la rponse fait autorit. Le serveur local retransmet cette rponse nslookup ; il la place galement dans sa mmoire cache. Lors de la seconde recherche de slate, le serveur local utilise linformation enregistre dans sa mmoire cache, ce qui produit une rponse ne faisant pas autorit (Non-authoritative)3. Dans les deux cas, un nom totalement quali, avec un point terminal, a t utilis. Le rsultat aurait t identique sans point terminal. Lutilisation du point terminal nest pas toujours indispensable. Au lieu dhsiter entre mettre ou non un point terminal, il est prfrable den mettre un systmatiquement, ds lors que le nom est totalement quali moins, videmment, davoir dsactiv la liste de recherche.
3.
BIND 9 indique mme que les premires rponses ne font pas autorit.
[12/01/08]
DNS et Bind
Utilisation avance
337
Le nouveau serveur ne rpondant pas, un retour au serveur dorigine est ncessaire. Mais le serveur sur galt.cs.purdue.edu refuse de chercher ladresse de toystory.movie.edu :
> server toystory.movie.edu. *** Can't find address for server toystory.movie.edu.: Query refused
Puisque galt.cs.purdue.edu refuse de rpondre, il naurait pas t possible de trouver ladresse de toystory.movie.edu pour en faire de nouveau le serveur par dfaut. lserver interroge le serveur local toystory, qui rpond bien. On aurait aussi pu fournir directement le numro IP de toystory : server 192.249.249.3. Le serveur utiliser peut tre dni requte par requte en lindiquant comme second paramtre sur la ligne de commande dans nslookup :
% nslookup Default Server: toystory.movie.edu Address: 192.249.249.3#53 > saturn.sun.com. ns.sun.com. Name Server: ns.sun.com Address: 192.9.9.3#53 Name: saturn.sun.com Addresses: 192.9.25.2 > ^D
Cette commande indique nslookup dinterroger toystory.movie.edu au sujet des enregistrements MX de sherking.movie.edu. Enn, tout en passant en mode interactif, le serveur par dfaut est dnissable en ligne de commande par lutilisation dun tiret la place du nom rechercher :
% nslookup - toystory.movie.edu.
Utilisation avance
Les manipulations qui suivent pourront servir pour analyser des problmes avec le DNS ou avec BIND ; elles permettent dobserver les messages traits par les resolvers, de simuler linterrogation dun serveur de noms par un autre serveur de noms ou deffectuer un transfert de zone.
[12/01/08]
DNS et Bind
338
[12/01/08]
DNS et Bind
Utilisation avance
-----------Name: wormhole.movie.edu Addresses: 192.253.253.1, 192.249.249.1 > set d2 > wormhole Server: toystory.movie.edu Address: 0.0.0.0#53 Cette fois-ci, la requte est aussi affiche. -----------SendRequest( ), len 36 HEADER: opcode = QUERY, id = 6814, rcode = NOERROR header flags: query, want recursion questions = 1, answers = 0, authority records = 0, additional = 0 QUESTIONS: wormhole.movie.edu, type = A, class = IN ----------------------Got answer (164 bytes): La rponse est la mme que prcdemment.
339
Les lignes entre tirets reprsentent les messages de requte et de rponse. Un message DNS est compos de cinq sections : en-tte, question, rponse, serveurs faisant autorit et enregistrements complmentaires. Section den-tte La section den-tte est prsente dans chaque question et rponse, et le code dopration opcode est toujours gal QUERY. Il existe des codes dopration pour les annonces asynchrones de modication de zone (NOTIFY) et pour les mises jour dynamiques (UPDATE), mais ils napparatront jamais dans nslookup, car nslookup ne fait quenvoyer des requtes simples et recevoir des rponses. Dans len-tte, lidentiant id associe une rponse une requte et dtecte les duplications. Le champ des drapeaux, header ags, indique sil sagit dune requte ou dune rponse. La chane want recursion indique que la requte est rcursive. La chane auth. answer indique que cette rponse fait autorit, cest--dire que la rponse provient dun serveur faisant autorit et non dune mmoire cache. Le code de rponse, rcode, peut prendre lune des valeurs suivantes : no error, server failure, name error (ou nxdomain ou nonexistent domain), not implemented ou refused. Les codes de rponse server failure, name error, not implemented et refused produisent, respectivement, les erreurs de nslookup Server failed , Nonexistent domain , Not implemented et Query refused . Les quatre dernires valeurs de la section den-tte sont des compteurs indiquant le nombre denregistrements de ressource prsents dans les quatre sections suivantes.
[12/01/08]
DNS et Bind
340
Section de la question Il y a toujours une question dans un message DNS ; elle contient le nom, le type denregistrement et la classe de linformation cherche. Il ny a jamais plus dune question dans un message, en raison de sa structure : en effet, une question multiple entranerait une rponse multiple. Or il ny a quun seul drapeau indiquant si une rponse fait autorit alors que toutes les rponses dune rponse multiple pourraient ne pas faire autorit. Section de la rponse Cette section contient les enregistrements de ressource qui rpondent la question. Il peut y avoir plusieurs enregistrements dans la rponse, par exemple dans le cas dun hte multi-domicili qui possde plusieurs adresses. Section des serveurs faisant autorit Cette section contient des enregistrements NS. Lorsquune rponse contient des renseignements concernant dautres serveurs de noms, ils apparaissent ici. Section des enregistrements complmentaires Cette section contient des informations compltant celles des autres sections. Ainsi, si un serveur apparat dans la section des serveurs faisant autorit, son adresse peut tre afche ici (cette adresse est ncessaire pour contacter le serveur).
[12/01/08]
DNS et Bind
Utilisation avance
341
lui posons la mme question. Il nous renvoie vers les serveurs de usps.gov et nous changeons alors de serveur en en prenant un de usps.gov ; nous lui posons enn la mme question.
% nslookup Default Server: toystory.movie.edu Address: 0.0.0.0#53 > set norec Interrogation la serveur , c--d sans rcursivit > set nosearch Dsactivation liste de recherche > set nodefname Dsactivation ajout domaine local (pour vieil nslookup) > www.usps.gov Point terminal non ncessaire car liste de recherche dsactive Server: toystory.movie.edu Address: 0.0.0.0#53 Name: www.usps.gov Served by: - G.GOV.ZONEEDIT.COM 66.135.32.100 gov - F.GOV.ZONEEDIT.COM 66.197.185.229 gov - E.GOV.ZONEEDIT.COM 82.165.40.134 gov - D.GOV.ZONEEDIT.COM 209.97.207.48 gov - C.GOV.ZONEEDIT.COM 69.72.142.35 gov - B.GOV.ZONEEDIT.COM 206.51.224.229 gov - A.GOV.ZONEEDIT.COM 216.55.155.29 gov
Nous interrogeons maintenant un serveur de gov. Si le serveur na pas encore ladresse dun serveur de gov en mmoire cache, il faut valider temporairement la rcursivit :
> server g.gov.zoneedit.com Default Server: g.gov.zoneedit.com Address: 66.135.32.100#53
Nous posons la mme question au serveur de gov. Il renvoie alors des renseignements sur des serveurs encore plus proche de la rponse :
> www.usps.gov Server: g.gov.zoneedit.com Address: 66.135.32.100#53
[12/01/08]
DNS et Bind
342
Name: www.usps.gov Served by: - DNS072.usps.gov 56.0.72.25 usps.gov - DNS096.usps.gov 56.0.96.25 usps.gov - DNS141.usps.gov 56.0.141.25 usps.gov
Cet exemple montre bien le mcanisme de recherche utilis par un serveur de noms. Les gures 2-12 et 2-13 (pages 27 et 30) dcrivent en dtail les changes lis une recherche. Avant de poursuivre, remarquons que la question pose tous les serveurs tait la mme : quelle est ladresse de www.usps.gov ? Si un serveur de gov avait eu la rponse en mmoire cache, il aurait renvoy la rponse au lieu de fournir des renseignements sur les serveurs de usps.gov. Cela peut poser problme dans certains cas, par exemple lorsquune erreur a t corrige dans la zone concerne par la recherche aprs que linformation a t place en mmoire cache dun serveur parent. Quand ce dernier reoit une requte, il renvoie une rponse errone. Le problme peut tre complexe diagnostiquer car seul un des serveurs parents dtient linformation errone, et donc seules certaines interrogations distantes obtiennent cette information en retour. Il faut donc attendre que le TTL de linformation scoule sur le serveur parent. Heureusement, la plupart des serveurs des TLD refusent les requtes rcursives et, par consquent, ne mettent pas dinformation en mmoire cache. Malheureusement, certains le font encore.
Transferts de zone
nslookup peut transfrer la totalit dune zone laide de la commande ls, ce qui est utile pour dbloquer une situation ou visualiser le contenu dune zone. On peut rediriger la visualisation vers un chier ou interrompre un transfert en utilisant le caractre dinterruption du systme dexploitation. Attention, certains serveurs refusent de transfrer leur zone, soit pour des raisons de scurit, soit pour limiter leur charge. Sur lInternet daujourdhui, les administrateurs doivent protger leurs plates-bandes.
[12/01/08]
DNS et Bind
Utilisation avance
343
Lexemple ci-dessous montre le transfert de toutes les informations de la zone movie.edu. Lenregistrement SOA apparat deux fois, ce qui correspond aux techniques dchange de donnes durant les transferts. Certaines versions de nslookup ne montrant par dfaut que les enregistrements dadresse et de serveur de noms, nous utilisons systmatiquement loption d pour recevoir la totalit de la zone :
% nslookup Default Server: toystory.movie.edu Address: 0.0.0.0#53 > ls -d movie.edu. [toystory.movie.edu] $ORIGIN movie.edu. @
1D IN SOA
; ; ; ; ;
wormhole wh249 shrek toys cujo wh253 wh shining toystory localhost fx bladerunner.fx fx outland.fx fx me carrie monsters-inc misery @
1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D
IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN IN
toystory wormhole 192.249.249.1 192.253.253.1 192.249.249.1 192.249.249.2 toystory "Location:" "machine" "room" "dog" "house" 192.253.253.1 wormhole 192.253.253.3 192.249.249.3 127.0.0.1 bladerunner.fx 192.253.254.2 outland.fx 192.253.254.3 huskymo.boulder.acmebw.com. tornado.acmebw.com. monsters-inc 192.253.253.4 192.249.249.4 192.253.253.2 toystory al ( 2000091400 ; serial 3H ; refresh 1H ; retry 4W2D ; expiry 1H ) ; minimum
[12/01/08]
DNS et Bind
344
Nous pouvons aussi rediriger les informations vers un chier pour en faciliter la visualisation :
> ls -d movie.edu > /tmp/movie.edu [toystory.movie.edu] Received 25 answers (25 records). Mmorise les informations dans /tmp/movie.edu
Certaines versions de nslookup disposent dune commande interne view qui classe et afche le contenu dune zone. Toutefois, view ne fonctionne pas correctement avec les dernires versions de BIND 8 et nest pas encore disponible avec la version 9.3.2 de BIND 9.
Il existe peut-tre malgr tout dautres types denregistrements pour le mme nom. Utilisons set type=any pour les trouver :
> set type=any > movie.edu. Server: toystory.movie.edu Address: 0.0.0.0#53 movie.edu origin = toystory.movie.edu mail addr = al.shrek.movie.edu serial = 42 refresh = 10800 (3H) retry = 3600 (1H) expire = 604800 (7D) minimum ttl = 86400 (1D)
[12/01/08]
DNS et Bind
345
Ladresse du serveur par dfaut tant 0.0.0.0, nslookup utilise lhte local comme serveur. Le nom du serveur (Default Server) a t obtenu directement du systme dexploitation et non par interrogation du service de noms. Ce nest que lors dune recherche que lon constate quaucun serveur ne rpond, comme lindique le message no response from server. La commande ls permet de distinguer un serveur qui nexiste pas dun serveur qui ne rpond pas. Dans lexemple suivant, il nexiste pas de serveur :
% nslookup Default Server: toystory.movie.edu Address: 0.0.0.0#53 > ls foo. Essai de transfert dune zone inexistante *** Can't list domain foo.: No response from server
[12/01/08]
DNS et Bind
346
Le message nonexistent domain indique que le nom 3.249.249.192.in-addr.arpa nexiste pas. nslookup ne peut donc pas trouver le nom du serveur correspondant 192.249.249.3. la section prcdente, nous avons dit que nslookup ne recherche rien au dmarrage. Cependant, si un chier resolv.conf contient des lignes nameserver, nslookup lance la recherche inverse du nom du serveur partir des adresses. Dans lexemple, nous savons quun serveur existe sur 192.249.249.3 ; le message signie donc quil ny a pas denregistrement PTR pour cette adresse. Le message default servers are not available de lexemple induit en erreur, car il y a bien un serveur pour dire que ladresse nexiste pas. On verra plus souvent no response from server, qui signie que le serveur nest pas en service sur lhte ou que lhte ne peut pas tre atteint.
Requte refuse
Les requtes refuses peuvent poser des problmes au dmarrage de nslookup, ainsi que des dfaillances de recherche en cours de session. Voici le cas dune dfaillance de nslookup au dmarrage en raison du refus de la requte :
% nslookup *** Can't find server name for address 192.249.249.3: Query refused *** Default servers are not available %
Les listes daccs peuvent empcher nslookup de dmarrer. Lorsque nslookup tente de trouver le nom de son serveur laide dune requte PTR, la requte peut tre refuse. Si on pense quil sagit dun problme de scurit, il faut vrier que la structure allowquery contient bien le numro IP de lhte qui excute nslookup, ainsi que ladresse de bouclage si nslookup sexcute sur le mme hte que le serveur de noms.
Le premier serveur de noms indiqu dans resolv.conf ne rpond pas. Une seconde directive nameserver a t place dans resolv.conf et ce serveur rpond. Dsormais, nslookup enverra les requtes uniquement wormhole.movie.edu et nessaiera plus le serveur situ en 192.249.249.3.
Visualiser la recherche
Dans les exemples prcdents, nous avons dit que nslookup cherche le nom du serveur par dfaut lors de son dmarrage, ce qui peut tre mis en vidence par lutilisation du dbogage de second niveau, d2, en ligne de commande. De cette manire, nslookup afche les messages de requte quil envoie ainsi que les dpassements de dlai et les retransmissions :
[12/01/08]
DNS et Bind
347
*** Can't find server name for address 192.249.249.3: No response from server *** Default servers are not available
Comme le montrent les temps dattente, nslookup attend 75 secondes avant dabandonner la requte. En labsence de dbogage, pendant cette priode, rien napparatrait lcran, ce qui peut amener penser tort que nslookup ne fonctionne pas.
Ici, il y a plus dinformations que ne peut en contenir un datagramme UDP Le serveur . de noms a cess de construire la rponse lorsque la taille maximale a t atteinte. Le serveur na pas valid le bit tronqu dans le paquet de rponse an que le demandeur ne ritre pas sa requte en TCP ; le serveur a sans doute estim quil a dj fourni sufsamment de renseignements pour que le demandeur puisse travailler. Ce type derreur apparat lorsquon a cr trop denregistrements NS pour une zone. Le nombre maximal dpend de la compression des noms qui vont tre placs dans le paquet de rponse, cest--dire du nombre de noms de serveurs qui se terminent par le mme nom
[12/01/08]
DNS et Bind
348
de domaine. Les serveurs de la racine ont t renomms an de se terminer tous par le domaine root-servers.net pour cette raison, ce qui a permis den crer treize sur lInternet. La rgle des dix serveurs suft dans le cas gnral. Ce sujet est voqu aux Chapitres 9 et 14.
Utiliser dig
Et voil pour nslookup. Mais nous disposons aussi de dig (Domain Information Groper). dig nest pas aussi rpandu que nslookup. Le programme source se trouve dans les rpertoires src/bin/dig (BIND 8) ou bin/dig (BIND 9) de la distribution de BIND. dig permet de dnir en ligne de commande tous les lments dune requte ; il ny a pas de mode interactif. On indique le nom et le type rechercher (a pour un enregistrement dadresse, mx pour un enregistrement MX, etc) ; le type par dfaut est lenregistrement dadresse. Le nom du serveur interroger apparat aprs un @. Un serveur est dni par son nom ou son adresse IP Par dfaut, les serveurs dnis dans resolv.conf sont . interrogs. dig est souple utiliser. On peut donner les arguments dans nimporte quel ordre et dig se rend tout seul compte que mx est a priori un type denregistrement, et pas un nom chercher5.
4. 5.
NdT : ici, ladministrateur du domaine a cr un alias du nom quit, le CNAME use.exit.to.leave.nslookup, qui est en fait un message (utilisez.exit.pour.quitter.nslookup) ! En ralit, les premires versions de dig pour BIND 9 (avant 9.1.0) requirent que le nom rechercher soit indiqu avant le type. Il ny a pas de contrainte pour la place du serveur interroger.
[12/01/08]
DNS et Bind
Utiliser dig
349
la diffrence de nslookup, dig nutilise pas la liste de recherche ; il faut donc toujours utiliser des noms totalement qualis. Ainsi :
% dig plan9.fx.movie.edu
6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D 6D
IN IN IN IN IN IN IN IN IN IN IN IN IN
NS NS NS NS NS NS NS NS NS NS NS NS NS
A.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET.
[12/01/08]
DNS et Bind
350
G.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. ;; ;; ;; ;; 6D IN A 6D IN A 6D IN A 5w6d16h 5w6d16h 5w6d16h 5w6d16h 6D IN A 6D IN A 6D IN A
IN IN IN IN
A A A A
Total query time: 116 msec FROM: toystory.movie.edu to SERVER: a.root-servers.net 198.41.0.4 WHEN: Fri Sep 15 09:47:26 2000 MSG SIZE sent: 17 rcvd: 436
La premire ligne, qui commence par le caractre de dbut de commentaire ; suivi de <<>> DiG 8.3 <<>>, reprend les options indiques en ligne de commande. Ici, on interroge a.root-servers.net au sujet des serveurs (ns) de la zone racine (.). La ligne suivante, (1 server found), indique que dig a trouv un serveur lorsquil a cherch les adresses associes au nom qui apparat aprs le @ , ici a.root-servers.net (si dig trouve plus de trois serveurs, le nombre maximal que la plupart des resolvers peuvent interroger, il nen afche que trois). La ligne commenant par ->> HEADER <<- est la premire partie de len-tte du message reu du serveur distant. Le code dopration dans len-tte est toujours QUERY, tout comme avec nslookup. Le code dtat est NOERROR mais il peut prendre toutes les valeurs mentionnes la section Afcher les requtes et les rponses, page 338. ID est un nombre de 16 bits qui permet dassocier requte et rponse. Les drapeaux nous donnent plus dindications. qr signie que ce message est une rponse et non pas une requte. dig dcode les rponses, pas les requtes, aussi qr est-il toujours prsent, ce qui nest pas le cas de aa ou rd. aa indique que la rponse fait autorit et rd que la rcursivit a t demande dans la requte (le serveur qui rpond ne fait que recopier le drapeau de la requte vers la rponse). En gnral lorsque rd est valid dans la requte, ra apparat dans la rponse, signiant que la rcursivit est disponible sur le serveur distant. Toutefois, a.root-servers.net est un serveur de la racine et il ne traite pas les requtes rcursivement (voir le Chapitre 11). Il traite donc une requte rcursive comme si elle tait itrative ; il ne valide pas le drapeau ra, ignorant la demande porte par le drapeau rd. Le dernier champ de len-tte indique que dig a pos 1 question et a reu 13 enregistrements dans la section de la rponse, aucun (0) enregistrement dans la section des serveurs faisant autorit et 13 enregistrements dans la section complmentaire. La ligne qui suit QUERY SECTION: prcise la requte envoye par dig, cest--dire une recherche denregistrement NS dans la classe IN pour la zone racine. Les 13 enregistrements NS des serveurs de la racine apparaissent aprs ANSWER SECTION: et leurs adresses respectives suivent ADDITIONAL SECTION:. Enn, dig donne quelques indications sur la question et sur la rponse. La premire ligne montre le temps dattente entre lenvoi de la question et la rception de la rponse.
[12/01/08]
DNS et Bind
Utiliser dig
351
La seconde ligne donne lidentit du demandeur et celle du serveur interrog. La troisime ligne donne une estampille temporelle de la rception de la rponse. La dernire ligne fournit la taille de la requte et de la rponse, en octets.
; ; ; ; ;
outland.fx wormhole wh249 shrek toys cujo wh253 wh shining toystory localhost fx bladerunner.fx fx outland.fx me carrie monsters-inc misery @
toystory wormhole outland.fx 192.253.254.3 192.249.249.1 192.253.253.1 192.249.249.1 192.249.249.2 toystory "Location:" "machine" "room" "dog" "house" 192.253.253.1 wormhole 192.253.253.3 192.249.249.3 127.0.0.1 bladerunner.fx 192.253.254.2 outland.fx 192.253.254.3 monsters-inc 192.253.253.4 192.249.249.4 192.253.253.2 toystory al ( 2000091402 ; serial
[12/01/08]
DNS et Bind
352
3H 1H 1W 1H )
;; Received 25 answers (25 records). ;; FROM: toystory.movie.edu to SERVER: wormhole.movie.edu ;; WHEN: Fri Sep 22 11:02:45 2000
Notons que comme avec nslookup, lenregistrement SOA apparat deux fois, en dbut et en n de zone. Comme pour tous les afchages de dig, le rsultat du transfert apparat comme dans un chier de zone, ce qui permet ventuellement de rediriger la sortie vers un chier6.
Options de dig
dig a trop doptions pour que nous les numrions toutes. Il vaut mieux consulter sa documentation. Voici une description des options les plus importantes : x adresse Lorsque le nom recherch est une adresse IP nslookup le dtecte automatiquement , et interroge le domaine appropri dans in-addr.arpa. Loption x de dig lui indique que le nom recherch est en ralit une adresse IP dig inverse alors lordre des . octets et consulte in-addr.arpa. Le type de la requte devient ANY, ce qui permet deffectuer la recherche de la correspondance de ladresse IP vers le nom. p port dig envoie les requtes au port prcis, au lieu du port standard 53. +norec[urse] dig dsactive la rcursivit (active en standard). +vc dig envoie des requtes bases sur TCP (elles sont en UDP en standard).
6.
[12/01/08]
DNS et Bind
13
Interprtation des informations de dbogage de BIND
Lys tigr, dit Alice, en sadressant un lys qui se balanait avec grce au souffle du vent, comme je voudrais que vous puissiez parler ! Nous pouvons fort bien parler, rpondit le Lys tigr, quand nous avons un interlocuteur valable.
Le mode de dbogage est un outil important de mise au point. Si un serveur de noms a t compil avec loption DEBUG, on peut obtenir des rapports sur le droulement des requtes. Malheureusement, les messages obtenus sont souvent obscurs, car ils ont t conus pour les utilisateurs ayant accs au code source. Ce chapitre tente de donner sufsamment dindications pour comprendre ce que fait un serveur, sans dresser une liste exhaustive des messages de dbogage. Comme vous le constaterez la lecture de ce chapitre, le regroupement ici de toutes les informations de dbogage dj vues vous aidera mieux comprendre le fonctionnement dun serveur de noms.
Niveaux de dbogage
La quantit dinformations afche par un serveur dpend du niveau de dbogage : plus le niveau est haut, plus il y a de dtails (et plus le disque se remplit vite). Avec de lexprience, on peut dterminer au pralable le niveau de dbogage adapt. Si on peut reproduire le problme, on peut aussi se contenter de commencer au niveau 1, puis augmenter progressivement le niveau jusqu obtenir assez dinformations pour travailler. La plupart du temps, le niveau 1 suft.
DNS et Bind
354
sa base de donnes interne, peut former un problme, comme nous le verrons au Chapitre 14. BIND 8 et 9 possdent 99 niveaux de dbogage, mais la plupart des messages ne sont gnrs quavec quelques uns de ces niveaux.
[12/01/08]
DNS et Bind
Niveaux de dbogage
Niveau 9 Pas de message signicatif pour le dbogage.
355
Niveau 10 Ce niveau afche les paquets de requtes et de rponses envoys par le serveur. Le format des paquets est le mme quau niveau 4. Ce niveau est peu utilis car on utilise en gnral nslookup ou dig pour afcher les paquets de rponse. Niveau 11 Les messages partir de ce niveau proviennent de parties de code rarement utilises.
[12/01/08]
DNS et Bind
356
messages de bas niveau lis aux transferts de zone apparaissent ici, dont une journalisation des enregistrements de ressource envoys. Niveau 10 Le niveau 10 afche des messages concernant la gestion de la temporisation dune zone. Niveau 20 Le niveau 20 signale la mise jour dun temporisateur de rafrachissement de zone. Niveau 90 Ce niveau signale les oprations de rpartition de tches de BIND 9. Avec BIND 8 et 9, on peut congurer le serveur pour quil afche le niveau de dbogage en mme temps que le message associ. Il suft de valider loption print-severity (voir la section Messages gnrs par BIND la page 138). Il faut bien comprendre quil sagit dinformations de dbogage, utilises par les auteurs de BIND pour sa mise au point. Cest pour cela quelles sont peu lisibles. Vous pouvez les utiliser pour comprendre le comportement de votre serveur de noms. Toutefois, vous ne devez pas vous attendre des afchages agrables lire.
Lancer le dbogage
Le dbogage peut tre activ, soit en ligne de commande, soit laide de messages de contrle. Si les informations de dmarrage sont ncessaires pour analyser le problme courant, il faut utiliser loption en ligne de commande. Si on veut dboguer un serveur dj actif, ou si on veut dsactiver le dbogage, il faut utiliser les messages de contrle. Le serveur crit ses informations de dbogage dans le chier named.run situ dans son rpertoire de travail.
[12/01/08]
DNS et Bind
357
Mme si le dbogage a t dmarr partir de la ligne de commande, on peut utiliser rndc pour modier le niveau de dbogage.
[12/01/08]
DNS et Bind
358
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
Les numros en dbut de ligne ont t ajouts manuellement et servent uniquement se reprer dans les commentaires. Les lignes 2-6 indiquent la version de BIND utilise ainsi que le nom du chier de conguration. La version 8.2.3-T 7B a t distribue par lISC (Internet Software Consortium) en aot 2000. Le chier de conguration, ./named.conf, est plac dans le rpertoire de travail de named. Les lignes 7-23 reprsentent la lecture du chier de conguration et des chiers de zone par BIND. Ce serveur est uniquement un serveur cache ; les seuls chiers lus sont db.127.0.0 (lignes 9-16) et db.cache (lignes 17-23). La ligne 9 montre la mise jour dune zone (0.0.127.in-addr.arpa) et la ligne 10 prsente le nom du chier contenant les donnes de la zone (db.127.0.0). La ligne 11 indique que toute ancienne donne sera efface de la zone avant dajouter de nouvelles donnes. La ligne 12 dit que la zone est en train dtre recharge, mme sil sagit du premier chargement. Les lignes 13-15 correspondent au chargement des donnes. Aux lignes 16-23, z_time est lheure du prochain test de validit de la zone et z_refresh est lintervalle de rafrachissement. Ces valeurs nont dutilit que si le serveur est un esclave pour la zone. Les lignes 25-39 montrent linitialisation des descripteurs de chier ; ici, il sagit de descripteurs de socket. Les descripteurs 20 et 21 (lignes 27-29) sont lis ladresse de bouclage 127.0.0.1. Le descripteur 20 est une socket datagramme et le descripteur 21 est une socket par ot (stream). Les descripteurs 22 et 23 (lignes 32-34) sont lis linterface dadresse 192.249.249.3. Chaque interface est prise en compte et utilise, sauf si elle na pas t initialise ou si elle a dj t prise en compte. Le descripteur 5 (lignes 36-39) est li ladresse gnrique 0.0.0.0. La plupart des applications de service rseau nutilisent quune socket, lie ladresse gnrique, mais pas de socket lie aux interfaces. Ladresse gnrique intercepte les paquets envoys aux interfaces. Voici pourquoi named utilise simultanment une socket lie ladresse gnrique et des sockets lies des interfaces spciques.
[12/01/08]
DNS et Bind
359
Toute requte en provenance dune application ou dun autre serveur, arrive sur lune des sockets lies lune des interfaces. Si named navait pas de sockets lies aux interfaces, il recevrait les requtes sur la socket lie ladresse gnrique. Lorsque named envoie une rponse, il utilise le mme descripteur de socket que celui de la requte. En effet, si les rponses taient expdies via la socket lie ladresse gnrique, le noyau remplirait le champ adresse dexpditeur avec ladresse de linterface utilise pour la rponse, identique ou non celle laquelle la requte a t envoye. Or, si un serveur de noms reoit une rponse en provenance dune adresse dont il ignore tout, la rponse est abandonne. named essaie donc dviter ce comportement en envoyant la rponse via les descripteurs lis aux interfaces spciques, an que ladresse dexpditeur soit la mme que celle ayant reu la requte. Par contre, lorsque named envoie une requte, il sadresse au descripteur gnrique car il ny a aucune raison dutiliser une adresse IP spcique. Les lignes 43-47 montrent une requte systme envoye par le serveur, qui recherche la liste des serveurs de la racine, an damorcer la mmoire cache (priming the cache). Le premier serveur interrog renvoie une rponse contenant 13 serveurs. Le serveur est maintenant initialis et prt rpondre aux requtes.
Les lignes 1 et 2 montrent la version de BIND excute (ici 9.3.2) et le nom de son chier de conguration. La ligne 3 rappelle que lhte courant ne dispose pas dinterfaces en IPv6 ; dans le cas contraire, BIND ne pourrait pas tre lcoute sur ces interfaces. Les lignes 4 et 5 indiquent que le serveur de noms est lcoute sur deux interfaces : lo, linterface de bouclage, et eth0, linterface Ethernet. BIND 9 afche ladresse et le numro de port sous la forme adresse#port, alors que BIND 8 les afche sous la forme [adresse].port. La ligne 6 montre que named est lcoute des messages de contrle sur le port 953, le port par dfaut. BIND 9 lit alors le chier de conguration et change de rpertoire de travail pour celui dni comme contenant les bases de donnes, si le chier de conguration dispose dune structure options dnissant un autre rpertoire. Voici un exemple :
options { directory "/var/named"; };
[12/01/08]
DNS et Bind
360
Les lignes 3-6 montrent le chargement de 0.0.127.in-addr.arpa par le serveur. Les messages starting et loaded parlent deux-mmes. Le message no journal indique quil ny a pas de journal (au Chapitre 10, nous avons vu quun journal est une trace des mises jour dynamiques reues par un serveur pour une zone). Les lignes 7-14 prsentent le chargement des zones CHAOSNET authors.bind, hostname.bind, version.bind et id.server, intgres dans BIND. Enn, les lignes 15-19 montrent le serveur en cours dopration de maintenance sur ses zones. La maintenance de zone est une opration priodique qui ralise, par exemple, la recherche denregistrements SOA pour un esclave ou une zone source, ou encore lenvoi de messages NOTIFY. Si vous tes intrigu par les zones intgres de la famille CHAOSNET, vous pouvez interroger le serveur de noms laide de dig, en recherchant le nom authors.bind, le type denregistrement any et la classe CHAOSNET :
# dig @wormhole.movie.edu authors.bind any c ; <<>> DiG 9.3.2 <<>> @wormhole.movie.edu authors.bind any ch ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6822 ;; flags: qr aa rd; QUERY: 1, ANSWER: 14, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;authors.bind.
CH
ANY
[12/01/08]
DNS et Bind
361
0 0 0 0 0 0 0 0 0 0 0 0 86400 86400 0
CH CH CH CH CH CH CH CH CH CH CH CH
TXT TXT TXT TXT TXT TXT TXT TXT TXT TXT TXT TXT CH SOA NS
"Mark Andrews" "James Brister" "Ben Cottrell" "Michael Graff" "Andreas Gustafsson" "Bob Halley" "David Lawrence" "Danny Mayer" "Damien Neil" "Matt Nelson" "Michael Sawyer" "Brian Wellington" authors.bind. hostmaster.authors.bind. authors.bind.
CH
Query time: 2 msec SERVER: wormhole.movie.edu#53(192.249.249.1) WHEN: Sun Jun 26 16:30:28 2005 MSG SIZE rcvd: 402
[12/01/08]
DNS et Bind
362
A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4 H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53 B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107 C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12 D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90 E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10 I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17 F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241 G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4 resp: nlookup(galt.cs.purdue.edu) qtype=1 resp: found 'galt.cs.purdue.edu' as 'edu' (cname=0) resp: forw -> [192.36.148.17].53 ds=4 nsid=40071 id=29574 1ms datagram from [192.36.148.17].53, fd 4, len 202 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40071 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 4, ADDITIONAL: 4 ;; galt.cs.purdue.edu, type = A, class = IN PURDUE.EDU. 2D IN NS NS.PURDUE.EDU. PURDUE.EDU. 2D IN NS MOE.RICE.EDU. PURDUE.EDU. 2D IN NS PENDRAGON.CS.PURDUE.EDU. PURDUE.EDU. 2D IN NS HARBOR.ECN.PURDUE.EDU. NS.PURDUE.EDU. 2D IN A 128.210.11.5 MOE.RICE.EDU. 2D IN A 128.42.5.4 PENDRAGON.CS.PURDUE.EDU. 2D IN A 128.10.2.5 HARBOR.ECN.PURDUE.EDU. 2D IN A 128.46.199.76 resp: nlookup(galt.cs.purdue.edu) qtype=1 resp: found 'galt.cs.purdue.edu' as 'cs.purdue.edu' (cname=0) resp: forw -> [128.46.199.76].53 ds=4 nsid=40072 id=29574 8ms datagram from [128.46.199.76].53, fd 4, len 234 send_msg -> [192.249.249.3].1162 (UDP 20) id=29574 Debug off
Tout dabord, notons que ce ne sont pas des noms mais bien des adresses IP qui sont enregistres. En effet, le dbogage devant tre utilis pour analyser un dysfonctionnement du service de noms, il ne faut pas que ce dbogage gnre lui-mme des requtes uniquement pour amliorer la lisibilit des rsultats. Aucun niveau de dbogage ne convertit les adresses IP en noms. Pour cela, il faut utiliser un outil tel que celui prsent en n de chapitre. tudions maintenant, une une, les lignes de dbogage. Cette approche dtaille est importante si vous voulez comprendre la signication de chaque ligne. Lorsque vous avez valid le dbogage, vous cherchiez probablement comprendre pourquoi certains noms ntaient pas rsolus et vous devez maintenant interprter les traces.
datagram from [192.249.249.3].1162, fd 20, len 36
Un datagramme est arriv en provenance de lhte dadresse 192.249.249.3 (toystory.movie.edu). Si la requte venait de lhte local lui-mme, ladresse dorigine serait 127.0.0.1. Le client a utilis le port 1162. Le serveur reoit le datagramme via le descripteur de chier ( fd) 20. Le dbogage ds le dmarrage pourrait montrer quelle interface est li ce descripteur. La longueur (len) du datagramme est de 36 octets.
req: nlookup(galt.cs.purdue.edu) id 29574 type=1 class=1
[12/01/08]
DNS et Bind
363
La ligne dbute par req ; il sagit donc dun datagramme de requte. Le nom recherch est galt.cs.purdue.edu. Lidentiant de la requte est 29574. type=1 indique quil sagit dune requte dadresse, et class=1 de la classe IN. Le chier den-ttes /usr/include/arpa/ nameser.h donne une liste complte des types et des classes.
req: missed 'galt.cs.purdue.edu' as '' (cname=0)
Le serveur recherche le nom souhait et ne le trouve pas. Puis il cherche un serveur de noms distant pour linterroger, mais il lui faut remonter jusqu la zone-racine (symbolise par ''). cname=0 indique quaucun enregistrement CNAME na t rencontr. Si un CNAME est dcouvert, le serveur recherche le nom canonique associ et cname devient non nul.
forw: forw -> [198.41.0.10].53 ds=4 nsid=40070 id=29574 2ms retry 4sec
La requte a t retransmise au serveur (port 53) sur lhte 198.41.0.10 (j.rootservers.net). Le serveur a utilis le descripteur de chiers 4 (li ladresse gnrique) pour envoyer la requte. Le serveur tiquette cette requte avec le numro didentication 40070 (nsid=40070) an de pouvoir y associer la rponse. Lapplication utilise le numro didentication 29574 (id=29574) comme le montre la ligne nlookup. Le serveur attend quatre secondes avant dessayer le serveur suivant.
datagram from [198.41.0.10].53, fd 4, len 343
Le serveur j.root-servers.net rpond. La rponse indique une dlgation (voir lafchage complet), ce qui est afch clairement.
resp: nlookup(galt.cs.purdue.edu) qtype=1
Aprs le stockage de la rponse dans la mmoire cache, le nom est nouveau recherch. qtype=1 signale une recherche dadresse.
resp: found 'galt.cs.purdue.edu' as 'edu' (cname=0) resp: forw -> [192.36.148.17].53 ds=4 nsid=40071 id=29574 1ms datagram from [192.36.148.17].53, fd 4, len 202
Le serveur de la racine indique une dlgation vers les serveurs de edu. La mme requte est ensuite envoye 192.36.148.17 (i.root-servers.net), lun des serveurs de edu. i.rootservers.net indique une dlgation concernant les serveurs de purdue.edu :
resp: found 'galt.cs.purdue.edu' as 'cs.purdue.edu' (cname=0)
Une requte est envoye au serveur 128.46.199.76 (harbor.ecn.purdue.edu). Cette fois-ci, lidentiant de requte est 40072.
datagram from [128.46.199.76].53, fd 4, len 234
Le serveur harbor.ecn.purdue.edu rpond. Il faut considrer ce qui arrive ensuite pour comprendre cette rponse.
send_msg -> [192.249.249.3].1162 (UDP 20) id=29574
La dernire rponse contient ladresse recherche, puisque le serveur rpond lapplication appelante qui avait utilis le port 1162 lors de sa requte initiale. La rponse transite dans un paquet UDP (et non pas TCP) et utilise le descripteur de chiers 20.
[12/01/08]
DNS et Bind
364
Lors de la capture de cet exemple, le serveur ntait pas sollicit ; il ny avait aucune autre requte. Sur un serveur actif, il faudrait extraire les lignes correspondant la recherche observe parmi dautres informations. Pour cela, il faut rechercher la ligne nlookup contenant le nom recherch, puis reprer les entres de mme nsid. Un prochain exemple indiquera comment suivre les enchanements de nsid pour BIND 8.
Ces messages rappellent en fait la question pose. En validant la journalisation laide de la structure logging dans le chier /etc/named.conf, vous pourrez observer les requtes relles :
logging { category queries { default_debug; }; };
La premire ligne montre que le client dadresse 192.249.249.3 (cest dire lhte local) envoie une requte dadresse concernant galt.cs.purdue.edu partir du port 1090. Le + en n de ligne indique que la rcursivit a t demande. Les autres lignes sont gnres par la partie du serveur qui effectue la rsolution et indiquent simplement que la recherche commence.
[12/01/08]
DNS et Bind
365
Les lignes 1-11 sont semblables aux exemples prcdents : le serveur reoit une requte en provenance de ucunix.san.uc.edu, envoie la requte un serveur de edu (i.rootservers.net), puis reoit une rponse comportant la liste des serveurs de uc.edu et enn, envoie la requte lun des serveurs de uc.edu (uceng.uc.edu). Les lignes resend (lignes 12, 17 et 18) sont une nouveaut. forw la ligne 11 quivaut resend(addr=0 n=0) (les compteurs des informaticiens ne commencent pas 1 mais toujours 0). Puisque uceng.uc.edu ne rpond pas, le serveur essaie ucbeh.san.uc.edu (ligne 12), uccba.uc.edu (ligne 17), puis mail.cis.ohio-state.edu (ligne 18). La rponse vient du serveur mail.cis.ohio-state.edu, situ lextrieur du site (ligne 20). Toutes les retransmissions peuvent tre suivies en recherchant nsid=3, ce qui permet de facilement extraire les lignes qui nous intressent dun ventuel ot de messages. Remarquons quun second datagramme arrive de toystory.movie.edu (ligne 14) ; il a les mmes port, descripteur de chier, longueur, ID et type que la requte de la ligne 3. Lapplication nayant pas reu de rponse assez rapidement, elle a retransmis sa requte. Puisque le serveur traite encore la requte initiale, celle-ci est considre comme duplique. La duplication nest pas indique ici, mais le serveur la dtecte et limine la requte. On peut se douter de llimination, puisquil ny a aucune ligne forw: aprs les lignes req:, la diffrence des lignes 4-6. On peut imaginer ce que seraient les journalisations si le serveur avait des problmes dans la recherche. On verrait un grand nombre de retransmissions durant les recherches (quon peut reprer en recherchant les lignes nsid=) ; lapplication enverrait un ensemble de retransmissions, pensant que le serveur na pas reu la premire requte. Finalememt, le serveur de noms les abandonnerait, habituellement aprs labandon par lapplication elle-mme. Depuis les serveurs BIND 9.1.0, on ne voit pas les retransmissions avant un dbogage de niveau 3 et, ce niveau, il est trs difcile disoler les informations intressantes. De plus, mme ce niveau de dbogage, BIND 9.1.0 nindique pas le serveur vers lequel la retransmission a lieu.
[12/01/08]
DNS et Bind
366
21-Feb 00:14:02.089 endxfer: child 390 zone movie.edu returned status=1 termsig=-1 21-Feb 00:14:02.094 loadxfer( ) "movie.edu" 21-Feb 00:14:02.094 purge_zone(movie.edu,1) 21-Feb 00:14:30.049 db_load(db.movie, movie.edu, 2, Nil) 21-Feb 00:14:30.058 next maintenance for zone 'movie.edu' in 1846 sec 21-Feb 00:17:12.478 slave zone "movie.edu" (IN) loaded (serial 26739) 21-Feb 00:17:12.486 no schedule change for zone 'movie.edu' 21-Feb 00:42:44.817 Cleaned cache of 0 RRs 21-Feb 00:45:16.046 do_zone_maint for zone movie.edu (class IN) 21-Feb 00:45:16.054 zone_maint('movie.edu')
[12/01/08]
DNS et Bind
367
la diffrence des traces prcdentes, chaque ligne de celle-ci commence par une estampille temporelle qui permet de mieux reprer les rafales dinformations. Ce serveur est esclave pour une seule zone, movie.edu. La ligne 00:13:18.026 indique quil est temps de vrier la validit de la zone. Lesclave demande lenregistrement SOA de la zone et compare les numros de srie avant de prendre la dcision de transfrer la zone. Les lignes 00:13:18.059 00:13:18.131 montrent le numro de srie de la zone (26739), indiquent que les donnes de lesclave sont primes et quil y a un dmarrage de processus (pid 390) pour transfrer la zone. 00:13:18.132, un temporisateur est initialis 7200 secondes ; il sagit du temps maximal que lesclave accorde au transfert. 00:14:02.089, le processus ls prend n avec un tat (status) gal 1, ce qui signale un transfert correct. Les anciennes donnes sont purges 00:14:02.094, et les nouvelles sont charges. La prochaine maintenance (ligne 00:14:30.058) aura lieu dans 1846 secondes. Pour cette zone, lintervalle de rafrachissement est de 3600 secondes, mais le serveur a choisi 1846. En effet, les serveurs-esclaves tentent de ne pas se synchroniser simultanment, en choisissant alatoirement une dure comprise entre la moiti (1800) et la totalit (3600) de lintervalle de rafrachissement. 00:45:16.046, la validit des donnes est nouveau teste et lesclave conclut que la zone est jour. En effectuant un dbogage sur une longue dure, on verra apparatre toutes les heures des lignes identiques celle de 00:42:44.817. Il sagit dun parcours de la mmoire cache pour effacer les donnes primes et diminuer la taille de mmoire utilise. Le serveur-matre de cette zone utilise BIND 4. Sil utilisait BIND 8, lesclave serait averti dune mise jour de zone avant la n de lintervalle de rafrachissement. Les informations de dbogage seraient les mmes mais il y aurait en plus un signal NOTIFY, demandant un test de validit de zone :
rcvd NOTIFY(movie.edu, IN, SOA) from [192.249.249.3].1059 qserial_query(movie.edu) sysquery: send -> [192.249.249.3].53 dfd=5 nsid=29790 id=0 retry=888048802
[12/01/08]
DNS et Bind
368
04-Jul-2005 15:05:00.059 soa_query: zone movie.edu/IN: enter 04-Jul-2005 15:05:00.061 refresh_callback: zone movie.edu/IN: enter 04-Jul-2005 15:05:00.062 refresh_callback: zone movie.edu/IN: Serial: new 2005010923, old 2005010922 04-Jul-2005 15:05:00.062 queue_xfrin: zone movie.edu/IN: enter 04-Jul-2005 15:05:00.062 zone movie.edu/IN: Transfer started. 04-Jul-2005 15:05:00.062 zone movie.edu/IN: requesting IXFR from 192.249.249.3#53 04-Jul-2005 15:05:00.063 transfer of 'movie.edu/IN' from 192.249.249.3#53: connected using 192.249.249.2#1106 04-Jul-2005 15:05:00.070 calling free_rbtdb(movie.edu) 04-Jul-2005 15:05:00.070 zone movie.edu/IN: zone transfer finished: success 04-Jul-2005 15:05:00.070 zone movie.edu/IN: transferred serial 5 04-Jul-2005 15:05:00.070 transfer of 'movie.edu' from 192.249.249.3#53: end of transfer 04-Jul-2005 15:05:01.089 zone_timer: zone movie.edu/IN: enter 04-Jul-2005 15:05:01.089 zone_maintenance: zone movie.edu/IN: enter 04-Jul-2005 15:05:19.121 notify_done: zone movie.edu/IN: enter 04-Jul-2005 15:05:19.621 notify_done: zone movie.edu/IN: enter
Le message 15:05:00.059 montre le dclenchement du temporisateur de rafrachissement, entranant lopration de maintenance de zone qui dbute la ligne suivante. Le serveur initialise tout dabord une requte de SOA pour la zone movie.edu de la classe IN (queue_soa_query), puis lenvoie. 15:05:00.062, le serveur local trouve que le serveur-matre a un numro de srie plus lev (2005010923 et non pas 2005010922) ; il prpare donc un transfert de zone entrant (queue_xfrin). Huit millisecondes plus tard ( 15:05:00.070), le transfert est termin et, 15:05:01.089, le serveur rinitialise le temporisateur de rafrachissement (zone_timer). Les trois lignes suivantes montrent le serveur nouveau en maintenance sur movie.edu. Si, par exemple, certains des serveurs de movie.edu sont situs en dehors de la zone movie.edu, le serveur pourrait utiliser cette opportunit pour rechercher leur adresse (pas uniquement les enregistrements A, mais galement les enregistrements A6 ou AAAA), an quil puisse les inclure dans de prochaines rponses. Dans les deux dernires lignes, le serveur envoie deux messages NOTIFY aux serveurs apparaissant dans les enregistrements NS de movie.edu.
DNS et Bind
369
datagram from D.ROOT-SERVERS.NET 53, fd 5, len 25 ncache: dname foo.bar, type 1, class 1 send_msg -> cujo.horror.movie.edu 1109 (UDP 6) id=19220 datagram from cujo.horror.movie.edu 1110, fd 6, len 42 req: nlookup(foo.bar.horror.movie.edu) id 19221 type=1 class=1 req: found 'foo.bar.horror.movie.edu' as 'horror.movie.edu' (cname=0) forw: forw -> carrie.horror.movie.edu 53 ds=7 nsid=2533 id=19221 0ms retry 4sec datagram from carrie.horror.movie.edu 53, fd 5, len 42 ncache: dname foo.bar.horror.movie.edu, type 1, class 1 send_msg -> cujo.horror.movie.edu 1110 (UDP 6) id=19221
tudions maintenant lalgorithme de recherche du resolver. La premire recherche (ligne 2) correspond celle du nom demand ; comme ce nom comporte au moins un point, il est recherch tel quel. Lorsque cette recherche choue, horror.movie.edu est ajout au nom et une nouvelle recherche est effectue. La ligne 7 montre la rponse ngative (ncache). Si le mme nom est nouveau recherch dans les minutes suivantes (ligne 19), le serveur a encore la rponse ngative en mmoire cache ; il peut alors rpondre immdiatement que le nom nexiste pas. La comparaison des lignes 3 et 19 montre la diffrence entre les deux recherches. La ligne 3 indique que foo.bar nest pas en mmoire ; la ligne 19, le serveur a trouv le nom complet.
[12/01/08]
DNS et Bind
370
Lafchage de ces messages suppose que les lignes suivantes ont t pralablement ajoutes au chier /etc/named.conf an de pouvoir voir les requtes :
logging { category queries { default_debug; }; };
Ces messages sont plus concis et subtils que ceux de BIND 8, mais ils sont sufsants pour comprendre le droulement de lopration. La premire ligne, 15:45:42.944, montre la requte initiale de ladresse de foo.bar provenant du client cujo.horror.movie.edu (aprs utilisation de notre outil de conversion dune adresse en nom, que nous prsenterons plus loin). Les deux lignes suivantes montrent le serveur lanant deux oprations (createfetch) pour rechercher foo.bar : la premire est la recherche de ladresse, et la seconde est une tche annexe de recherche des enregistrements NS de la racine, indispensables pour terminer la recherche de foo.bar. Une fois que le serveur a les enregistrements NS de la racine, il interroge un serveur de la racine la recherche de ladresse de foo.bar et reoit une rponse lui indiquant que le domaine de niveau suprieur bar nexiste pas. Malheureusement, nous ne le voyons pas dans les messages. La ligne 15:45:43.425 montre lapplication de la liste de recherche par cujo.horror.movie.edu, puis la recherche de foo.bar.horror.movie.edu. Cela provoque la cration dune tche (createfetch) pour rechercher le nom. la recherche suivante de foo.bar, on obtient :
04-Jul-2005 15:45:46.557 client cujo.horror.movie.edu#1044: query: foo.bar A + 04-Jul-2005 15:45:46.558 client cujo.horror.movie.edu#1044: query: foo.bar.horror.movie.edu A +
Notons labsence de messages createfetch. Cela vient de la prsence de la rponse ngative prcdente dans la mmoire cache.
Il ne faut pas envoyer directement la sortie (pipe) du dbogage vers cet outil, car ce dernier gnre des requtes que lon verrait apparatre dans la journalisation.
[12/01/08]
DNS et Bind
14
Dpannage du DNS et de BIND
Bien sr que non, dit la Simili-Tortue. Vois-tu, si un poisson venait me trouver, moi, et me disait quil va partir en voyage, je lui demanderais : Avec un brochet ? Nest-ce pas projet et non brochet que vous voulez dire ? Je veux dire ce que je dis, rpliqua la Simili-Tortue dun ton offens. Et le Griffon ajouta : Allons, prsent, cest ton tour de nous raconter tes aventures.
Les deux derniers chapitres ont prsent nslookup et dig, ainsi que le dbogage. Ce nouveau chapitre aborde leur utilisation, ainsi que celle doutils tels que ping, dans le cadre du dpannage du DNS et de BIND. Par nature, le dpannage est un sujet dlicat traiter : on analyse les symptmes pour remonter la source dun problme. Bien quil soit impossible dvoquer la totalit des problmes, ltude des plus courants dentre eux peut aider rsoudre les plus obscurs.
[12/01/08]
DNS et Bind
372
Pour une conclusion valable, mieux vaut utiliser ypcat pour consulter la base de donnes des htes et rechercher si une information apparat dans la table des htes du NIS. La commande suivante permet de vrier la prsence de andrew.cmu.edu dans la table des htes :
% ypcat hosts | grep andrew.cmu.edu
Si on trouve la rponse dans le NIS (et quon sait que le NIS est consult en premier), on connat lorigine du problme. Enn, avec les versions dUnix qui utilisent le chier nsswitch.conf, on peut xer lordre dutilisation des diffrents services en compltant la ligne hosts. La ligne ci-dessous indique que le NIS est interrog en premier :
hosts: hosts: nis dns files 6 dtaille la syntaxe et la smantique du fichier nsswitch.conf.
alors quavec celle-ci, le resolver interroge dabord le DNS : Toutes ces indications devraient aider identier qui fait quoi et, en cas de problme, liminer certaines sources potentielles. Le reste de ce chapitre concerne les dysfonctionnements impliquant le DNS.
Utiliser named-xfer
named-xfer est dmarr par named sur un esclave BIND 8 an de tester la validit de la base de donnes et, si ncessaire, deffectuer le transfert de la zone (BIND 9 est multithread, ce qui fait quil ny a pas besoin de programme annexe pour effectuer un transfert entrant ; il a juste besoin de dmarrer un nouveau thread). Un exemple de dbogage de transfert de zone en BIND 8 est tudi au Chapitre 13. Lorsquun esclave transfre une zone, il dmarre un processus ls (named-xfer) pour transfrer les donnes vers un chier local. On peut aussi dmarrer manuellement named-xfer, ce qui permet dobtenir des informations de dbogage indpendamment de named. Cela permet danalyser un problme de transfert de zone sans attendre laction de named. Pour initialiser un transfert manuel de zone, il faut indiquer des options :
% /usr/sbin/named-xfer Usage error: no domain Usage: named-xfer -z zone_to_transfer -f db_file [-i ixfr_file] [-s serial_no] [-d debug_level] [-l debug_log_file] [-t trace_file] [-p port]
[12/01/08]
DNS et Bind
373
Il sagit ici de la syntaxe pour la version BIND 8.4.7 de named-xfer. Les versions antrieures ne disposent pas de toutes ces options. Quand named dmarre named-xfer, il indique loption -z (la zone que named veut tester), loption -f (le nom du chier de zone correspondant la zone, extrait de named.conf), loption -s (le numro de srie de la zone sur lesclave, extrait de lenregistrement SOA local) et les adresses des serveurs auprs desquels lesclave sait quil doit se synchroniser (les adresses IP indiques dans la sous-structure masters de la structure zone du chier named.conf). Si named sexcute en mode de dbogage, il indique aussi le niveau de dbogage pour named-xfer laide de loption -d. Les autres options ne sont en gnral pas ncessaires au dpannage ; elles concernent le transfert incrmental, les transferts scuriss par TSIG, etc. De la mme manire, en mode manuel, on peut aussi indiquer le niveau de dbogage avec loption -d en ligne de commande (il ne faut pas oublier quau-del du niveau 3, le dbogage produit de grandes quantits dinformations en cas de succs du transfert). On peut aussi indiquer un chier de dbogage alternatif avec loption -l. Le chier par dfaut est xfer.ddt.XXXXXX, o XXXXXX est un sufxe rajout pour diffrencier plusieurs chiers entre eux, dans le rpertoire /var/tmp ou dans le rpertoire /usr/tmp. On peut aussi dsigner le serveur-matre par son nom, plutt que par son adresse IP . La commande en ligne suivante teste le fonctionnement du transfert partir de toystory.movie.edu :
% /usr/sbin/named-xfer -z movie.edu -f /tmp/db.movie -s 0 toystory.movie.edu. % echo $? 4
Le numro de srie est 0, an de forcer le transfert de la zone mme si cela nest pas ncessaire. Si 0 est suprieur au numro de srie de movie.edu sur toystory (souvenons nous de larithmtique spciale des numros de srie), nous devrons choisir un autre nombre. Loption -f indique de sauvegarder les nouvelles donnes de zone dans /tmp, an de prserver les donnes actuellement utilises. La valeur renvoye par named-xfer permet de vrier le succs du transfert. Depuis BIND 8.1.2, on dispose de quatre valeurs de retour : 0 Les donnes sur lesclave sont jour et aucun transfert nest ncessaire. 1 Le transfert sest droul avec succs. 2 Les htes interrogs par named-xfer ne peuvent tre atteints ou une erreur est survenue et named-xfer a peut-tre envoy un message derreur syslog. 3 Une erreur est survenue et named-xfer a envoy un message derreur syslog. Quatre autres valeurs de retour sont disponibles depuis BIND 8.2 : 4 Le transfert intgral (AXFR) sest droul avec succs. 5 Le transfert incrmental (IXFR) sest droul avec succs.
[12/01/08]
DNS et Bind
374
6 Un transfert intgral (AXFR) a t envoy par le serveur-matre suite une demande de transfert incrmental (IXFR). 7 Le transfert a t refus. Un serveur-matre a le droit de gnrer un transfert intgral lors dune requte de transfert incrmental, notamment lorsquil a perdu une partie du journal des modications appliques la zone. Notons que depuis BIND 8.2, named-xfers nutilise plus la valeur de retour 1, remplace par les valeurs 4 7.
Absence de named-xfer
Si BIND a t mis jour vers la version 9 et quon na plus de programme named-xfer, on peut encore utiliser nslookup ou dig pour effectuer un transfert de zone. Ils permettront dobtenir certaines des informations quaurait renvoy named-xfer. Ainsi, avec dig, pour obtenir les mmes informations que prcdemment, utilisons :
% dig @toystory.movie.edu movie.edu. axfr
Avec nslookup, on pourrait changer le serveur interroger et utiliser la commande ls d en mode interactif. Malheureusement, dig et nslookup sont plus limits que named-xfer en cas derreur. Si nslookup ne peut pas transfrer une zone, il indique gnralement unspecied error :
> ls movie.edu. [toystory.movie.edu] *** Can't list domain movie.edu: Unspecified error
Cela peut provenir dune liste de contrle daccs allow-transfer, du fait quen ralit toystory.movie.edu ne fait pas autorit sur movie.edu, etc. Pour afner lanalyse, il faudrait envoyer dautres requtes ou consulter les messages de syslog sur le serveur-matre.
1.
BIND 9.1.0 est la premire version de BIND 9 pouvoir effectuer un dump de la base de donnes.
[12/01/08]
DNS et Bind
375
; Note: Cr=(auth,answer,addtnl,cache) tag only shown for non-auth RR's ; Note: NT=milliseconds for any A RR which we've used as a nameserver ; --- Cache & Data --$ORIGIN . . 518375 IN NS G.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS J.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS K.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS L.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS M.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS A.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS H.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS B.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS C.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS D.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS E.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS I.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] 518375 IN NS F.ROOT-SERVERS.NET. ;Cr=auth [128.8.10.90] EDU 86393 IN SOA A.ROOT-SERVERS.NET. hostmaster.INTERNIC.NET. ( 1998010500 1800 900 604800 86400 ) ;Cr=addtnl [128.63.2.53] $ORIGIN 0.127.in-addr.arpa. 0 IN SOA cujo.movie.edu. root.cujo.movie.edu. ( 1998010600 10800 3600 608400 86400 ) ;Cl=5 IN NS cujo.movie.edu. ;Cl=5 $ORIGIN 0.0.127.in-addr.arpa. 1 IN PTR localhost. ;Cl=5 $ORIGIN EDU. PURDUE 172787 IN NS NS.PURDUE.EDU. ;Cr=addtnl [192.36.148.17] 172787 IN NS MOE.RICE.EDU. ;Cr=addtnl [192.36.148.17] 172787 IN NS PENDRAGON.CS.PURDUE.EDU. ;Cr=addtnl [192.36.148.17] 172787 IN NS HARBOR.ECN.PURDUE.EDU. ;Cr=addtnl [192.36.148.17] $ORIGIN movie.EDU. ;cujo 593 IN SOA A.ROOT-SERVERS.NET. hostmaster.INTERNIC. NET. ( ; 1998010500 1800 900 604800 86400 );EDU.; NXDOMAIN ;-$ ;Cr=auth [128.63.2.53] $ORIGIN RICE.EDU. MOE 172787 IN A 128.42.5.4 ;NT=84 Cr=addtnl [192.36.148.17] $ORIGIN PURDUE.EDU. CS 86387 IN NS pendragon.cs.PURDUE.edu. ;Cr=addtnl [128.42.5.4] 86387 IN NS ns.PURDUE.edu. ;Cr=addtnl [128.42.5.4] 86387 IN NS harbor.ecn.PURDUE.edu. ;Cr=addtnl [128.42.5.4] 86387 IN NS moe.rice.edu. ;Cr=addtnl [128.42.5.4] NS 172787 IN A 128.210.11.5 ;NT=4 Cr=addtnl [192.36.148.17] $ORIGIN ECN.PURDUE.EDU. HARBOR 172787 IN A 128.46.199.76 ;NT=6 Cr=addtnl [192.36.148.17] $ORIGIN CS.PURDUE.EDU. galt 86387 IN A 128.10.2.39 ;Cr=auth [128.42.5.4] PENDRAGON 172787 IN A 128.10.2.5 ;NT=20 Cr=addtnl [192.36.148.17] $ORIGIN ROOT-SERVERS.NET. K 604775 IN A 193.0.14.129 ;NT=10 Cr=answer [128.8.10.90] A 604775 IN A 198.41.0.4 ;NT=20 Cr=answer [128.8.10.90]
[12/01/08]
DNS et Bind
376
L 604775 IN A 198.32.64.12 ;NT=8 Cr=answer [128.8.10.90] B 604775 IN A 128.9.0.107 ;NT=9 Cr=answer [128.8.10.90] M 604775 IN A 202.12.27.33 ;NT=20 Cr=answer [128.8.10.90] C 604775 IN A 192.33.4.12 ;NT=17 Cr=answer [128.8.10.90] D 604775 IN A 128.8.10.90 ;NT=11 Cr=answer [128.8.10.90] E 604775 IN A 192.203.230.10 ;NT=9 Cr=answer [128.8.10.90] F 604775 IN A 192.5.5.241 ;NT=73 Cr=answer [128.8.10.90] G 604775 IN A 192.112.36.4 ;NT=14 Cr=answer [128.8.10.90] H 604775 IN A 128.63.2.53 ;NT=160 Cr=answer [128.8.10.90] I 604775 IN A 192.36.148.17 ;NT=102 Cr=answer [128.8.10.90] J 604775 IN A 198.41.0.10 ;NT=21 Cr=answer [128.8.10.90] ; --- Hints --$ORIGIN . . 3600 IN NS A.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS B.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS C.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS D.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS E.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS F.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS G.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS H.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS I.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS J.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS K.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS L.ROOT-SERVERS.NET. ;Cl=0 3600 IN NS M.ROOT-SERVERS.NET. ;Cl=0 $ORIGIN ROOT-SERVERS.NET. K 3600 IN A 193.0.14.129 ;NT=11 Cl=0 L 3600 IN A 198.32.64.12 ;NT=9 Cl=0 A 3600 IN A 198.41.0.4 ;NT=10 Cl=0 M 3600 IN A 202.12.27.33 ;NT=11 Cl=0 B 3600 IN A 128.9.0.107 ;NT=1288 Cl=0 C 3600 IN A 192.33.4.12 ;NT=21 Cl=0 D 3600 IN A 128.8.10.90 ;NT=1288 Cl=0 E 3600 IN A 192.203.230.10 ;NT=19 Cl=0 F 3600 IN A 192.5.5.241 ;NT=23 Cl=0 G 3600 IN A 192.112.36.4 ;NT=18 Cl=0 H 3600 IN A 128.63.2.53 ;NT=11 Cl=0 I 3600 IN A 192.36.148.17 ;NT=21 Cl=0 J 3600 IN A 198.41.0.10 ;NT=13 Cl=0
Le serveur de noms qui a gnr ce chier named_dump.db ne fait autorit que sur 0.0.127.in-addr.arpa. Il na recherch que deux noms : galt.cs.purdue.edu et cujo.movie.edu. Lors de la recherche de galt.cs.purdue.edu, le serveur ne sest pas content de placer son adresse en mmoire cache, mais aussi la liste des serveurs de noms de purdue.edu ainsi que leurs adresses. Dans la ralit, le nom cujo.movie.edu et le domaine movie.edu nexistent pas ; le serveur a donc mmoris une rponse ngative. Dans le chier de dump, la rponse ngative est mise en commentaire (la ligne correspondante commence par un point-virgule) ; cette rponse contient lexplication (ici, NXDOMAIN). Son TTL est relativement court (593). Depuis BIND 8.2, les rponses ngatives ne sont conserves que
[12/01/08]
DNS et Bind
377
pour la dure dnie dans le dernier champ de lenregistrement SOA, qui est normalement infrieure au TTL par dfaut de la zone. La section des indications initiales, en n de chier, contient les donnes issues du chier db.cache. Le TTL de ces donnes est dcrment et peut atteindre 0, mais les enregistrements correspondants ne sont jamais dtruits. Certains enregistrements de ressources sont suivis dun point-virgule puis de NT=. Cela apparat exclusivement avec les enregistrements dadresse de serveurs de noms. Il sagit du temps daller-retour mesur lors des dernires communications avec un serveur. Il permet de dterminer quels ont t les serveurs les plus rapides rpondre ; celui de plus faible valeur sera utilis prioritairement lors de la prochaine recherche. Les donnes de la mmoire cache sont facilement reprables, car elles possdent une tiquette (Cr=), parfois suivie de ladresse du serveur qui a fourni linformation2. Les donnes de la zone et les indications initiales sont repres par la variable Cl=, qui reprsente le niveau dans larbre des domaines ; la racine est au niveau 0, toto est au niveau 1, titi.toto au niveau 2, etc. Lun des progrs entre les versions 4.8.3 et 4.9 de BIND est lintroduction de la valeur de crdibilit, qui permet un serveur de prendre des dcisions judicieuses en ce qui concerne les donnes reues dun serveur distant. Un serveur 4.8.3 na que deux niveaux de crdibilit : les donnes locales faisant autorit et toutes les autres. Les donnes locales faisant autorit sont issues des chiers de la zone gre par le serveur, qui en sait le plus sur ce sujet. Par contre, toutes les informations provenant de serveurs distants sont considres comme quivalentes. Voici maintenant un cas possible et la mthode mise en uvre en BIND 4.8.3 pour le traiter. Supposons que le serveur recherche ladresse de toystory.movie.edu et quil reoive une rponse faisant autorit dun serveur de noms de movie.edu. Plus tard, en recherchant ladresse de foo.oreilly.com, le serveur reoit un autre enregistrement dadresse concernant toystory.movie.edu, mais cette fois en provenance dun serveur du domaine com. Un serveur 4.8.3 mettrait jour lenregistrement dadresse de toystory.movie.edu dans la mmoire cache, bien que la nouvelle information vienne dun serveur de com et non dun serveur faisant autorit sur movie.edu. Bien sr, dans les deux cas, les informations sont identiques, mais elles nont pas la mme crdibilit. Depuis la version 4.9, les serveurs se comportent diffremment. Tout comme les serveurs 4.8.3, ils accordent une crdibilit maximale aux donnes de la zone. Par contre, ils classent diffremment les donnes issues des serveurs distants. La liste cidessous dcrit la hirarchie des crdibilits, en commenant par le plus crdible : auth Les enregistrements sont des donnes provenant de rponses faisant autorit, cest-dire de la section des rponses dun message dont le bit Authoritative answer est positionn.
2. Le serveur afche ladresse IP du serveur distant sil la connat. Depuis BIND 8.2, elle nest disponible que si host-statistics est activ (voir le Chapitre 8). Avec les premires versions de BIND 8, cest le cas en standard. host-statistics provoque la gnration de statistiques concernant tous les serveurs et resolvers avec qui le serveur local a communiqu, ce qui est utile (par exemple pour savoir quel serveur a fourni un enregistrement prcis), mais coteux en mmoire.
[12/01/08]
DNS et Bind
378
answer Les enregistrements sont des donnes provenant, soit de rponses ne faisant pas autorit, soit de la mmoire cache. Elles sont extraites de la section des rponses dun message dont le bit Authoritative answer nest pas positionn. addtnl Les enregistrements sont des donnes provenant du reste du message de rponse, cest--dire de la section des serveurs faisant autorit ou de la section des enregistrements complmentaires. La section des serveurs faisant autorit contient des enregistrements NS concernant dautres serveurs de noms. La section des enregistrements complmentaires complte les autres sections. Si un serveur apparat dans la section des serveurs qui font autorit, son adresse apparat ici (cette adresse est ncessaire pour contacter le serveur). Il y a une exception la rgle : quand le serveur initialise la mmoire cache avec les informations concernant les serveurs de la racine, les enregistrements correspondants obtiennent la crdibilit answer au lieu de addtnl, pour les rendre difcile changer accidentellement. On peut effectivement constater dans le dump que la crdibilit des enregistrements pour les serveurs de la racine est answer, alors que celle des enregistrements pour purdue.edu est addtnl. Dans lexemple de la recherche de ladresse de toystory.movie.edu, un serveur 4.9 ou postrieur naurait pas remplac lenregistrement faisant autorit (crdibilit = auth) par linformation issue dune dlgation (crdibilit = addtnl), car la rponse faisant autorit a une meilleure crdibilit.
A.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET.
DNS et Bind
379
; glue A3.NSTLD.COM. 172764 A 192.5.6.32 ; glue C3.NSTLD.COM. 172764 A 192.26.92.32 ; glue D3.NSTLD.COM. 172764 A 192.31.80.32 ; glue E3.NSTLD.COM. 172764 A 192.12.94.32 ; glue G3.NSTLD.COM. 172764 A 192.42.93.32 ; glue H3.NSTLD.COM. 172764 A 192.54.112.32 ; glue L3.NSTLD.COM. 172764 A 192.41.162.32 ; glue M3.NSTLD.COM. 172764 A 192.55.83.32 ; glue edu. 172764 NS A3.NSTLD.COM. 172764 NS C3.NSTLD.COM. 172764 NS D3.NSTLD.COM. 172764 NS E3.NSTLD.COM. 172764 NS G3.NSTLD.COM. 172764 NS H3.NSTLD.COM. 172764 NS L3.NSTLD.COM. 172764 NS M3.NSTLD.COM. ; authauthority cujo.movie.edu. 10796 \-ANY ;-$NXDOMAIN ; glue purdue.edu. 172764 NS NS.purdue.edu. 172764 NS MOE.RICE.edu. 172764 NS HARBOR.ECN.purdue.edu. 172764 NS PENDRAGON.cs.purdue.edu. ; authauthority cs.purdue.edu. 86364 NS ns.purdue.edu. 86364 NS moe.rice.edu. 86364 NS ns2.purdue.edu. 86364 NS harbor.ecn.purdue.edu. 86364 NS pendragon.cs.purdue.edu. ; authanswer galt.cs.purdue.edu. 86364 A 128.10.2.39 ; glue PENDRAGON.cs.purdue.edu. 172764 A 128.10.2.5 ; glue HARBOR.ECN.purdue.edu. 172764 A 128.46.154.76 ; glue NS.purdue.edu. 172764 A 128.210.11.5 ; additional
[12/01/08]
DNS et Bind
380
ns2.purdue.edu. 3564 A 128.210.11.57 ; glue MOE.RICE.edu. 172764 A 128.42.5.4 ; additional A.ROOT-SERVERS.NET. 604764 A 198.41.0.4 ; additional B.ROOT-SERVERS.NET. 604764 A 192.228.79.201 ; additional C.ROOT-SERVERS.NET. 604764 A 192.33.4.12 ; additional D.ROOT-SERVERS.NET. 604764 A 128.8.10.90 ; additional E.ROOT-SERVERS.NET. 604764 A 192.203.230.10 ; additional F.ROOT-SERVERS.NET. 604764 A 192.5.5.241 ; additional G.ROOT-SERVERS.NET. 604764 A 192.112.36.4 ; additional H.ROOT-SERVERS.NET. 604764 A 128.63.2.53 ; additional I.ROOT-SERVERS.NET. 604764 A 192.36.148.17 ; additional J.ROOT-SERVERS.NET. 604764 A 192.58.128.30 ; additional K.ROOT-SERVERS.NET. 604764 A 193.0.14.129 ; additional L.ROOT-SERVERS.NET. 604764 A 198.32.64.12 ; additional M.ROOT-SERVERS.NET. 604764 A 202.12.27.33 ; ; Start view _default ; ; ; Address database dump ; ; M3.NSTLD.COM [v4 TTL 6] [v4 success] [v6 unexpected] ; 192.55.83.32 [srtt 20] [flags 00000000] [ttl 1796] ; L3.NSTLD.COM [v4 TTL 6] [v4 success] [v6 unexpected] ; 192.41.162.32 [srtt 20] [flags 00000000] [ttl 1796] ; H3.NSTLD.COM [v4 TTL 6] [v4 success] [v6 unexpected] ; 192.54.112.32 [srtt 27] [flags 00000000] [ttl 1796] ; G3.NSTLD.COM [v4 TTL 6] [v4 success] [v6 unexpected] ; 192.42.93.32 [srtt 15] [flags 00000000] [ttl 1796] ; E3.NSTLD.COM [v4 TTL 6] [v4 success] [v6 unexpected] ; 192.12.94.32 [srtt 17] [flags 00000000] [ttl 1796] ; D3.NSTLD.COM [v4 TTL 6] [v4 success] [v6 unexpected] ; 192.31.80.32 [srtt 10] [flags 00000000] [ttl 1796] ; C3.NSTLD.COM [v4 TTL 6] [v4 success] [v6 unexpected] ; 192.26.92.32 [srtt 28156] [flags 00000000] [ttl 1796] ; A3.NSTLD.COM [v4 TTL 6] [v4 success] [v6 unexpected] ; 192.5.6.32 [srtt 23155] [flags 00000000] [ttl 1796]
[12/01/08]
DNS et Bind
381
[12/01/08]
DNS et Bind
382
Le serveur de noms qui a cr ce chier named_dump.db ne fait autorit que sur 0.0.127.in-addr.arpa (nous ne le voyons pas ce niveau, car nous navons pas utilis la commande rndc dumpdb all pour copier les informations faisant autorit). Seuls deux noms sont recherch par ce serveur : galt.cs.purdue.edu et cujo.movie.edu. Au cours de la recherche de galt.cs.purdue.edu, le serveur place en mmoire cache non seulement ladresse de galt, mais encore la liste des serveurs de noms de edu, purdue.edu et de cs.purdue.edu, ainsi que leurs adresses. Le nom cujo.movie.edu, toutefois, nexiste pas en ralit (ni la zone movie.edu, dailleurs), aussi le serveur cache-t-il la rponse ngative. De la mme manire que BIND 8, BIND 9 tiquette chaque information dune valeur de crdibilit. Elle apparat sous la forme dun commentaire, avant la donne ellemme. Dans lextrait ci-dessous, lenregistrement NS du domaine-racine est class au niveau authanswer :
; authanswer . 518364 IN NS A.ROOT-SERVERS.NET.
Voici la liste complte des niveaux de conance pouvant apparatre dans un dump :
Niveau de conance Description Valid par DNSSEC Rponse provenant dun serveur faisant autorit Donne provenant de la section des enregistrements faisant autorit dune rponse faisant elle-mme autorit Rponse provenant dun serveur ne faisant pas autorit Information de rfrence Donne provenant de la section des enregistrements complmentaires dune rponse Information certie par DNSSEC mais non encore valide
Dans la section Address database dump, le serveur afche des donnes complmentaires concernant dautres serveurs de noms. Certaines des informations sont associes au nom (mode IPv4 ou IPv6) et dautres sont associes ladresse (le temps daller-retour et les drapeaux, qui ne donnent des indications que sur EDNS0 ce jour). La section suivante, Unassociated entries, est similaire la section Address database dump mais sans les informations associes au nom. Seules apparaissent les informations associes aux adresses. La premire entre de la section Address database dump (M3.NSTLD.COM) a un TTL de 6. Dans six secondes, la donne associe ce nom parviendra chance et les informations associes ladresse 192.55.83.32 sera dplace vers la section Unassociated entries.
[12/01/08]
DNS et Bind
tudes de cas
383
trouver des erreurs de conguration de resolver, en vriant que le nom recherch est effectivement le nom souhait. Tout dabord, assurons-nous que les messages LOG_INFO sont enregistrs par le service daemon de syslog. Activons ensuite lenregistrement. Pour cela, nous disposons de plusieurs mthodes : avec BIND 8, dmarrer le serveur avec loption -q en ligne de commande, ou envoyer la commande ndc querylog un serveur dj en fonctionnement. Depuis BIND 9.1.0, utilisons rndc querylog. Des messages similaires ce qui suivent commencent apparatre
Feb 20 21:43:25 toystory XX+ Feb 20 21:43:32 toystory XX+ named[3830]: /192.253.253.2/carrie.movie.edu/A named[3830]: /192.253.253.2/4.253.253.192.in-addr.arpa/PTR
ou, en BIND 9 :
Jan 13 18:32:25 toystory named[13976]: info: client 192.253.253.2#1702: query: carrie.movie.edu IN A Jan 13 18:32:42 toystory named[13976]: info: client 192.253.253.2#1702: query: 4.253.253.192.in-addr.arpa IN PTR
Ces messages comportent ladresse IP de lhte qui a envoy la requte ainsi que la requte elle-mme. Comme le premier exemple provient dun serveur BIND 8.2.3 et que les requtes sont rcursives, elles commencent par XX+. Les requtes itratives ne commencent que par XX (avant BIND 8.2.1, un serveur nafche pas la distinction). Lorsque lenregistrement des requtes est sufsamment long pour procder une analyse, on peut le dsactiver en envoyant une autre commande ndc querylog ou rndc querylog au serveur. Avec les premiers serveurs BIND 9, on peut encore voir les requtes reues dans le chier de dbogage de named au niveau 1.
tudes de cas
Les outils tant prsents, parlons maintenant de leur utilisation dans des cas concrets. Certains problmes sont faciles reconnatre et corriger ; ce sont les cas les plus courants et ils correspondent aux erreurs les plus habituelles.
[12/01/08]
DNS et Bind
384
charge la zone sans tenir compte du numro de srie ; il ne teste que lestampille temporelle des chiers pour vrier sils ont t modis depuis le dernier chargement de donnes. Tout ce quon peut faire, cest utiliser nslookup pour comparer les informations renvoyes par le serveur primaire et celles renvoyes par un esclave. Si les donnes sont diffrentes, le numro de srie na probablement pas volu. En se souvenant dune modication rcente, on peut tester spciquement cette information. Sinon, on peut transfrer les donnes dun serveur primaire et les donnes dun serveur secondaire vers des chiers, les classer puis comparer les chier laide de diff. Pourtant, contrairement aux apparences, la rsolution de ce problme est simple. Il suft dincrmenter le numro de srie sur le matre primaire et dindiquer ce serveur de recharger la zone. Les esclaves se synchroniseront automatiquement la prochaine chance de leur intervalle de rafrachissement, ou encore plus rapidement sils utilisent NOTIFY. Avec des esclaves en BIND 9.3, nous pouvons utiliser la nouvelle commande rndc retransfer pour forcer un transfert immdiat. Pour forcer un transfert des nouvelles donnes en BIND 8, nous pouvons effacer le chier de sauvegarde des donnes et redmarrer named ou, encore, excuter manuellement named-xfer (sur lesclave, bien sr)):
# /usr/sbin/named-xfer -z movie.edu -f bak.movie.edu -s 0 toystory.movie.edu # echo $?
Si la valeur renvoye par named-xfer est gale 1 ou 4, la zone a t transfre avec succs. Toutes les autres valeurs indiquent que la zone na pas t transfre, soit parce quune erreur sest produite, soit parce que lesclave a conclu que sa copie tait jour (voir la section Utiliser named-xfer, page 372). Lorsque ladministrateur utilise un outil tel que h2n pour crer les chiers de zone, il arrive que le numro de srie soit remis zro. En effet, il est ais deffacer les anciens chiers et de les recrer partir de zro avec h2n (il sagit parfois dune action volontaire, lorsque ladministrateur a un doute sur leur validit et quil souhaite les rgnrer). Le problme est que, h2n ne disposant plus de lactuel numro de srie, il le r-initialise 1. Si le numro de srie sur le matre est pass de 598 1, les esclaves envoient un message derreur syslog pour signaler le problme :
Jun 7 20:14:26 wormhole named[29618]: Zone "movie.edu" (class 1) SOA serial# (1) rcvd from [192.249.249.3] is < ours (112)
Ainsi, si le numro de srie sur le matre est anormalement faible, il faut le comparer celui des esclaves :
% nslookup Default Server: toystory.movie.edu Address: 192.249.249.3 > set q=soa > movie.edu. Server: toystory.movie.edu Address: 192.249.249.3 movie.edu origin = toystory.movie.edu mail addr = al.movie.edu
[12/01/08]
DNS et Bind
tudes de cas
serial = 1 refresh = 10800 (3 hours) retry = 3600 (1 hour) expire = 604800 (7 days) minimum ttl = 86400 (1 day) > server wormhole.movie.edu. Default Server: wormhole.movie.edu Addresses: 192.249.249.1, 192.253.253.1 > movie.edu. Server: wormhole.movie.edu Addresses: 192.249.249.1, 192.253.253.1 movie.edu origin = toystory.movie.edu mail addr = al.movie.edu serial = 112 refresh = 10800 (3 hours) retry = 3600 (1 hour) expire = 604800 (7 days) minimum ttl = 86400 (1 day)
385
wormhole.movie.edu, en tant quesclave de movie.edu, ne devrait jamais avoir un numro de srie suprieur celui du matre. Ce problme est facile mettre en vidence avec loutil prsent au Chapitre 15.
ou, en BIND 8 :
Mar 8 17:22:08 toystory named[22317]: reloading nameserver
Ces messages indiquent le dernier envoi dune commande de rechargement. Si le serveur a t arrt et redmarr, le message est du type, en BIND 9 :
Mar 8 17:22:08 toystory named[22317]: running
ou, en BIND 8 :
Mar 8 17:22:08 toystory named[22317]: restarted
Si la date de redmarrage ne correspond pas celle de la modication des chiers, il faut nouveau recharger le serveur et en proter pour vrier que le numro de srie dans les chiers de zone a bien t incrment. Si on ne connat pas la date de dernire modication, on peut la rechercher avec la commande ls l.
[12/01/08]
DNS et Bind
386
ou, en BIND 8 :
Jan 6 11:55:25 wormhole named[544]: Err/TO getting serial# for "movie.edu"
Si on laisse le problme en suspens, lesclave nira par abandonner la zone. Un serveur BIND 9 le signalera par :
Sep 25 23:20:20 wormhole named[21246]: zone_expire: zone movie.edu/IN: expired
Une fois que la zone est parvenue expiration, on reoit des erreurs SERVFAIL quand on interroge lesclave sur des informations appartenant la zone :
% nslookup robocop wormhole.movie.edu. Server: wormhole.movie.edu Addresses: 192.249.249.1, 192.253.253.1 *** wormhole.movie.edu can't find robocop.movie.edu: Server failed
Il y a trois causes principales ce problme : une perte de connectivit vers le serveurmatre en raison dune dfaillance dans le rseau, une adresse de serveur-matre incorrecte dans le chier de conguration ou une erreur de syntaxe dans le chier de donnes sur le serveur-matre. Il faut commencer par noter ladresse IP dans la structure zone du chier de conguration de lesclave :
zone "movie.edu" { type slave; masters { 192.249.249.3; }; file "bak.movie.edu"; };
Il faut ensuite vrier quil sagit bien de ladresse IP du serveur-matre. Si cest le cas, on vrie la connectivit vers cette dernire :
% ping 192.249.249.3 -n 10 PING 192.249.249.3: 64 byte packets ----192.249.249.3 PING Statistics---10 packets transmitted, 0 packets received, 100% packet loss
Si le serveur-matre nest pas accessible, il faut vrier que lhte qui lhberge nest pas arrt ou rechercher un problme sur le rseau. Si le serveur-matre est accessible, il faut regarder si le processus named fonctionne et si on peut dclencher manuellement un transfert de zone :
# /usr/sbin/named-xfer -z movie.edu -f /tmp/db.movie.edu -s 0 192.249.249.3 # echo $? 2
[12/01/08]
DNS et Bind
tudes de cas
387
La valeur de retour 2 indique quune erreur est survenue. Il faut regarder dans syslog sil y a un message. Dans notre cas, il y a le message :
Jan 6 14:56:07 zardoz named-xfer[695]: record too short from [192.249.249.3], zone movie.edu
Daprs le message, il sagit dun problme denregistrement tronqu. Le problme concret est facile dterminer si on utilise nslookup :
% nslookup - toystory.movie.edu Default Server: toystory.movie.edu Address: 192.249.249.3 > ls movie.edu Tentative de transfert de zone [toystory.movie.edu] *** Can't list domain movie.edu: Query refused
Ici, named du serveur-matre nautorise pas le transfert de zone. Il a probablement scuris sa zone laide dune structure allow-transfer. Si le serveur-matre contact rpond quil ne fait pas autorit sur la zone demande, le message est le suivant, en BIND 9 :
Sep 26 13:29:23 zardoz named[21890]: refresh_callback: zone movie.edu/IN: non-authoritative answer from 192.249.249.3#53
ou en BIND 8 :
Jan 6 11:58:36 zardoz named[544]: Err/TO getting serial# for "movie.edu" Jan 6 11:58:36 zardoz named-xfer[793]: [192.249.249.3] not authoritative for movie.edu, SOA query got rcode 0, aa 0, ancount 0, aucount 0
Sil sagit du bon serveur-matre, alors ce serveur a un problme de chargement de zone, sans doute en raison dune erreur de syntaxe dans un chier. Il faut contacter ladministrateur du serveur-matre pour quil recherche des messages derreur de syntaxe dans son chier syslog (voir le cas 5. Erreur de syntaxe dans le chier de conguration ou dans la base de donnes, page 388).
[12/01/08]
DNS et Bind
388
De la mme manire, certains serveurs sur Internet, tels que des serveurs FTP refusent , les accs FTP anonymes qui proviennent dhtes dont ladresse IP ne permet pas de retrouver le nom. Une tentative daccs un tel serveur provoquera le message suivant :
530530530530530Dsol, nous ne pouvons pas retrouver le nom de votre machine partir de son numro IP. Il ny a probablement pas denregistrement PTR pour votre adresse sur votre serveur de noms, ou votre serveur de correspondance inverse nest pas officialis. Nous refusons de de rpondre des machines dont les noms ne peuvent tre retrouvs.
Malheureusement, la plupart des serveurs ne renvoient pas de message derreur, mais se contentent de refuser le service. nouveau, nslookup permet de vrier sil existe un enregistrement PTR :
% nslookup Default Server: toystory.movie.edu Address: 192.249.249.3 > beetlejuice Recherche dune correspondance nom-adresse Server: toystory.movie.edu Address: 192.249.249.3 Name: beetlejuice.movie.edu Address: 192.249.249.23 > 192.249.249.23 Recherche dune correspondance adresse-nom Server: toystory.movie.edu Address: 192.249.249.3 *** toystory.movie.edu can't find 192.249.249.23: Non-existent domain
Sur le serveur primaire de 249.249.192.in-addr.arpa, un contrle rapide du chier db.192.249.249 permettra de savoir si lenregistrement PTR a t ajout au chier de zone, ou si le serveur a reu une demande de chargement du chier. Si le serveur dfaillant est un esclave pour la zone, il faut tester que le numro de srie a bien t incrment sur le serveur primaire dans le chier de correspondance inverse et que le serveur-esclave a eu assez de temps pour le charger.
[12/01/08]
DNS et Bind
tudes de cas
ou, pour BIND 8 :
389
Jan 6 11:59:29 toystory named[544]: can't change directory to /var/name: No such file or directory
Attention, il ny a pas de message derreur lcran au dmarrage de named en ligne de commande ou au dmarrage de lhte, mais lcroulement de named peut donner lalerte. Si lerreur de syntaxe se situe dans une partie non critique du chier de conguration, par exemple dans la structure zone, seule cette partie est affecte. Avec une faute de frappe dans le mot master ou dans le nom du chier de donnes par exemple, ou avec loubli des guillemets autour du nom du domaine ou du nom du chier de donnes, le serveur ne peut pas charger la zone. Le message syslog suivant apparat, en BIND 9 :
Sep 26 13:43:03 parse error Sep 26 13:43:03 Sep 26 13:43:03 toystory named[21938]: /etc/named.conf:80: near 'masters' toystory named[21938]: loading configuration: failure toystory named[21938]: exiting (due to fatal error)
ou, en BIND 8 :
Jan 6 12:01:36 toystory named[841]: /etc/named.conf:10: syntax error near 'movie.edu'
Si un chier de zone contient une erreur de syntaxe et si le serveur a russi charger la zone, le serveur risque, soit de rpondre quil ne fait autorit sur aucune des donnes de la zone, soit de renvoyer une erreur SERVFAIL lors des recherches dans sa zone :
% nslookup carrie.movie.edu. Server: toystory.movie.edu Address: 192.249.249.3 *** toystory.movie.edu can't find carrie.movie.edu.: Server failed
Voici le message provoqu par lerreur de syntaxe ayant caus ce problme, pour BIND 9 :
Sep 26 13:45:40 toystory named[21951]: error: dns_rdata_fromtext: db.movie.edu:11: near 'postmanrings2x': unexpected token Sep 26 13:45:40 toystory named[21951]: error: dns_zone_load: zone movie.edu/IN: database db.movie.edu: dns_db_load failed: unexpected token Sep 26 13:45:40 toystory named[21951]: critical: loading zones: unexpected token Sep 26 13:45:40 toystory named[21951]: critical: exiting (due to fatal error)
[12/01/08]
DNS et Bind
390
Attention, moins de pouvoir corrler lerreur SERVFAIL dabsence dautorit (de la part dun serveur qui devrait faire autorit) un problme, ou de surveiller attentivement le chier syslog, on peut ne jamais voir certaines erreurs de syntaxe ! Un nom dhte invalide peut tre une erreur de syntaxe :
Jan 6 12:04:10 toystory named[841]: owner name "ID_4.movie.edu" IN (primary) is invalid - rejecting Jan 6 12:04:10 toystory named[841]: db.movie.edu:11: owner name error Jan 6 12:04:10 toystory named[841]: db.movie.edu:11: Database error near (A) Jan 6 12:04:10 toystory named[841]: master zone "movie.edu" (IN) rejected due to errors (serial 1997010600)
paraissent corrects, mais ils ne produisent pas le rsultat escompt. En effet, dans le chier db.movie.edu, ils sont quivalents :
zorba.movie.edu. movie.edu.movie.edu. IN IN MX NS 10 zelig.movie.edu.movie.edu. toystory.movie.edu.movie.edu.
moins que lorigine nait t explicitement modie. Si on oublie le point terminal la n dun nom dans les donnes dun enregistrement de ressource (ce qui diffrent de loubli du point terminal dans le nom de lenregistrement), on obtient gnralement des enregistrements NS ou MX farfelus :
% nslookup -type=mx zorba.movie.edu. Server: toystory.movie.edu Address: 192.249.249.3 zorba.movie.edu zorba.movie.edu preference = 10, mail exchanger = zelig.movie.edu.movie.edu preference = 50, mail exchanger = postmanrings2x.movie.edu.movie.edu
Si on oublie le point terminal dans la partie nom dun enregistrement (comme dans lenregistrement NS de movie.edu plus haut), la dtection de lerreur peut savrer difcile. Lutilisation de nslookup ne montrera pas les enregistrements concerns. Seul le dump de la base de donnes peut mettre quelque chose en vidence :
$ORIGIN edu.movie.edu. movie IN NS toystory.movie.edu.movie.edu.
[12/01/08]
DNS et Bind
tudes de cas
391
Server: toystory.movie.edu Address: 192.249.249.3 *** toystory.movie.edu can't find ftp.uu.net.: Server failed
Par contre, la recherche dun nom dans les donnes sur lesquelles le serveur fait autorit renvoie une rponse :
> wormhole.movie.edu. Server: toystory.movie.edu Address: 192.249.249.3 Name: wormhole.movie.edu Addresses: 192.249.249.1, 192.253.253.1 > ^D
Pour conrmer les prsomptions, nous pouvons vrier le chier de syslog, en y recherchant des erreurs du type :
Jan 6 15:10:22 toystory named[764]: No root nameservers for class IN
La classe 1 ou IN est celle de lInternet. Ce message signie quaucun serveur de la racine na t trouv en raison de labsence dindications en mmoire cache.
8. Perte de connectivit
Bien que lInternet soit aujourdhui beaucoup plus able qu lpoque dARPanet, les interruptions du rseau ne sont pas rares. Elles se traduisent par des performances mdiocres :
% nslookup nisc.sri.com. Server: toystory.movie.edu Address: 192.249.249.3 *** Request to toystory.movie.edu timed out ***
[12/01/08]
DNS et Bind
392
En activant le dbogage, on verra que le serveur est pourtant bien l. Il a reu la requte en provenance dun resolver, puis envoy lui-mme les requtes ncessaires ; il est maintenant en attente dune rponse qui ne vient pas. Voici un exemple de dbogage avec BIND 8 :
Debug turned ON, Level 1
nslookup envoie maintenant la premire requte vers le serveur pour rechercher ladresse IP de nisc.sri.com. La requte est alors retransmise vers un autre serveur de noms et, comme aucune rponse ne revient, elle est rexpdie vers un serveur diffrent :
datagram from [192.249.249.3].1051, fd 5, len 30 req: nlookup(nisc.sri.com) id 18470 type=1 class=1 req: missed 'nisc.sri.com' as 'com' (cname=0) forw: forw -> [198.41.0.4].53 ds=7 nsid=58732 id=18470 0ms retry 4 sec resend(addr=1 n=0) -> [128.9.0.107].53 ds=7 nsid=58732 id=18470 0ms
Nayant pas encore reu de rponse, nslookup ritre sa requte en utilisant le mme port dorigine (1051) et le mme identiant (18470). Le serveur local limine cette duplication et tente encore deux retransmissions de la requte dorigine :
datagram from [192.249.249.3].1051, fd 5, len 30 req: nlookup(nisc.sri.com) id 18470 type=1 class=1 req: missed 'nisc.sri.com' as 'com' (cname=0) resend(addr=2 n=0) -> [192.33.4.12].53 ds=7 nsid=58732 id=18470 0ms resend(addr=3 n=0) -> [128.8.10.90].53 ds=7 nsid=58732 id=18470 0ms
nslookup interroge nouveau le serveur local qui rexpdie une srie de requtes :
datagram from [192.249.249.3].1051, fd 5, len 30 req: nlookup(nisc.sri.com) id 18470 type=1 class=1 req: missed 'nisc.sri.com' as 'com' (cname=0) resend(addr=4 n=0) -> [192.203.230.10].53 ds=7 nsid=58732 id=18470 0ms resend(addr=0 n=1) -> [198.41.0.4].53 ds=7 nsid=58732 id=18470 0ms resend(addr=1 n=1) -> [128.9.0.107].53 ds=7 nsid=58732 id=18470 0ms resend(addr=2 n=1) -> [192.33.4.12].53 ds=7 nsid=58732 id=18470 0ms resend(addr=3 n=1) -> [128.8.10.90].53 ds=7 nsid=58732 id=18470 0ms resend(addr=4 n=1) -> [192.203.230.10].53 ds=7 nsid=58732 id=18470 0ms resend(addr=0 n=2) -> [198.41.0.4].53 ds=7 nsid=58732 id=18470 0ms Debug turned OFF
BIND 9 est beaucoup moins loquace en dbogage de niveau 1. On voit toutefois que le serveur ritre sa recherche de nisc.sri.com :
Sep Sep Sep Sep Sep Sep Sep Sep 26 26 26 26 26 26 26 26 14:33:27.486 14:33:27.486 14:33:32.489 14:33:32.490 14:33:42.500 14:33:42.500 14:34:02.512 14:34:02.512 client 192.249.249.3#1028: createfetch: nisc.sri.com. client 192.249.249.3#1028: createfetch: nisc.sri.com. client 192.249.249.3#1028: createfetch: nisc.sri.com. client 192.249.249.3#1028: createfetch: nisc.sri.com. query: A query: A query: A query: A nisc.sri.com A nisc.sri.com A nisc.sri.com A nisc.sri.com A
En augmentant le niveau de dbogage, les dlais sont visualiss, mais BIND 9.3.2 nafche toujours pas les adresses des serveurs interrogs.
[12/01/08]
DNS et Bind
tudes de cas
393
partir du dbogage en BIND 8, on peut construire la liste des serveurs distants interrogs, puis tester la connectivit vers ces serveurs, par exemple laide de ping :
% ping 198.41.0.4 -n 10 ping vers le premier serveur interrog PING 198.41.0.4: 64 byte packets ----198.41.0.4 PING Statistics---10 packets transmitted, 0 packets received, 100% packet loss % ping 128.9.0.107 -n 10 ping vers le second serveur interrog PING 128.9.0.107: 64 byte packets ----128.9.0.107 PING Statistics---10 packets transmitted, 0 packets received, 100% packet loss
Il faudrait vrier que les serveurs distants sont en service. Il faudrait aussi vrier quun pare-feu ne bloque pas les requtes par inadvertance. Si le serveur a t mis jour rcemment en BIND 8 ou 9, consultez lencadr BIND 8 ou 9 et les pare-feu par ltrage de paquets au Chapitre 11 (page 284) et voyez si vous tes concern. Il faut ensuite rechercher une coupure dans le rseau. Des outils comme traceroute et loption denregistrement de route de ping peuvent aider dterminer si le problme est dans le rseau local, le rseau distant ou entre les deux. Il faut raisonner avec bon sens. Dans cet exemple, tous les serveurs interrogs sont ceux de la racine (leur enregistrement PTR devrait tre dans un des chiers du serveur). Il est peu probable que tous les serveurs ainsi que les rseaux qui les connectent, soient simultanment larrt. Il y a donc de trs fortes chances pour que le problme vienne de la connexion lInternet du rseau local.
9. Absence de dlgation
Une demande de dlgation met environ un ou deux jours pour tre traite et enregistre dans les serveurs parents. Selon le domaine parent choisi et son niveau dans lespace de noms, les procdures peuvent varier normment et la rapidit dpend de chaque organisme. Les serveurs locaux pourront toujours rechercher des informations dans lespace des noms de lInternet mais, tant que la dlgation nest pas en place, aucun utilisateur de lInternet ne saura comment interroger les serveurs locaux. Cela signie par exemple quon peut envoyer des courriers, mais que personne ne peut y rpondre, ou encore quil nest pas possible de contacter les htes locaux par ssh, ftp ou ping en utilisant leur nom. Ce problme sapplique aussi la correspondance inverse (adresse vers nom) pour toutes les zones de in-addr.arpa gres localement, cest--dire pour tous les rseaux locaux. nslookup permet de dterminer si la dlgation est active partir des serveurs parents ; nous allons demander ces derniers quels sont les serveurs du rseau local. Sils en ont connaissance, nimporte qui dans lInternet peut aussi sen informer :
% nslookup Default Server: toystory.movie.edu Address: 192.249.249.3
[12/01/08]
DNS et Bind
394
> server a.root-servers.net. Interrogation dun serveur de la racine Default Server: a.root-servers.net Address: 198.41.0.4 > set norecurse > set type=ns > 249.249.192.in-addr.arpa. Server: a.root-servers.net Address: 198.41.0.4 192.in-addr.arpa 192.in-addr.arpa 192.in-addr.arpa 192.in-addr.arpa 192.in-addr.arpa 192.in-addr.arpa 192.in-addr.arpa > server dill.arin.net. Server: dill.arin.net Address: 192.35.51.32 Rponse avec ses propres donnes uniquement Recherche denregistrements NS pour 249.249.192.in-addr.arpa
= = = = = = =
> 249.249.192.in-addr.arpa. Server: dill.arin.net Address: 192.35.51.32 *** dill.arin.net can't find 249.249.192.in-addr.arpa.: Non-existent domain
Ici, visiblement, la dlgation nest pas encore active. Nous pouvons soit patienter soit, si le temps dattente est dj anormalement lev depuis votre demande de mise en place de dlgation, reprendre contact avec les administrateurs de la zone parente.
[12/01/08]
DNS et Bind
tudes de cas
Rglage du serveur un serveur parent de la zone suspecte Default Server: a.root-servers.net Address: 198.41.0.4 > server a.root-servers.net. > set type=ns > hp.com. Server: Address: Recherche denregistrements NS pour la zone en question a.root-servers.net. 198.41.0.4
395
Non-authoritative answer: *** Can't find hp.com.: No answer Authoritative answers can be found from: com nameserver = A.GTLD-SERVERS.NET. com nameserver = G.GTLD-SERVERS.NET. com nameserver = H.GTLD-SERVERS.NET. com nameserver = C.GTLD-SERVERS.NET. com nameserver = I.GTLD-SERVERS.NET. com nameserver = B.GTLD-SERVERS.NET. com nameserver = D.GTLD-SERVERS.NET. com nameserver = L.GTLD-SERVERS.NET. com nameserver = F.GTLD-SERVERS.NET. com nameserver = J.GTLD-SERVERS.NET. com nameserver = K.GTLD-SERVERS.NET. com nameserver = E.GTLD-SERVERS.NET. com nameserver = M.GTLD-SERVERS.NET. A.GTLD-SERVERS.NET has AAAA address A.GTLD-SERVERS.NET internet address G.GTLD-SERVERS.NET internet address H.GTLD-SERVERS.NET internet address C.GTLD-SERVERS.NET internet address I.GTLD-SERVERS.NET internet address B.GTLD-SERVERS.NET has AAAA address B.GTLD-SERVERS.NET internet address D.GTLD-SERVERS.NET internet address L.GTLD-SERVERS.NET internet address F.GTLD-SERVERS.NET internet address J.GTLD-SERVERS.NET internet address K.GTLD-SERVERS.NET internet address E.GTLD-SERVERS.NET internet address M.GTLD-SERVERS.NET internet address > server a.gtld-servers.net. Default server: a.gtld-servers.net. Address: 192.5.6.30#53 > hp.com. Server: Address:
2001:503:a83e::2:30 = 192.5.6.30 = 192.42.93.30 = 192.54.112.30 = 192.26.92.30 = 192.43.172.30 2001:503:231d::2:30 = 192.33.14.30 = 192.31.80.30 = 192.41.162.30 = 192.35.51.30 = 192.48.79.30 = 192.52.178.30 = 192.12.94.30 = 192.55.83.30
[12/01/08]
DNS et Bind
396
Non-authoritative answer: hp.com nameserver = am10.hp.com. hp.com nameserver = am3.hp.com. hp.com nameserver = ap1.hp.com. hp.com nameserver = eu1.hp.com. hp.com nameserver = eu2.hp.com. hp.com nameserver = eu3.hp.com. Authoritative answers can be found am10.hp.com internet address = am3.hp.com internet address = ap1.hp.com internet address = eu1.hp.com internet address = eu2.hp.com internet address = eu3.hp.com internet address =
Supposons que nous suspections la dlgation vers am10.hp.com. Nous pouvons maintenant rechercher les donnes concernant am10.hp.com dans la zone hp.com (par exemple lenregistrement SOA de hp.com) et observer la rponse :
> server am10.hp.com. Default Server: am10.hp.com Addresses: 15.227.128.50 > set norecurse > set type=soa > hp.com. Server: am10.hp.com Addresses: 15.227.128.50 Non-authoritative answer: hp.com origin = charon.core.hp.com mail addr = hostmaster.hp.com serial = 1008811 refresh = 3600 retry = 900 expire = 604800 minimum = 600 Authoritative answers can be found hp.com nameserver = eu3.hp.com. hp.com nameserver = am3.hp.com. hp.com nameserver = ap1.hp.com. hp.com nameserver = eu1.hp.com. hp.com nameserver = eu2.hp.com. am3.hp.com internet address = ap1.hp.com internet address = eu1.hp.com internet address = eu2.hp.com internet address = eu3.hp.com internet address = from:
[12/01/08]
DNS et Bind
tudes de cas
397
Si am10.hp.com faisait rellement autorit sur hp.com, il aurait rpondu par une rponse faisant autorit. Ladministrateur de la zone hp.com peut vous conrmer lautorit de am10.hp.com sur hp.com. Le message derreur lame server est une autre source dinformation :
Oct 1 04:43:38 toystory named[146]: Lame server on '40.234.23.210.in-addr.arpa' (in '210.in-addr.arpa'?): [198.41.0.5].53 'RS0.INTERNIC.NET': learnt(A=198.41.0. 21,NS=128.63.2.53)
Ici, le serveur en 128.63.2.53 a dit toystory que le serveur en 198.41.0.5 est serveur de 210.in-addr.arpa, suite la recherche de 40.234.23.210.in-addr.arpa. La rponse montre que le serveur 198.41.0.5 ne fait pas autorit sur 210.in-addr.arpa : soit la dlgation indique est fausse, soit le serveur en 198.41.0.5 est mal congur.
nod2 port = 53
Vriez que lafchage suite la commande set all est bien ce que vous attendez par rapport votre chier resolv.conf. Si la liste de recherche a t initialise fx.movie.edu et movie.edu dans ce chier, nslookup devrait afcher :
srchlist=fx.movie.edu/movie.edu
Si ce nest pas le cas, il faut analyser le chier resolv.conf. Si vous ny trouvez pas derreur, recherchez dventuels caractres non imprimables (par exemple laide de loption set
[12/01/08]
DNS et Bind
398
list de vi). Il ne doit pas y avoir despace en n de ligne, particulirement aprs le nom de domaine car aucun nom de domaine de niveau suprieur ne se termine rellement par des espaces.
nod2 port = 53
Ici, la liste de recherche est initialise. Vous pouvez aussi utiliser le dbogage pour mettre le problme en vidence (ceci, bien sr, ncessite un accs privilgi au serveur de noms qui nest peut-tre pas la machine concerne par le problme). Voici un exemple correspondant aux commandes telnet prcdentes et provenant dun dbogage sur un serveur en BIND 9 :
Sep Sep Sep Sep Sep 26 26 26 26 26 16:17:58.824 16:17:58.825 16:18:09.996 16:18:09.996 16:18:18.677 client 192.249.249.3#1032: query: br A createfetch: br. A client 192.249.249.3#1032: query: br.fx A createfetch: br.fx. A client 192.249.249.3#1032: query: br.fx.movie.edu A
[12/01/08]
DNS et Bind
tudes de cas
Avec un serveur en BIND 8, cela donnerait :
Debug turned ON, Level 1 datagram from [192.249.249.3].1057, fd 5, len 20 req: nlookup(br) id 27974 type=1 class=1 req: missed 'br' as '' (cname=0) forw: forw -> [198.41.0.4].53 ds=7 nsid=61691 id=27974 0ms retry 4 sec datagram from [198.41.0.4].53, fd 5, len 20 ncache: dname br, type 1, class 1 send_msg -> [192.249.249.3].1057 (UDP 5) id=27974 datagram from [192.249.249.3].1059, fd 5, len 23 req: nlookup(br.fx) id 27975 type=1 class=1 req: missed 'br.fx' as '' (cname=0) forw: forw -> [128.9.0.107].53 ds=7 nsid=61692 id=27975 0ms retry 4 sec datagram from [128.9.0.107].53, fd 5, len 23 ncache: dname br.fx, type 1, class 1 send_msg -> [192.249.249.3].1059 (UDP 5) id=27975 datagram from [192.249.249.3].1060, fd 5, len 33 req: nlookup(br.fx.movie.edu) id 27976 type=1 class=1 req: found 'br.fx.movie.edu' as 'br.fx.movie.edu' (cname=0) req: nlookup(bladerunner.fx.movie.edu) id 27976 type=1 class=1 req: found 'bladerunner.fx.movie.edu' as 'bladerunner.fx.movie.edu' (cname=1) ns_req: answer -> [192.249.249.3].1060 fd=5 id=27976 size=183 Local Debug turned OFF
399
Cet exemple contraste avec celui de lapplication de la liste de recherche au Chapitre 13. Les seuls noms cherchs ici sont ceux fournis par lutilisateur, sans ajout du nom du domaine. Visiblement, la liste de recherche nest pas applique.
Il peut sagir, soit dune mascarade (spoong) de serveur, soit, et cest le plus probable, dun vieux serveur BIND ou dun serveur qui na pas la rigueur de rpondre par linterface qui a reu la requte.
[12/01/08]
DNS et Bind
400
Problmes de transition
De nombreux diteurs ont prot de lapparition de BIND 8, puis de BIND 9, pour mettre jour le resolver et le serveur de noms de leur systme Unix. Toutefois, suite une mise jour de systme, certains nouveaux comportements peuvent faire croire quil y a des erreurs. Voici linventaire des diffrences quon peut noter aprs une mise jour du systme dexploitation.
Comportement du resolver
Les modications apportes la liste de recherche par dfaut du resolver (dcrites au Chapitre 6) peuvent tre un problme pour les utilisateurs. Dsormais, avec un domaine local gal fx.movie.edu, la liste de recherche par dfaut ne comprend plus movie.edu. Par consquent, les utilisateurs habitus utiliser ssh db.personnel pour dsigner implicitement db.personnel.movie.edu, verront leurs commandes chouer. Pour rsoudre ce problme, vous pouvez utiliser la directive search pour dnir une liste de recherche qui inclurait le domaine parent du domaine local. Vous pouvez aussi apprendre aux utilisateurs se familiariser avec le nouveau comportement.
et celui de BIND 8 :
Jan 7 13:58:01 toystory named[231]: db.movie.edu:16: data "hp.com" outside zone "movie.edu" (ignored) Jan 7 13:58:01 toystory named[231]: db.movie.edu:17: data "hp.com" outside zone "movie.edu" (ignored)
La solution est dutiliser un chier de zone associ une structure zone par zone.
[12/01/08]
DNS et Bind
401
Malheureusement, WINS nest pas un enregistrement de ressource standard de la classe IN. Par consquent, si un serveur-esclave BIND transfre cette zone, il bute sur cet enregistrement et refuse de charger la zone :
May 23 15:58:43 toystory named-xfer[386]: "fx.movie.edu IN 65281" - unknown type (65281)
La parade consiste congurer le serveur DNS de Microsoft pour quun ltre limine lenregistrement propritaire avant un transfert de zone. Cela se fait en choisissant la zone dans la partie gauche de la fentre du Gestionnaire DNS, puis en slectionnant Proprits puis, enn, longlet Recherche WINS (voir la gure14-1).
[12/01/08]
DNS et Bind
402
En activant Les paramtres ne concernent que le serveur local , un ltre limine lenregistrement WINS pour cette zone. Malheureusement, plus aucun serveur-esclave Microsoft ne voit lenregistrement, alors quil devrait lutiliser.
BIND 8.1 est pointilleux en ce qui concerne le premier champ dun enregistrement SOA. Le Chapitre 4 prcise quil sagit du nom du serveur primaire de la zone. BIND 8.1 vrie quil existe un enregistrement NS correspondant. Si ce nest pas le cas, le message derreur ci-dessus apparat. La solution consiste, soit modier le champ MNAME pour quil contienne un serveur apparaissant dans un enregistrement NS, soit, plus srieusement, passer une version plus rcente de BIND car le test a t supprim ds la version 8.1.1.
Puisque BIND excute bind() pour toutes les interfaces de lhte et quil les coute toutes, il peut se trouver court de descripteurs de chier. Cela est relativement courant sur les htes qui utilisent de nombreuses interfaces virtuelles (cas des htes qui hbergent de nombreux serveurs web). Il existe plusieurs solutions :
Utiliser un mcanisme dhtes virtuels bass sur des noms, ce qui ne requiert pas
dadresse IP supplmentaire.
Congurer BIND 8 ou 9 pour quil ne travaille quavec quelques unes des interfaces,
laide de la structure listen-on. Si toystory.movie.edu est lhte satur, loption suivante :
options { listen-on { 192.249.249.3; }; };
Recongurer le systme dexploitation pour quil accepte quun processus ouvre plus
de chier simultanment.
DNS et Bind
403
Ici, le resolver demande un serveur de renvoyer le nom correspondant ladresse IP 204.74.103.37. Le serveur obtempre et, dans sa recherche, trouve que 37.103.74.204.inaddr.arpa est en fait un alias pour 37.32/27.103.74.204.in-addr.arpa. Cela vient probablement de lutilisation, dans le domaine 103.74.204.in-addr.arpa, de larchitecture pour dlguer une partie dun espace de noms, dcrite au Chapitre 9. Toutefois, le resolver BIND 4.9.3-BETA ne comprend pas cela et signale une erreur. Aussi incroyable que cela puisse paratre, certains systmes dexploitation sont livrs avec le resolver BIND 4.9.3BETA en standard. La seule solution ce problme est de remplacer le resolver par une version plus rcente.
named a dcouvert que le test de la somme de contrle (checksum) dUDP est dsactiv sur cette machine ; aussi named sest-il arrt. named est exigeant ce sujet, car il utilise beaucoup UDP et veut que les datagrammes UDP arrivent en bon tat. La solution ce problme consiste activer lutilisation de la somme de contrle sur le systme. Ce sujet est document dans les rpertoires shres/sunos/INSTALL et src/port/ sunos/shres/ISSUES de la distribution de BIND 8.
DNS et Bind
404
le TTL sur rponse ngative, et qui dnit une nouvelle structure de contrle, $TTL, pour initialiser le TTL par dfaut dune zone. Si on passe un serveur BIND 8 postrieur 8.2 sans ajouter la structure de contrle $TTL requise dans les chiers de zone, le message suivant est envoy syslog :
Sep 26 19:34:39 toystory named[22116]: Zone "movie.edu" (file db.movie.edu): No default TTL ($TTL <value>) set, using SOA minimum instead
Dans ce cas, BIND 8 accepte dutiliser le dernier champ de lenregistrement SOA la fois comme TTL par dfaut pour la zone et comme TTL sur rponse ngative. Les serveurs BIND 9 antrieurs la version 9.2.0 sont plus stricts :
Sep 26 19:35:54 toystory named[22124]: specified Sep 26 19:35:54 toystory named[22124]: database db.movie.edu: dns_db_load Sep 26 19:35:54 toystory named[22124]: Sep 26 19:35:54 toystory named[22124]: dns_master_load: db.movie.edu:7: no TTL dns_zone_load: zone movie.edu/IN: failed: no ttl loading zones: no ttl exiting (due to fatal error)
Aussi, avant de passer BIND 9, il faut sassurer que la structure de contrle $TTL est bien initialise.
Erreurs TSIG
Comme nous lavons vu au Chapitre 11, la signature de transaction requiert une synchronisation horaire et une synchronisation des cls (il faut la mme cl et le mme nom de cl aux deux extrmits de la communication).
Voici une erreur qui peut apparatre sur un serveur BIND 8 si TSIG a t congur,
mais que le dcalage horaire entre serveur primaire et esclaves est trop lev :
Sep 27 10:47:49 wormhole named[22139]: Err/TO getting serial# for "movie.edu" Sep 27 10:47:49 wormhole named-xfer[22584]: SOA TSIG verification from server [192.249.249.3], zone movie.edu: message had BADTIME set (18)
Ici, le serveur tente de vrier le numro de srie de la zone movie.edu sur toystory.movie.edu (192.249.249.3). La rponse de toystory.movie.edu nest pas valide, car wormhole.movie.edu est en avance de 10 minutes sur lheure de la signature de la rponse. Le message Err/TO est caractristique de ce problme.
Cette fois-ci, la rponse signe TSIG nest pas valide car le vricateur ne peut pas trouver de cl correspondant au nom indiqu dans lenregistrement TSIG. La mme erreur apparat si les cls sont diffrentes. Comme dhabitude, BIND 9 est considrablement plus discret :
Sep 27 13:35:42.804 client 192.249.249.1#1115: query: movie.edu SOA Sep 27 13:35:42.804 client 192.249.249.1#1115: error
[12/01/08]
DNS et Bind
Guide de dpannage
405
Guide de dpannage
Malheureusement, certains problmes ne sont pas aussi simples que cela identier, notamment parce que des causes trs diverses peuvent se traduire par la mme manifestation. Voici donc les causes les plus courantes lies ces manifestations, ainsi que des moyens de caractriser ces problmes.
erreurs de syntaxe dans resolv.conf (voir ltude de cas n11, page 397) ; domaine local non initialis (tude de cas n12, page 398).
Ces deux problmes peuvent tre vris avec la commande set all de nslookup. Si nslookup met en vidence un problme avec le serveur de noms plutt quavec le client, il faut vrier les points lis au type de serveur. Si le serveur est le serveur primaire de la zone, mais quil ne rpond pas :
Vriez que le chier de zone contient bien les donnes en question et que le serveur
a bien t recharg aprs modication (tude de cas n2, page 385). Un dump de la zone permet de sen assurer.
Assurez-vous que les enregistrements ont un point terminal lorsque cest ncessaire
(tude de cas n6, page 390). Si le serveur est esclave de la zone, il faut tout dabord vrier que son matre dispose des informations correctes. Si cest le cas :
Vriez que le numro de srie a t incrment sur le serveur primaire (tude de cas
n1, page 383).
Recherchez sur lesclave un problme de mise jour de zone (tude de cas n3,
page 386). Bien sr, si le serveur primaire ne contient pas les bonnes donnes, tentez de diagnostiquer lorigine du problme directement sur ce serveur primaire. Si le serveur est un serveur cache :
Assurez-vous quil possde des indications initiales (tude de cas n7, page 391). Vriez que la dlgation dautorit partir du domaine parent existe et est correcte
(tudes de cas n9 et n10). Il faut se souvenir que pour un serveur cache, une zone ressemble nimporte quelle autre zone. Mme si lhte qui lhberge est lintrieur de la zone, le serveur cache doit tre capable de localiser un serveur faisant autorit pour la zone, partir des informations fournies par les serveurs de la zone parent.
[12/01/08]
DNS et Bind
406
Tout dabord, le serveur local est-il bien congur ? Il se pourrait que les indications
initiales de la mmoire cache aient t omises (tude de cas n7, page 391).
Est-il possible de joindre le serveur distant par ping ? Le rseau distant est peut-tre
inaccessible en raison dune perte de connectivit (tude de cas n8, page 391).
La zone distante est-elle nouvelle ? La dlgation dautorit nest peut-tre pas encore
active (tude de cas n9, page 393), elle est peut-tre incorrecte ou prime (tude de cas n10, page 394).
Le nom recherch existe-t-il sur les serveurs de la zone distante (tude de cas n2,
page 385) ? Sur tous les serveurs distants (tudes de cas n1 et 3, pages 383 et 386) ?
Le numro de srie na-t-il pas t remis 1 (tude de cas n1) ? Dans ce cas, le
numro de srie sur le matre est probablement infrieur celui des esclaves.
Les esclaves nont-ils pas des difcults se mettre jour partir de leur matre (tude
de cas n3, page 386) ? Si cest le cas, des messages ont sans doute t enregistrs par syslog.
[12/01/08]
DNS et Bind
Guide de dpannage
407
Si vous dcouvrez quun serveur parent fournit de mauvaises rponses, il faut vrier si cela ne vient pas dinformations de dlgation primes. Il faut parfois contacter ladministrateur du domaine parent et celui de la zone distante an quils comparent leurs informations de dlgation et quils les corrigent de concert. Sil nest pas possible de contacter ladministrateur distant et de lui faire corriger ses mauvaises informations, vous pouvez toujours utiliser la sous-structure bogus de server pour indiquer au serveur local de ne pas interroger le serveur distant problmatique.
Une perte de connectivit (tude de cas n8), quon peut diagnostiquer avec le dbogage ou des outils tels que ping.
Autrement dit, lutilisateur doit fournir un mot de passe bien que les chiers .rhosts et hosts.equiv aient t initialiss. En consultant le chier syslog de la machine de destination (wormhole.movie.edu ici), on risque dy trouver :
May 4 18:06:22 wormhole inetd[22514]: login/tcp: Connection from unknown (192.249.249.213)
[12/01/08]
DNS et Bind
408
On peut comprendre le problme en excutant pas pas le processus de rsolution laide dun outil dinterrogation. Il faut dabord interroger lun des serveurs de la zone in-addr.arpa parent pour rechercher les enregistrements NS de la zone in-addr.arpa concerne. Il faut ensuite interroger les serveurs indiqus pour rechercher lenregistrement PTR correspondant au client rlogin ou rsh. Il faut sassurer que tous les serveurs ont le bon enregistrement PTR. Si ce nest pas le cas, il faut rechercher un problme de synchronisation entre le serveur primaire et les esclaves (tudes de cas n1, page 383 et n3, page 386).
alors, les serveurs de edu fournissent lancienne adresse de wormhole.movie.edu. Ce problme se corrige facilement ds lors quil a t dtect : il suft de contacter ladministrateur de la zone parent et de lui demander de mettre jour les informations de dlgation. Si la zone parent est lun des gTLD, le problme se rglera probablement en remplissant les formulaires situs sur le site web de lorganisme denregistrement. Si un serveur dune zone enfant a sauvegard linformation errone dans sa mmoire cache, il faut larrter, effacer tout chier contenant cette information et redmarrer le serveur.
[12/01/08]
DNS et Bind
Guide de dpannage
409
Que se passe-t-il ?
Comment pouvons-nous tre sr du problme qui nous frappe ? Il faut bien dterminer quel serveur de noms distribue des donnes anciennes et quelles zones se rapportent ces donnes :
Le serveur de noms infect est-il serveur dun gTLD ? Si oui, il faut rechercher une
adresse prime qui aurait t dclare ofciellement.
Le serveur infect est-il un parent non gTLD ? Si cest le cas, il faut rechercher sur le
serveur parent des informations de dlgation anciennes. Voil tout ce quoi nous avons pens pour le moment. Ltude de ces cas devrait vous permettre de rsoudre les problmes les plus courants et dlaborer dautres solutions. Ce guide nous aurait dailleurs t bien prcieux nos dbuts !
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
15
Programmation avec les bibliothques du service de noms
Je sais quoi vous pensez, dit Twideuldeume ; mais cela nest vrai en aucune faon. Si, tout au contraire, ctait vrai, poursuivit Twideuldie, il se pourrait que ce ne ft pas faux ; et si cela ntait pas faux, a devrait tre vrai ; mais comme ce nest pas vrai, en bonne logique, cest faux.
La programmation dun resolver peut paratre complexe, mais il nen est rien. Le format dun message DNS est relativement simple ; il est inutile dutiliser ASN.1, la diffrence de la programmation SNMP De plus, on dispose de fonctions puissantes pour analyser . facilement les messages. LAnnexe A donne des extraits de la RFC 1035. Il nest toutefois pas inutile de disposer dune copie intgrale de la norme.
On crit plus rapidement en shell quen C. Si on nest pas encore familiaris avec le DNS, un shell permet de construire facilement un prototype. Lorsquon crira nalement le programme en C, on pourra alors se concentrer sur les contrles quoffre ce langage.
On pourra mme conclure que le programme en shell suft et quon na pas besoin
de le porter en C. Non seulement le temps de dveloppement est plus court, mais un shell est plus facile maintenir, si on compte lutiliser longtemps. On peut aussi prfrer Perl la programmation de base en shell. La n de ce chapitre explique comment utiliser le module Net::DNS de Perl, crit par Michael Fuhr.
Un problme classique
Il faut dabord cerner le problme. Supposons que lon veuille avoir un systme de gestion de rseau qui surveille le serveur-matre primaire et les esclaves en donnant
[12/01/08]
DNS et Bind
412
lalerte en fonction des vnements : serveur arrt, serveur qui devrait faire autorit sur une zone et qui ne le fait pas (le chier de conguration ou les chiers de la zone sont peut-tre corrompus) ou serveur qui a des problmes de mise jour (le numro de srie du matre primaire a accidentellement dcru). Chacun de ces problmes est facile dtecter. Si lapplication de service ne fonctionne pas, la machine de service renvoie un message ICMP port unreachable ; on le reoit suite une interrogation aussi bien par un outil de recherche que par le resolver. Il est facile de tester si un serveur fait autorit sur une zone : il faut lui demander, par une requte non rcursive, lenregistrement SOA de la zone en question. Si la rponse ne fait pas autorit ou si le serveur na pas lenregistrement SOA, il y a un problme. Enn, quand on a lenregistrement SOA, il est ais den extraire le numro de srie.
Voici la forme de la rponse lorsquun serveur ne fait pas autorit sur les enregistrements NS de la zone :
> mit.edu. Server: relay.hp.com Address: 15.255.152.2 Non-authoritative answer: mit.edu nameserver = STRAWB.MIT.EDU mit.edu nameserver = W20NS.MIT.EDU mit.edu nameserver = BITSY.MIT.EDU Authoritative answers can be found from: MIT.EDU nameserver = STRAWB.MIT.EDU
[12/01/08]
DNS et Bind
413
Voici maintenant la forme de la rponse lorsquun serveur fait autorit sur les enregistrements NS de la zone :
> server strawb.mit.edu. Default Server: strawb.mit.edu Address: 18.71.0.151 > mit.edu. Server: strawb.mit.edu Address: 18.71.0.151 mit.edu nameserver = BITSY.MIT.EDU mit.edu nameserver = STRAWB.MIT.EDU mit.edu nameserver = W20NS.MIT.EDU BITSY.MIT.EDU internet address = 18.72.0.3 STRAWB.MIT.EDU internet address = 18.71.0.151 W20NS.MIT.EDU internet address = 18.70.0.160
Dans les deux cas, nous pouvons extraire la liste des serveurs en recherchant les lignes contenant la chane de caractres nameserver et en isolant le dernier champ. Quand le serveur ne fait pas autorit sur les enregistrements NS, il les afche deux fois ; nous devons donc liminer les lignes en double. Nous recherchons maintenant les enregistrements SOA de la zone, aussi bien lorsque le serveur fait autorit sur ces enregistrements que lorsquil ne le fait pas. Nous dsactivons la rcursivit an que le serveur ne nisse pas par interroger un serveur faisant autorit :
% nslookup Default Server: relay.hp.com Address: 15.255.152.2 > set type=soa > set norecurse
Voici la forme de la rponse lorsque le serveur ne fait pas autorit sur la zone et na pas lenregistrement SOA :
> mit.edu. Server: relay.hp.com Address: 15.255.152.2 Authoritative answers can be found from: MIT.EDU nameserver = STRAWB.MIT.EDU
[12/01/08]
DNS et Bind
414
MIT.EDU nameserver = W20NS.MIT.EDU MIT.EDU nameserver = BITSY.MIT.EDU STRAWB.MIT.EDU internet address = 18.71.0.151 W20NS.MIT.EDU internet address = 18.70.0.160 BITSY.MIT.EDU internet address = 18.72.0.3
Lorsque le serveur ne fait pas autorit sur la zone, il renvoie des indications sur dautres serveurs. Si le serveur avait prcdemment recherch lenregistrement SOA et lavait plac dans sa mmoire cache, il renverrait cet enregistrement en prcisant non-authoritative. Nous devons tester ces deux cas. Lorsque le serveur fait autorit et renvoie lenregistrement SOA, nous pouvons en extraire le numro de srie en recherchant la chane de caractres serial. Voici la rponse renvoye par nslookup lorsquaucun serveur ne fonctionne sur lhte distant. Ici, nous changeons de machine en en choisissant une qui nhberge pas de serveur :
% nslookup Default Server: relay.hp.com Address: 15.255.152.2 > server galt.cs.purdue.edu. Default Server: galt.cs.purdue.edu Address: 128.10.2.39 > set type=soa > mit.edu. Server: galt.cs.purdue.edu Address: 128.10.2.39 *** galt.cs.purdue.edu can't find mit.edu.: No response from server
[12/01/08]
DNS et Bind
415
Enn, voici la rponse renvoye par nslookup si lhte distant ne rpond pas. Nous pouvons tester cela en utilisant une adresse IP non attribue :
% nslookup Default Server: relay.hp.com Address: 15.255.152.2 > server 15.255.152.100 Default Server: [15.255.152.100] Address: 15.255.152.100 > set type=soa > mit.edu. Server: [15.255.152.100] Address: 15.255.152.100 *** Request to [15.255.152.100] timed-out
Dans les deux derniers cas, le message derreur est envoy vers stderr1. Nous pouvons utiliser cet lment lors de lcriture du script en shell. Le nom du script est check_soa :
#!/bin/sh if test "$1" = "" then echo "Utilisation : $0 <zone>" exit 1 fi ZONE=$1 # # Utilisation de : # - nslookup pour dcouvrir les serveurs de zone ($1) ; # - awk pour extraire le nom des serveurs partir des lignes # nameserver (les noms sont toujours dans le dernier champ). # - sort -u pour liminer les doublons. # SERVERS=`nslookup -type=ns $ZONE |\ awk '/nameserver/ {print $NF}' | sort -u` if test "$SERVERS" = "" then # # Aucun serveur trouv ==> on arrte l. De toute faon, # nslookup aura trouv et affich lerreur, ce qui est suffisant. # exit 1 fi
1.
Toutes les versions de nslookup ne renvoient pas de message sur un dpassement de dlai.
[12/01/08]
DNS et Bind
416
# # Test du numro de srie de chaque SOA. La sortie de nslookup est # stocke dans deux fichiers temporaires : nso.$$ (sortie standard) # et nse.$$ (sortie standard derreur). Ces fichiers sont crass # chaque itration. On dsactive defname et search puisquon prfre # utiliser des noms totalement qualifis. # # NOTE: cette boucle peut tre longue. Ne pas simpatienter ! # for i in $SERVERS do nslookup >/tmp/nso.$$ 2>/tmp/nse.$$ <<-EOF server $i set nosearch set nodefname set norecurse set q=soa $ZONE EOF # # La rponse indique-t-elle que le serveur courant ($i) fait # autorit ? Le serveur ne fait pas autorit si (a) la rponse # le signale explicitement ou si (b) la rponse indique de # trouver par soi-mme des informations faisant autorit. # if egrep "Non-authoritative|Authoritative answers can be" \ /tmp/nso.$$ >/dev/null then echo $i ne fait pas autorit sur $ZONE continue fi # # Si le serveur fait autorit, on rcupre le numro de srie. # SERIAL=`cat /tmp/nso.$$ | grep serial | sed -e "s/.*= //"` if test "$SERIAL" = "" then # # On aboutit ici si SERIAL est nul. Dans ce cas, il devrait y # avoir un message derreur de nslookup ; il faut consulter le # fichier des erreurs standard. # cat /tmp/nse.$$ else # # Affiche le nom du serveur et son numro de srie. # echo $i a le numro de srie $SERIAL fi done # fin de la boucle "for"
[12/01/08]
DNS et Bind
417
Si nous avons besoin de tester de nombreuses zones et que nous trouvons que cet outil est trop lent, nous pouvons le convertir en C. De mme, si nous voulons effectuer plus de contrles sur les messages derreur, nous pouvons aussi crire un programme en C. Cest ce que nous allons faire dans la suite de ce chapitre.
section den-tte ; section de la question ; section des rponses ; section des serveurs faisant autorit ; section des enregistrements complmentaires.
Le format de la section den-tte est dcrit des pages 26 28 de la RFC 1035 ainsi que dans lAnnexe A de cet ouvrage. En voici un rsum :
numro de la requte (2 octets) requte ou rponse (1 bit) type de requte (4 bits) rponse faisant autorit (1 bit) message tronqu (1 bit) rcursivit souhaite (1 bit) rcursivit disponible (1 bit) rserv (3 bits) code de rponse (4 bits) nombre dentres dans la question (2 octets) nombre denregistrements dans la rponse (2 octets) nombre denregistrements NS (2 octets) nombre denregistrements complmentaires (2 octets)
[12/01/08]
DNS et Bind
418
La plupart de ces lments sont galement dcrits dans le chier arpa/nameser.h de mme que les programmes dextraction partir des messages. Ces fonctions, issues de la bibliothque du serveur de noms, sont dcrites un peu plus loin. La section des questions est dcrite aux pages 28 et 29 de la RFC 1035 :
nom (longueur variable) type de requte (2 octets) classe (2 octets)
La section des rponses, la section des serveurs faisant autorit et la section des enregistrements complmentaires sont dcrites aux pages 29 et 30 de la RFC 1035. Ces sections comprennent de nombreux enregistrements de ressource qui ont la structure suivante :
nom (longueur variable) type de lenregistrement (2 octets) classe (2 octets) TTL (4 octets) longueur du champ RDATA (2 octets) donne spcifique la ressource (longueur variable)
La section den-tte contient un dcompte du nombre de ces enregistrements de ressource dans chaque section.
On peut imaginer le nombre de messages DNS dvolus la transmission de noms. Pour rsoudre ce problme, les concepteurs du DNS ont propos un mcanisme simple de compression des noms.
DNS et Bind
419
position : contenu :
0xC0 est un octet dont les deux premiers bits sont un et le reste zro ; il sagit donc du dbut dun pointeur. La valeur du pointeur est 7 (les six derniers bits du premier octet sont zro et le second octet est sept). Au dcalage 7 de ce tampon, nous trouvons le reste du nom qui commence par vaxa : isi.edu. Cet exemple montre uniquement la compression de deux noms dans un tampon et pas dans un message complet. Un tel message aurait en ralit une section den-tte et dautres valeurs. Lexemple na pour but que de faire comprendre le principe gnral ; de toute faon, lutilisateur du DNS na pas se soucier de cette reprsentation, puisque les fonctions de la bibliothque prennent tout en charge. Ce qui est important, cest de savoir comment lanalyse dun message DNS peut mettre le chaos sil y a un dcalage dun octet. On peut imaginer ce qui se passerait si on commenait lexpansion par le second octet au lieu du premier : v ne serait ni un trs bon pointeur, ni une trs bonne longueur de nom.
herror et h_errno
extern int h_errno; int herror(const char *s)
herror est une fonction similaire perror, except quelle afche une chane de caractres dpendant de la variable externe h_errno au lieu de errno. Voici son seul paramtre : s Est une chane utilise pour identier le message derreur. Si une chane s est fournie lors de lappel, elle est imprime en premier, suivie dun . puis de la chane dpendant de la valeur de h_errno.
[12/01/08]
DNS et Bind
420
Voici les diffrentes valeurs possibles de h_errno : HOST_NOT_FOUND Le nom nexiste pas. Le code renvoy dans la rponse est NXDOMAIN. TRY_AGAIN Soit le serveur nest pas actif, soit il a renvoy SERVFAIL. NO_RECOVERY Soit le nom ne peut pas tre compress car il est invalide (par exemple, un nom sans terminaison .movie.edu), soit le serveur a renvoy FORMERR, NOTIMP ou REFUSED. NO_DATA Le nom existe mais pas la donne correspondant au type demand. NETDB_INTERNAL Il sest produit une erreur trangre au rseau ou au service de noms. Il vaut mieux consulter errno pour obtenir une description du problme.
res_init
int res_init(void)
res_init lit le chier resolv.conf et initialise la structure _res, dont nous allons parler plus loin. Toutes les fonctions dcrites jusquici appellent res_init si elles dtectent quelle na jamais t appele. On peut aussi lappeler sparment, ce qui est utile quand on veut changer une valeur par dfaut avant dappeler la premire fonction. Si res_init ne comprend pas une des lignes de resolv.conf, elle nen tient tout simplement pas compte. res_init renvoie toujours 0, mme si la documentation signale quelle pourrait renvoyer 1.
res_mkquery
int res_mkquery(int op, const char *dname, int class, int type, const u_char *data, int datalen, const u_char *newrr, u_char *buf, int buflen)
res_mkquery construit le message de requte. Elle complte tous les champs de len-tte, compresse les noms dans la section de la question, ainsi que tous les champs de cette section. Les paramtres dname, class et type sont les mmes que pour res_search et res_query. Voici les autres paramtres :
[12/01/08]
DNS et Bind
421
op Lopration effectuer. Il sagit normalement de QUERY, mais on peut trouver aussi IQUERY (requte-inverse). Toutefois, comme nous lavons dj dit, IQUERY nest plus tellement utilis. Depuis la version 4.9.4 de BIND, IQUERY nest plus oprationnel en standard. data Tampon contenant les donnes pour les requtes inverses. Sa valeur est NULL quand op a la valeur QUERY. datalen Taille du tampon data. Si data est NULL, datalen est 0. newrr Tampon utilis lors des mises jour dynamiques (voir le Chapitre 10). Si cette fonction nest pas utilise, la valeur est NULL. buf Tampon dans lequel res_mkquery place le message de requte. Il doit avoir une taille minimale de PACKETSZ octets, tout comme le tampon de rponse de res_search et res_query. buflen Tampon buf, par exemple PACKETSZ octets. res_mkquery renvoie, soit la taille du paquet de requte, soit 1 en cas derreur.
res_query
int res_query(const char *dname, int class, int type, u_char *answer, int anslen)
res_query est lune des procdures intermdiaires. Cest elle qui effectue le travail de recherche de nom ; elle construit un message de requte en appelant res_mkquery, elle expdie la requte en appelant res_send et elle surveille les rponses pour dterminer si lune delle rpond la question. Dans la plupart des cas, res_query est appele par res_search, qui lui fournit les diffrents noms rechercher. Ces deux fonctions ont les mmes paramtres. res_query renvoie, soit la taille de la rponse, soit 1 sil y a une erreur ou si le nombre de rponses est nul. Dans ce cas, elle complte aussi h_errno.
res_search
int res_search(const char *dname, int class, int type, u_char *answer, int anslen)
[12/01/08]
DNS et Bind
422
res_search est la fonction de plus haut niveau. Elle est appele par gethostbyname. res_search met en uvre lalgorithme de recherche dun nom. Elle prend le nom qui lui est transmis en paramtre (dname), le complte (sil nest pas totalement quali) par lajout des diffrentes extensions provenant de la liste de recherche du resolver et appelle res_query jusqu rception dune rponse indiquant quun nom totalement quali a t trouv. De plus, res_search recherche des alias dans le chier dsign par la variable denvironnement HOSTALIASES, dcrite au Chapitre 6. Ainsi, res_search tient compte des alias privs des utilisateurs. res_search renvoie soit la taille de la rponse, soit 1 sil y a une erreur ou si le nombre de rponses est nul. Dans ce cas, elle complte aussi h_errno, qui est similaire errno, mais qui est propre aux recherches dans le DNS. Le seul paramtre vraiment intressant de res_search est dname ; les autres sont transmis tels quels res_query et aux autres fonctions. Voici les autres paramtres : class Classe des informations recherches. Il sagit presque toujours de la constante C_IN, qui reprsente la classe Internet. Les classes sont dnies dans arpa/nameser.h. type Type de donnes recherches. Les types sont dnis dans arpa/nameser.h. Exemple : T_NS signie quon recherche un enregistrement NS et T_MX un enregistrement MX. answer Tampon dans lequel res_search placera le message de rponse. Sa taille doit tre au moins de PACKETSZ octets (voir arpa/nameser.h). anslen Taille du tampon answer, par exemple PACKETSZ octets. res_search renvoie, soit la taille de la rponse, soit 1 en cas derreur.
res_send
int res_send(const u_char *msg, int msglen, u_char *answer, int anslen)
res_send met en uvre lalgorithme de reprise. Elle envoie le message de requte, msg, dans un datagramme UDP mais elle peut aussi le faire dans un ot TCP Le message de , . rponse est enregistr dans answer. Cette fonction est la seule qui fonctionne comme une bote noire. Les paramtres ont dj t vus dans les autres fonctions : msg Tampon qui contient le message de requte. msglen Taille du message.
[12/01/08]
DNS et Bind
423
res_send renvoie, soit la taille de la rponse, soit 1 en cas derreur. Si la valeur de retour est 1 et si errno contient ECONNREFUSED, il ny a aucun serveur actif sur lhte distant. Il faut regarder errno pour voir sil est ECONNREFUSED aprs un appel res_search ou res_ query (res_search appelle res_query, qui appelle res_send). Si on veut tester errno aprs lappel res_query, il faut commencer par rinitialiser errno. De cette manire, on saura que cest cet appel res_send qui a positionn errno. Toutefois, il nest pas ncessaire de rinitialiser errno avant lappel res_search, car res_search le fait elle-mme avant dappeler res_query.
La structure _res
Les fonctions du resolver, cest--dire les fonctions dont le nom commence par res_, utilisent toutes la structure de donnes commune _res. Nous pouvons modier le comportement des fonctions en agissant sur _res. Si nous voulons changer le nombre de retransmissions des requtes par res_send, nous devons modier le champ retry. Si voulons dsactiver lalgorithme de recherche du resolver, il faut mettre le bit RES_DNSRCH du masque de options zro. La structure _res est dnie dans resolv.h :
struct _ _res_state { int retrans; /* intervalle de retransmission */ int retry; /* nombre de retransmissions */ u_long options; /* drapeau doptions ; voir plus bas */ int nscount; /* nombre de serveurs de noms */ struct sockaddr_in nsaddr_list[MAXNS]; /* adresse du serveur de noms */ #define nsaddr nsaddr_list[0] /* pour compatibilit ascendante */ u_short id; /* id du paquet courant */ char *dnsrch[MAXDNSRCH+1]; /* lments du domaine chercher */ char defdname[MAXDNAME]; /* domaine par dfaut */ u_long pfcode; /* drapeaux RES_PRF_ ; voir plus bas */ unsigned ndots:4; /* seuil requte absolue initiale */ unsigned nsort:4; /* nb dlments dans sort_list[] */ char unused[3]; struct { struct in_addr addr; /* adresse classer */ u_int32_t mask; } sort_list[MAXRESOLVSORT]; };
Le champ options est juste un masque des options en cours. Pour mettre en service une caractristique, il faut valider le bit correspondant du champ options. Les bits du masque sont dnis dans le chier resolv.h. Voici les options :
[12/01/08]
DNS et Bind
424
RES_INIT Si ce bit est valid, res_init a dj t appele. RES_DEBUG Cette option provoque lafchage des messages de dbogage, du moins si les fonctions ont t compiles avec DEBUG. Loption est dsactive par dfaut. RES_AAONLY Cette option impose que la rponse fasse autorit, donc quelle ne vienne pas dune mmoire cache de serveur. Il est dommage que cette option ne soit pas mise en uvre et, tant donne la structure du resolver de BIND, elle devrait ltre. RES_PRIMARY Il ne faut interroger que le serveur-matre primaire (option non mise en uvre). RES_USEVC Il ne faut envoyer les requtes que sur un circuit virtuel (TCP) et pas dans des datagrammes UDP Il y a une perte de performances lie ltablissement du circuit . virtuel. Loption est dsactive par dfaut. RES_STAYOPEN Si on envoie les requtes sur une connexion TCP cette option laisse la connexion , ouverte, ce qui permet de lutiliser pour interroger nouveau le mme serveur distant. Sans cette option, la connexion est ferme ds quune rponse a t apporte la requte. Loption est dsactive par dfaut. RES_IGNTC Si le bit de rponse tronque est positionn, le resolver ritre la requte en utilisant une connexion TCP Si cette option est valide, le bit de rponse tronque nest pas . pris en compte et la requte nest pas renvoye. Loption est dsactive par dfaut. RES_RECURSE Par dfaut, un resolver BIND effectue des requtes rcursives. En dsactivant cette option, le bit de demande de rcursivit est dsactiv dans le message de requte. Loption est active par dfaut. RES_DEFNAMES Par dfaut, le resolver de BIND ajoute le domaine local aux noms qui ne comportent pas de point. En dsactivant cette option, il ny a pas dajout. Loption est active par dfaut. RES_DNSRCH Par dfaut, le resolver de BIND ajoute successivement chaque valeur de la liste de recherche un nom qui ne se termine pas par un point. En dsactivant cette option, il ny a pas dajout. Loption est active par dfaut. RES_INSECURE1 Par dfaut, depuis la version 4.9.3 de BIND, le resolver ne prend pas en compte les rponses qui viennent dun serveur non interrog. En activant cette option, on supprime le contrle de scurit. Loption est dsactive par dfaut.
[12/01/08]
DNS et Bind
425
RES_INSECURE2 Par dfaut, depuis la version 4.9.3 de BIND, le resolver ne prend pas en compte les rponses dont la section de question ne correspond pas celle de la requte originale. En activant cette option, on supprime le contrle de scurit. Loption est dsactive par dfaut. RES_NOALIASES Par dfaut, le resolver de BIND utilise les alias dnis dans le chier indiqu par la variable denvironnement HOSTALIASES. Depuis la version 4.9.3 de BIND, en activant cette option, on inhibe la variable HOSTALIASES. Dans les versions prcdentes de BIND, on ne pouvait pas le faire. Loption est dsactive par dfaut. RES_USE_INET6 Cette option indique au resolver de renvoyer des adresses IPv6, en plus des adresses IPv4, la fonction gethostbyname. RES_ROTATE Normalement, un resolver qui envoie des requtes en permanence interroge toujours le premier serveur apparaissant dans resolv.conf. Depuis BIND 8.2, en activant RES_ROTATE, un resolver envoie sa premire requte au premier serveur de resolv.conf, sa seconde requte au second serveur, et ainsi de suite. Voir la directive options rotate au Chapitre 6. Loption est dsactive en standard. RES_NOCHECKNAME Jusquen BIND 4.9.4, le resolver teste la conformit des noms dans les rponses au rgles nonces au Chapitre 4. Le resolver de BIND 8.2 permet de dsactiver ce test, ce qui est le cas en standard. RES_KEEPTSIG Depuis BIND 8.2, cette option indique un resolver de ne pas extraire lenregistrement TSIG dun message sign, an que lapplication qui a appel le resolver puisse lexaminer. RES_BLAST Le resolver interroge rcursivement tous les serveurs en leur envoyant simultanment les requtes (option non encore mise en uvre). RES_DEFAULT Cette option est la combinaison des options RES_RECURSE, RES_DEFNAMES et RES_DNSRCH qui sont toutes actives en standard. Il nest normalement pas ncessaire de positionner RES_DEFAULT explicitement puisque cela est fait automatiquement lors de lappel res_init.
DNS et Bind
426
ns_get16 et ns_put16
u_int ns_get16(const u_char *cp) void ns_put16(u_int s, u_char *cp)
Les messages ont des champs qui sont des entiers courts non signs (type, classe, longueur des donnes, etc.). ns_get16 renvoie un entier sur 16 bits, point par cp et ns_put16 attribue la valeur sur 16 bits de s lemplacement que dsigne cp.
ns_get32 et ns_put32
u_long ns_get32(const u_char *cp) void ns_put32(u_long l, u_char *cp)
Ces fonctions sont quivalentes aux deux prcdentes, mais utilisent des entiers de 32 bits. Le champ TTL (dure de vie) dun enregistrement de ressource est un entier de 32 bits.
ns_initparse
int ns_initparse(const u_char *msg, int msglen, ns_msg *handle)
ns_initparse est la premire fonction appeler avant dutiliser les autres fonctions de la bibliothque. ns_initparse complte la structure dsigne par handle, qui est un paramtre transmis aux autres fonctions, dont voici les arguments : msg Pointeur vers le dbut du tampon du message en rponse. msglen Taille du tampon du message. handle Pointeur vers une structure de donnes complte par ns_initparse. ns_initparse renvoie, soit 0 en cas de succs, soit 1 en cas dchec de remplissage du tampon du message.
[12/01/08]
DNS et Bind
427
Ces fonctions renvoient un pointeur vers le dbut du message, un pointeur vers la n du message et la taille du message. Ces informations concernent les donnes transmises ns_initparse. Leur seul paramtre est : handle Structure de donnes complte par ns_initparse.
ns_msg_count
u_int16_t ns_msg_count(ns_msg handle, ns_sect section)
ns_msg_count renvoie un compteur issu de la section den-tte du message de rponse. Ses paramtres sont : handle Structure de donnes complte par ns_initparse, section Type numr qui peut prendre les valeurs suivantes :
ns_s_qd ns_s_zn ns_s_an ns_s_pr ns_s_ns ns_s_ud ns_s_ar */ /* /* /* /* /* /* /* requte : section de question */ mise jour : section de la zone */ requte : section de rponse */ mise jour : section des prrequis requte : section des serveurs de noms */ mise jour : section de mise jour */ requte|mise jour : section des enregistrements complmentaires
ns_msg_get_ag
u_int16_t ns_msg_get_flag(ns_msg handle, ns_flag flag)
ns_msg_get_ag renvoie le champ des drapeaux de la section den-tte du message de rponse. Ses arguments sont : handle Structure de donnes complte par ns_initparse. flag Type numr qui peut prendre les valeurs suivantes :
ns_f_qr ns_f_opcode ns_f_aa ns_f_tc ns_f_rd ns_f_ra ns_f_z ns_f_ad ns_f_cd ns_f_rcode ns_f_max /* /* /* /* /* /* /* /* /* /* question/rponse */ code de lopration */ rponse faisant autorit */ rponse tronque */ rcursivit demande */ rcursivit disponible */ doit tre zro */ donne authentifie (DNSSEC) */ test dvalid (DNSSEC) */ code de la rponse */
[12/01/08]
DNS et Bind
428
ns_msg_id
u_int16_t ns_msg_id(ns_msg handle)
ns_msg_id renvoie lidentiant issu de la section den-tte du message de rponse. Son seul paramtre est : handle Structure de donnes complte par ns_initparse.
ns_name_compress
int ns_name_compress(const char *exp_dn, u_char *comp_dn, size_t length, const u_char **dnptrs, const u_char **lastdnptr)
ns_name_compress compresse un nom. On nappelle habituellement pas directement cette fonction, cest res_mkquery qui sen charge. Toutefois, si on a besoin de compresser un nom, cest loutil adquat. Ses paramtres sont : exp_dn Nom que lon veut compresser, cest--dire une chane termine par le caractre NULL, et contenant un nom totalement quali. comp_dn Tampon dans lequel ns_name_compress place le nom compress. length Taille du tampon comp_dn. dnptrs Tableau de pointeurs vers des noms dj compresss. dnptrs[0] pointe vers le dbut du message ; la liste se termine par un pointeur NULL. Aprs linitialisation de dnptrs[0] vers le dbut du message et de dnptrs[1] vers NULL, dn_comp met jour la liste chaque appel. lastdnptr Pointeur vers la n du tableau dnptrs. ns_name_compress a besoin de savoir o se situe la n du tableau, pour ne pas lcraser. Pour utiliser cette fonction, il vaut mieux regarder son utilisation dans le code source de BIND dans src/lib/resolv/res_mkquery.c (pour BIND 8) ou dans res/res_mkquery.c (pour BIND 4). ns_name_compress renvoie, soit la taille du nom compress, soit 1 en cas derreur.
[12/01/08]
DNS et Bind
429
ns_name_skip
int ns_name_skip(const u_char **ptrptr, const u_char *eom)
ns_name_skip est semblable ns_name_uncompress, mais au lieu de dcompresser le nom, elle se contente de passer la suite. Ses paramtres sont : ptrptr Pointeur vers un pointeur vers le nom ignorer. Le pointeur original est avanc jusquau premier octet suivant le nom. eom Pointeur vers le premier octet suivant le message. Il est utilis pour tre sr que ns_name_skip ne dpasse pas la n du message. ns_name_skip renvoie, soit 0 en cas de succs, soit 1 en cas derreur de dcompression.
ns_name_uncompress
int ns_name_uncompress(const u_char *msg, const u_char *eomorig, const u_char *comp_dn, char *exp_dn, size_t length)
ns_name_uncompress dcompresse un nom. On utilise cette fonction lors de lanalyse dun message de rponse de serveur (voir lexemple check_soa plus loin). Ses paramtres sont : msg Pointeur vers le dbut du message de rponse. eomorig Pointeur vers le premier octet suivant le message. Il est utilis pour tre sr que ns_name_uncompress ne dpasse pas la n du message. comp_dn Pointeur vers le nom compress lintrieur du message. exp_dn Tampon dans lequel ns_name_uncompress place le nom dcompress. La taille du tableau doit tre dau moins MAXDNAME caractres. length Taille du tampon exp_dn. ns_name_uncompress renvoie, soit la taille du nom compress, soit 1 en cas derreur. Il sagit bien de la taille du nom compress et non celle du nom dcompress car, lorsquon appelle ns_name_uncompress, on analyse un message et on a besoin de connatre la taille que le nom compress occupe dans le message avant de pouvoir passer la suite.
[12/01/08]
DNS et Bind
430
ns_parserr
int ns_parserr(ns_msg *handle, ns_sect section, int rrnum, ns_rr *rr)
ns_parserr extrait un enregistrement de ressource et le place dans rr, un paramtre transmis aux autres fonctions de la bibliothque du serveur de noms. Ses paramtres sont : handle Pointeur vers une structure de donnes complte par ns_initparse. section Identique au paramtre dcrit pour ns_msg_count. rrnum Numro denregistrement de ressource pour les enregistrements de cette section. Ce numro part de 0. ns_msg_count indique le nombre denregistrements compris dans cette section. rr Pointeur vers une structure de donnes initialiser. ns_parserr renvoie, soit 0 en cas de succs, soit 1 si elle narrive pas analyser le tampon de rponse.
ns_rr routines
char *ns_rr_name(ns_rr rr) u_int16_t ns_rr_type(ns_rr rr) u_int16_t ns_rr_class(ns_rr rr) u_int32_t ns_rr_ttl(ns_rr rr) u_int16_t ns_rr_rdlen(ns_rr rr) const u_char *ns_rr_rdata(ns_rr rr)
Ces routines extraient des champs spciques dun enregistrement de rponse. Leur unique paramtre est : rr Structure de donnes complte par ns_parserr.
[12/01/08]
DNS et Bind
431
depuis BIND 8.2), la fonction qui imprime le contenu dun message lorsquon utilise le dbogage. Notre programme en est driv. Si vous ne voulez pas analyser manuellement les rponses DNS, un moyen intermdiaire consiste appeler p_query, qui appelle fp_query, pour imprimer le message, puis utiliser Perl ou awk, pour en extraire ce dont vous avez besoin. Cricket est partisan de cette mthode.
[12/01/08]
DNS et Bind
432
Le programme principal est court. Le tableau de pointeurs de chanes, nsList, enregistre le nom des serveurs de la zone. On appelle la fonction du resolver res_init pour initialiser la structure _res. Ce programme na pas besoin dappeler explicitement res_init, qui est appele par la premire fonction qui utilise la structure _res. Toutefois, si on veut modier la valeur dun champ de _res avant lappel par la premire fonction, on peut le faire aprs lappel res_init. Ensuite, le programme appelle ndNameServers pour rechercher tous les serveurs de la zone, dont le nom est dans argv[1], et les enregistrer dans nsList. Enn, le programme appelle queryNameServers pour interroger chaque serveur de la liste nsList an de rcuprer son enregistrement SOA pour la zone en question :
main(argc, argv) int argc; char *argv[]; { char *nsList[MAX_NS]; /* liste des serveurs de noms */ int nsNum = 0; /* nombre de serveurs dans la liste */ /* test : un paramtre et un seul ? */ if(argc != 2){ (void) fprintf(stderr, "Utilisation : %s <zone>\n", argv[0]); exit(1); } (void) res_init(); /* * Recherche des serveurs de la zone. * La liste des serveurs est crite dans nsList. */ findNameServers(argv[1], nsList, &nsNum); /* * Interrogation de chaque serveur de la zone pour rcuprer son * enregistrement SOA. La liste des serveurs vient de nsList. */ queryNameServers(argv[1], nsList, nsNum); exit(0); }
Voici maintenant la fonction ndNameServers. Elle interroge le serveur de noms local pour obtenir les enregistrements NS de la zone. Elle appelle ensuite addNameServers pour analyser la rponse et enregistrer le nom des serveurs trouvs. Les chiers dentte, arpa/nameser.h et resolv.h, contiennent des dclarations qui seront largement utilises.
[12/01/08]
DNS et Bind
433
*/ */ */ */ */ */ */ */
Cration dune liste de serveurs partir de la rponse. Les enregistrements NS doivent tre dans la section des rponses et/ou dans la section des serveurs faisant autorit, selon la mise en uvre du DNS. Il faut parcourir les deux. Les adresses
[12/01/08]
DNS et Bind
434
} /***************************************************************** * addNameServers -- Recherche des enregistrements de ressource * * dans une section. Sauvegarde des noms de tous les serveurs. * *****************************************************************/ void addNameServers(nsList, nsNum, handle, section) char *nsList[]; int *nsNum; ns_msg handle; ns_sect section; { int rrnum; /* nombre denregistrements de ressource */ ns_rr rr; /* enregistrement de ressource dcompress */ int i, dup; /* variables diverses */ /* * Recherche de tous les enregistrements de cette section. */ for(rrnum = 0; rrnum < ns_msg_count(handle, section); rrnum++) { /* * Place rrnum enregistrements de ressource dans rr. */ if (ns_parserr(&handle, section, rrnum, &rr)) { fprintf(stderr, "ns_parserr: %s\n", strerror(errno)); } /* * Si le type de lenregistrement est NS, * sauvegarde du nom du serveur de noms. */
[12/01/08]
DNS et Bind
435
Nous ne testons pas le cas o on ne trouve aucun serveur. En effet, cest inutile car res_query considre cette situation comme tant une erreur, renvoie 1 et initialise herrno NO_DATA. Si res_query renvoie 1, nous appelons la fonction propre, nsError, pour afcher un message derreur partir de h_errno et non pas de herror. La fonction herror ne serait pas une bonne solution ici car ses messages supposent quon recherche des adresses. Par exemple, si h_errno tait NO_DATA, le message derreur serait : Pas dadresse associe ce nom . La fonction suivante interroge chaque serveur de noms trouv prcdemment et lui demande son enregistrement SOA. Dans cette fonction, nous changeons la valeur de plusieurs des champs de la structure _res. En changeant le champ nsaddr_list, nous chan-
[12/01/08]
DNS et Bind
436
geons lidentit du serveur interrog par res_send. Nous dsactivons la liste de recherche en mettant zro certains bits du champ options, tous les noms manipuls par ce programme tant totalement qualis.
/***************************************************************** * queryNameServers -- Demande chaque serveur de nsList * * lenregistrement SOA de la zone spcifie. Rapporte toute * * erreur rencontre (telle quun serveur de noms inactif ou * * une rponse ne faisant pas autorit). En labsence * * derreur, affiche le numro de srie de la zone. * *****************************************************************/ void queryNameServers(domain, nsList, nsNum) char *domain; char *nsList[]; int nsNum; { union { HEADER hdr; /* dfini dans resolv.h */ u_char buf[NS_PACKETSZ]; /* dfini dans arpa/nameser.h */ } query, response; /* tampons de requte et rponse */ int responseLen, queryLen; /* taille des tampons */ u_char *cp; /* pointeur de car., pour analyse du message */
struct in_addr saveNsAddr[MAXNS]; /* adresse tire de _res */ int nsCount; /* nombre dadresses tires de _res */ struct hostent *host; /* structure pour recherche dadresse de NS */ int i; /* variable de dcompte */ ns_msg handle; /* descripteur pour le message de rponse */ ns_rr rr; /* enregistrement de ressource dcompress */ /* * Sauvegarde de la liste _res des serveurs, * dont on aura besoin plus loin. */ nsCount = _res.nscount; for(i = 0; i < nsCount; i++) saveNsAddr[i] = _res.nsaddr_list[i].sin_addr; /* * Dsactivation de lalgorithme de recherche et de lajout du * domaine local avant lappel gethostbyname(). * Le nom du serveur doit tre totalement qualifi. */ _res.options &= ~(RES_DNSRCH | RES_DEFNAMES); /* * Demande de lenregistrement SOA de la zone chaque serveur. */
[12/01/08]
DNS et Bind
437
[12/01/08]
DNS et Bind
438
[12/01/08]
DNS et Bind
439
DNS et Bind
440
Nous avons utilis une requte rcursive pour appeler gethostbyname mais une requte itrative lors de la recherche de lenregistrement SOA. gethostbyname peut avoir besoin dinterroger dautres serveurs pour trouver ladresse de lhte. Par contre, nous ne voulons surtout pas que le serveur interrog demande lenregistrement SOA un autre serveur ; de plus, il est cens faire autorit sur la zone. Si nous autorisions la recherche rcursive ce moment-l, le test naurait plus aucune valeur. Les deux fonctions qui suivent afchent des messages derreur :
/********************************************************************* * nsError -- Affiche un message derreur partir de h_errno * * lors dun chec de recherche denregistrement NS. res_query() * * a rduit les codes dtat du message en une liste restreinte * * derreurs, puis a plac le code derreur dans h_errno. Il * * existe dj une fonction herror(), qui affiche les messages * * derreur partir de h_errno, tout comme perror() le fait * * pour errno. Malheureusement, les messages de herror() ne * * concernent que la recherche denregistrement dadresse. Dans * * ce programme, on recherche des enregistrements NS de zone ; * * on a donc besoin dune fonction spcifique. * *********************************************************************/
[12/01/08]
DNS et Bind
441
"Erreur inattendue\n");
/**************************************************************** * returnCodeError -- Affiche un message derreur partir dun * * code dtat de rponse DNS. * ****************************************************************/ void returnCodeError(rcode, nameserver) ns_rcode rcode; char *nameserver; { (void) fprintf(stderr, "%s : ", nameserver); switch(rcode){ case ns_r_formerr: (void) fprintf(stderr, "rponse FORMERR\n"); break; case ns_r_servfail: (void) fprintf(stderr, "rponse SERVFAIL\n"); break; case ns_r_nxdomain: (void) fprintf(stderr, "rponse NXDOMAIN\n"); break; case ns_r_notimpl: (void) fprintf(stderr, "rponse NOTIMP\n"); break; case ns_r_refused: (void) fprintf(stderr, "rponse REFUSED\n"); break; default: (void) fprintf(stderr, "code de retour inattendu\n"); break; } }
[12/01/08]
DNS et Bind
442
Pour compiler le programme an quil utilise les fonctions du resolver et du serveur de noms incluses dans libc, excutons :
% cc -o check_soa check_soa.c
Si nous avons install BIND comme indiqu lAnnexe C et que nous voulons utiliser les chiers den-tte et la bibliothque du resolver les plus rcents, nous devons excuter :
% cc -o check_soa -I/usr/local/src/bind/src/include \ check_soa.c /usr/local/src/bind/src/lib/libbind.a
Ce rsultat est identique celui du script shell, la nuance prs que ce dernier afche les serveurs dans lordre alphabtique. Le programme en C sexcute beaucoup plus rapidement que le script shell.
Objet resolver
Avant de lancer une requte, nous devons crer un objet resolver :
$res = new Net::DNS::Resolver;
Les objets resolver sont initialiss partir du chier resolv.conf mais nous pouvons changer le comportement par dfaut en utilisant les mthodes de lobjet. La plupart des mthodes dcrites dans le manuel de Net::DNS::Resolver correspondent aux champs et aux options de la structure _res prsente prcdemment dans ce chapitre. Si nous voulons, par exemple, choisir le nombre maximal dessais de recherche que peut tenter un resolver, nous pouvons appeler la mthode $res->retry :
$res->retry(2);
Pour effectuer une requte, nous appelons lune des mthodes suivantes :
$res->search $res->query $res->send
[12/01/08]
DNS et Bind
443
Ces mthodes se comportent de la mme manire que les fonctions res_search, res_query et res_send dcrites prcdemment, bien quelles aient moins de paramtres. Il faut leur fournir un nom et, en option, un type denregistrement de ressource et une classe (par dfaut, elles recherchent des enregistrements A dans la classe IN). Ces mthodes renvoient des objets Net::DNS::Packet. Voici quelques exemples :
$packet = $res->search("terminator"); $packet = $res->query("movie.edu", "MX"); $packet = $res->send("version.bind", "TXT", "CH");
Objet paquet
Les requtes de resolver renvoient des objets Net::DNS::Packet qui sont traits par les mthodes suivantes pour laccs aux sections den-tte, de question, de rponse, des enregistrements faisant autorit et des enregistrements complmentaires :
$header @question @answer @authority @additional = = = = = $packet->header; $packet->question; $packet->answer; $packet->authority; $packet->additional;
Objet en-tte
Les en-ttes de message sont renvoys sous la forme dobjets Net::DNS::Header. La mthode dcrite dans le manuel de Net::DNS::Header correspond aux champs den-tte dcrits dans la RFC 1035 et dans la structure HEADER utilise dans les programmes en C. Pour dterminer si une rponse fait autorit, nous appelons la mthode $header->aa :
if ($header->aa) { print "answer is authoritative\n"; } else { print "answer is not authoritative\n"; }
Objet question
La section des questions dun message DNS est renvoye sous la forme dune liste dobjets Net::DNS::Question. On peut en extraire le nom, le type et la classe de lobjet question laide des mthodes suivantes :
$question->qname $question->qtype $question->qclass
[12/01/08]
DNS et Bind
444
$rr->type $rr->class $rr->ttl
Chaque type denregistrement est une sous-classe de Net::DNS::RR et a sa mthode spcique. Voici un exemple qui montre comment extraire la valeur de prfrence et lchangeur de message partir dun enregistrement MX :
$preference = $rr->preference; $exchanger = $rr->exchange;
[12/01/08]
DNS et Bind
445
[12/01/08]
DNS et Bind
446
#-----------------------------------------------------------------# Affichage du numro de srie. #-----------------------------------------------------------------print "a le numro de srie ", ($soa_req->answer)[0]->serial, "\n"; }
Aborder les trois faons de programmer avec le DNS (script shell, script Perl et programme en C) vous permettra de pouvoir dvelopper des applications concrtes avec le langage le plus adapt votre situation.
[12/01/08]
DNS et Bind
16
Architecture
Maintenant, Kitty, si tu veux bien mcouter, au lieu de jacasser sans arrt, je vais te dire tout ce que jimagine propos de la maison du miroir.
Nous avons dj vu tous les lments constituant linfrastructure DNS de notre Universit du Cinma : les serveurs de noms initiaux primaires et esclaves au Chapitre 4, les serveurs-esclaves supplmentaires au Chapitre 8, la dlgation de domaine et les serveurs de noms associs au Chapitre 9. Aux chapitres 10 et 11, nous avons introduit les serveurs de noms externes et les redirecteurs ( forwarders), les espaces de noms fractionns (split namespaces), les vues (views), etc. Comme nous avons abord sparment chacune de ces possibilits, leur utilisation conjointe peut se trouver difcile de prime abord. Cest pourquoi ce chapitre propose de les runir dans une infrastructure DNS de grande envergure, ce que nous appellerons une architecture DNS. Une architecture DNS met laccent sur la conguration haut niveau, plutt que sur le contenu de chaque zone : dtermination des serveurs de noms primaire et esclaves pour chaque zone, rsolution des noms de domaines dInternet, redirection des requtes et destination de ces requtes, protection de serveurs par rgles dACL ou pare-feu. Il est crucial de documenter son architecture DNS, de la mme manire quon le ferait pour son architecture de rseau. Cette documentation peut aider lors dune recherche de pannes, de goulots dtranglement ou de points de vulnrabilit. Lorsque la rsolution de noms est dfaillante, il est plus facile dinvestiguer avec une connaissance ne de son architecture, plutt quen partant des chiers named.conf ou des rsultats de dig. Toutefois, la digestion en une fois de lintgralit dune architecture DNS peut tre rude. Commenons donc par lobservation dune petite portion : les serveurs de noms externes faisant autorit.
[12/01/08]
DNS et Bind
448
Chapitre 16 Architecture
[12/01/08]
DNS et Bind
449
zone "249.249.192.in-addr.arpa" { type master; file "db.192.249.249"; }; zone "253.253.192.in-addr.arpa" { type master; file "db.192.253.253"; }; zone "254.253.192.in-addr.arpa" { type master; file "db.192.253.254"; }; zone "20.254.192.in-addr.arpa" { type master; file "db.192.254.20"; }; zone "." { type hint; file "db.cache"; }; }; key "ns.movie.edu" { algorithm hmac-md5; secret "JprUYzd+p2TO/B7k9k9Gdg=="; }; view "externe" { match-clients { key "ns.movie.edu"; }; recursion no; zone "movie.edu" { type master; file "db.movie.edu.external"; }; zone "4.1.200.in-addr.arpa" { type master; file "db.200.1.4"; }; };
An de rguler le trac travers le pare-feu, nous pouvons demander notre FAI dutiliser le serveur-esclave de notre DMZ, ns.movie.edu, comme matre pour movie.edu et pour 4.1.200.in-addr.arpa.
[12/01/08]
DNS et Bind
450
Chapitre 16 Architecture
Comme nous ne voulons probablement pas que les requtes en provenance des serveurs de noms dInternet parviennent un serveur situ derrire notre pare-feu, il est ncessaire de congurer le nouveau serveur primaire sous la forme dun serveur primaire cach. Il sagit dun serveur primaire qui, comme les esclaves non ofciels que nous avons introduits au Chapitre 8, nest pas rpertori par un enregistrement NS de nos zones externes, que ce soit dans les zones elles-mmes ou dans leur zone-parente. Ceci vite quun serveur de noms dInternet linterroge durant le processus normal de rsolution de noms. Pour congurer le nouveau serveur de noms sous la forme cache, il nous suft de ne pas le dclarer notre registrar et de ne pas le rfrencer laide denregistrements NS dans les zones externes. La gure 16-1 dcrit ce fonctionnement.
Internet
serveurs parent (edu)
Dlgation Rseau interne de luniversit DMZ de luniversit transfert de zone Rseau du FAI
transfert de zone
pare-feu
Figure 16-1. Serveurs de noms externes faisant autorit, avec un serveur-matre cach
Nous devrions protger le serveur primaire cach en nautorisant le trac DNS quentre lui-mme et nos serveurs de noms esclaves externes, de manire ce que le serveur primaire puisse envoyer des messages NOTIFY ces esclaves et que ces esclaves puissent lui envoyer des requtes de mise jour et de transferts de zone. Cette conguration ncessite dappliquer les rgles dcrites au tableau 16-1. Il est possible de restreindre ces rgles en utilisant les directives notify-source et querysource an de ger les ports dorigine en UDP . Notre conguration de vues duplique ces restrictions sur le serveur primaire lui-mme, par lutilisation de TSIG comme alternative aux adresses IP (remarquons les cls TSIG dans la directive match-clients de la vue externe). Cette conguration procure des mcanismes redondants et indpendants pour protger notre serveur de noms primaire, ce qui est ncessaire pour une protection en profondeur.
[12/01/08]
DNS et Bind
Infrastructure de redirection
451
Tableau 16-1. Trafic rseau autoriser entre le serveur primaire cach et les serveursesclaves
Adresse dorigine message NOTIFY rponse NOTIFY requte de mise jour rponse de mise jour requte de transfert de zone rponse de transfert de zone serveur primaire esclaves esclaves serveur primaire esclaves Port dorigine dynamique 53 dynamique 53 dynamique Adresse de destination esclaves serveur primaire serveur primaire esclaves serveur primaire esclaves Port de destination 53 dynamique 53 dynamique 53 Protocole UDP UDP UDP UDP TCP, incluant ltablissement de connexion TCP
serveur primaire
53
dynamique
Infrastructure de redirection
Nous navons trait que de la moiti de linfrastructure DNS externe. Il faut aussi permettre aux resolvers et aux serveurs de noms internes de rsoudre les noms dInternet. Pour cela, nous pouvons autoriser nos serveurs de noms internes interroger des serveurs dsigns dInternet, en supposant que le pare-feu puisse grer ce fonctionnement. Il serait toutefois dangereux de procder ainsi, pour les raisons que nous avons exposes au Chapitre 11. Par consquent, la plupart des entreprises mettent en place des redirecteurs ( forwarders), qui agissent essentiellement comme des serveurs relais (proxy) pour le DNS (voir le Chapitre 10). Nous avons initialis deux redirecteurs, pour la redondance, au niveau de notre connexion Internet. Les redirecteurs peuvent envoyer des requtes travers le pare-feu en direction des serveurs de noms dInternet et recevoir des rponses ; les serveurs de noms dInternet ne peuvent toutefois pas interroger nos redirecteurs. Nous mettons en uvre cette conguration laide dun ACL allow-query dans le chier named.conf des redirecteurs et dun ltrage UDP tats sur le pare-feu. Ces rglages sajoutent lACL protgeant le serveur primaire cach pour constituer une protection en profondeur. Il est ncessaire dutiliser la dernire version de BIND, ou au moins la version 9.3.0, sur les serveurs de noms internes, de manire sassurer quils choisissent intelligemment lun des deux redirecteurs (voir le Chapitre 10). Les versions antrieures de BIND, dont lalgorithme de slection de redirecteurs est moins sophistiqu, peuvent avoir des problmes si le premier redirecteur est dfaillant : dans la mesure o elles utilisent systmatiquement le premier redirecteur chaque nouvelle requte, le traitement de
[12/01/08]
DNS et Bind
452
Chapitre 16 Architecture
chaque requte redirige prendra plus de temps, parfois plusieurs secondes. Ce phnomne peut rapidement provoquer lempilement de centaines de requtes par seconde, ventuellement jusqu provoquer le refus de nouvelles requtes rcursives (souvenonsnous de la limitation 1000 requtes rcursives simultanes en standard). Comme recommand au Chapitre 11, nous allons congurer nos serveurs de noms internes de manire ce quils ne redirigent que les requtes concernant des noms externes. Tout nom se terminant par movie.edu doit tre rsolu en interne, par requtes itratives. Sur les serveurs de noms de movie.edu faisant autorit, il est alors ncessaire dajouter une directive forwarders vide dans la zone movie.edu :
zone "movie.edu" { type slave; masters { 192.249.249.1; }; file "bak.movie.edu"; forwarders {}; };
Sur les autres serveurs de noms, tels que les serveurs de fx.movie.edu, nous pouvons ajouter une zone stub pour movie.edu :
zone "movie.edu" { type stub; masters { 192.249.249.1; }; file "bak.fx.movie.edu"; forwarders {}; };
Cette directive fournit aux serveurs de noms les enregistrements NS dont ils ont besoin pour rsoudre les noms du domaine movie.edu, ainsi quune rgle leur indiquant de rsoudre les noms sans solliciter les redirecteurs, le tout sans ncessiter de transfert de zone. Il ne faut pas oublier de mettre en place les congurations similaires pour la rsolution inverse de nos zones, si au moins lune delles est une zone-parente. En effet, nous ne voulons pas que les recherches dans nos zones inverses parviennent jusquaux redirecteurs, voire mme sur Internet. La gure 16-2 dcrit ce fonctionnement. Nous aurions certainement pu conomiser des quipements en utilisant notre serveur de noms externe faisant autorit en temps que redirecteur. Mais cette conguration aurait prsent un risque. Mme en crant des vues spares pour la zone externe faisant autorit et pour le redirecteur, avec une mise hors service de la recherche rcursive dans la vue externe et un accs la vue du redirecteur rserv notre espace dadresses internes, les serveurs de noms externes seraient alors exposs la fois aux requtes et aux rponses provenant dune adresse IP quelconque dInternet. De cette manire, nous doublerions les possibilits dattaque sur nos serveurs externes, lesquels sont doublement plus importants, dans cette conguration, car ils grent la fois le service de nom externe et la redirection.
[12/01/08]
DNS et Bind
453
Internet
Pare-feu
Redirecteurs
Serveurs internes
[12/01/08]
DNS et Bind
454
Chapitre 16 Architecture
primaire nest pas nouveau oprationnel et ne rpond pas quil fait autorit. Il nous sufra de rgler le problme avant que le dlai dexpiration de movie.edu ne soit atteint. Si nous ny parvenons pas dans ce dlai, nous devrons envisager de changer de mtier ! Par la suite, nous aurons probablement besoin dtendre notre infrastructure DNS, par exemple pour fournir le service de noms dans un nouveau btiment du campus. laide des directives du Chapitre 8, nous devrons dterminer si les resolvers de ce btiment ne gnrent pas un trac sufsant pour ncessiter un serveur de noms local. Si ce nest pas le cas, en supposant que la liaison entre le btiment et le reste du campus est able, il nous sufra de rgler les resolvers du nouveau btiment pour quils interrogent les serveurs de noms internes. Si le nouveau btiment mrite un serveur de noms, ou si la connexion avec le reste du campus est lente ou intermittente, nous pouvons installer un serveur de noms local. Si nous pensons que les resolvers feront lessentiel de leurs recherches dans movie.edu, nous pouvons congurer ce serveur comme esclave de la zone. Si le lien est lent, nous pouvons mme omettre les enregistrements NS concernant movie.edu et dsignant le nouveau serveur-esclave, an que les autres serveurs internes ne linterrogent pas. Cette conguration sappelle parfois un esclave furtif. Nous devrons aussi dterminer quelles zones inverses seront le plus souvent interrogs par les resolvers locaux, et si il est ncessaire dinitialiser lesclave local pour les servir.
Tches
Bien que ne relevant pas strictement de larchitecture, il est utile de passer du temps documenter les procdures de notre DNS. Ainsi, on peut mettre en place un processus de mise jour comportant la sauvegarde pralable de named.conf et des chiers de zone laide de RCS (Revision Control System). En fait, avant de sauvegarder un chier modi et de le mettre en production, on peut tester la syntaxe de named.conf laide de namedcheckconf. Le mieux est dcrire un script pour automatiser la gestion des chiers de zone : 1. Modication du chier. 2. Utilisation de named-checkzone pour vrier le chier de zone. 3. Si named-checkzone sexcute avec des erreurs, nouvelle dition du chier. 4. Sinon, utilisation de ci -l pour placer le chier sous contrle de RCS. Pour rendre plus facile la surveillance du serveur de noms, il est possible dagrger tous les messages syslog vers un hte unique. Si les traces de named via syslog ne sont pas en service, il suft dajouter une ligne du type :
daemon.* @loghost
aux chiers syslog.conf des serveurs de noms. Si des messages non souhaits sont aussi journaliss avec ceux du service de noms, il est facile de recongurer le serveur pour quil appelle un service de journalisation unique laide de la directive logging :
logging { channel default_syslog { syslog local0; }; };
[12/01/08]
DNS et Bind
455
syslog.conf enverra alors uniquement les messages syslog provenant de named vers le serveur de journalisation (en supposant que le service local0 ne serve pas aussi autre chose). Pour tre inform des messages importants, on peut mettre en place un outil de gestion, tel que swatch1, un produit open source, qui parcourt les chiers de journalisation selon des expressions rgulires spciques et qui agit selon des rgles prdnies, par exemple en envoyant des courriers. La surveillance des messages syslog ne permet pas de dtecter tous les problmes possibles, toutefois. Il est donc aussi possible de mettre en place une surveillance utilisant des requtes DNS pour vrier lintgrit du service de noms. Nous pourrions utiliser dnswalk2, un puissant programme de test des donnes dune zone, par exemple en lexcutant une fois par heure avec cron :
0 * * * * /usr/bin/dnswalk movie.edu. 2>&1 | mail s "dnswalk: `date`" hostmaster@movie.edu
Si cette conguration gnre plus de messages que souhait, grep permettra de slectionner les messages derreur importants et de nenvoyer que ceux-l par courrier. Enn et les administrateurs expriments le savent dj il est ncessaire de sauvegarder rgulirement les serveurs de noms. Une sauvegarde quotidienne des systmes de chiers est sufsante ; il est aussi possible de dupliquer named.conf et les chiers de zone vers une machine centrale pour permettre une remise en service ou une simple consultation aises. rsync, que nous avons prsent au Chapitre 8, peut faciliter cette tche.
1. 2.
swatch est disponible sur http://swatch.sourceforge.net/. dnswalk est disponible sur http://sourceforge.net/projects/dnswalk/.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
17
Divers
Le moment est venu, articula le Morse, De parler de nombre de choses : De souliers de bateaux de cire cacheter De choux et puis de rois Et de dire pourquoi les vagues sont bouillantes Et sil est bien exact que les porcs aient des ailes.
Il est temps daborder la dernire tape. Pour lessentiel, DNS et BIND ont t dcrits mais il reste encore quelques voies intressantes explorer, dont certaines peuvent tre utiles, telles que la cohabitation de Active Directory et de BIND !
Avec cela, vous espreriez que la recherche de empire.fx.movie.edu mnerait celle de empire.magic.movie.edu. Malheureusement, il nen est rien : on ne peut pas attacher un enregistrement CNAME un nud interne, tel que fx.movie.edu, si ce nud contient dautres enregistrements ; or fx.movie.edu possde un enregistrement SOA et des enre-
[12/01/08]
DNS et Bind
458
Chapitre 17 Divers
gistrements NS. Un enregistrement CNAME ce niveau enfreindrait la rgle selon laquelle un nom doit tre, soit un alias, soit un nom canonique, mais pas les deux. Toutefois, avec BIND 9, nous pouvons utiliser le nouvel enregistrement DNAME (prsent au Chapitre 10) pour crer un alias entre lancienne zone et la nouvelle :
fx.movie.edu. IN DNAME magic.movie.edu.
Lenregistrement DNAME peut cohabiter avec dautres types denregistrements sur le nom fx.movie.edu, tels que des enregistrements SOA ou NS, mais il ne peut y avoir dautres noms se terminant par fx.movie.edu. DNAME provoquera la construction denregistrements CNAME dans fx.movie.edu, dsignant des noms de magic.movie.edu, lorsque des recherches seront effectues sur des noms de fx.movie.edu. Avant BIND 9, il est ncessaire dutiliser la mthode classique qui consiste crer un enregistrement CNAME pour chaque nom de la zone :
empire.fx.movie.edu. IN CNAME empire.magic.movie.edu. bladerunner.fx.movie.edu. IN CNAME bladerunner.magic.movie.edu.
Si le sous-domaine nest pas dlgu, cest--dire quil ne possde ni enregistrement SOA ni enregistrement NS, nous pouvons aussi utiliser un alias pour fx.movie.edu. Toutefois, celui-ci ne concernera que le nom du domaine fx.movie.edu et non les noms compris dans la zone fx.movie.edu. Heureusement, les outils de gestion des chiers de zone (tels que h2n, prsent au Chapitre 4) peuvent crer automatiquement les enregistrements CNAME.
1.
Microsoft DNS Server, livr avec les serveurs Windows, autorise un CNAME dsigner un autre CNAME.
[12/01/08]
DNS et Bind
459
courrier, soit lui-mme, soit des htes moins bien placs, causant ainsi des bouclages de distribution du courrier. BIND 8 envoie un message syslog lorsquil rencontre un alias dans la partie droite dun enregistrement :
Sep 27 07:43:48 toystory named[22139]: "digidesign.com IN NS" points to a CNAME (ns1.digidesign.com) Sep 27 07:43:49 toystory named[22139]: "moreland.k12.ca.us IN MX" points to a CNAME (mail.moreland.k12.ca.us)
pourraient tre utiliss pour renvoyer successivement toutes les adresses de fullmonty1, puis toutes celles de fullmonty2 et enn toutes celles de fullmonty3 sur un serveur de noms qui accepte cette abomination (cette conguration enfreint la rgle soit alias soit nom canonique ). BIND 4 accepte cette conguration mais ni BIND 8, ni BIND 9 depuis la version 9.1.0. Avec BIND 8, nous pouvons lautoriser explicitement :
options { multiple-cnames yes; };
Avec BIND 9, il ny a aucune option pour rgler le comportement du serveur. Fort heureusement, par dfaut, cette conguration est interdite.
[12/01/08]
DNS et Bind
460
> toys Server: wormhole Address: 0.0.0.0 toys.movie.edu canonical name = toystory.movie.edu > exit
Chapitre 17 Divers
% dig toys.movie.edu cname ; <<>> DiG 9.3.2 <<>> toys.movie.edu cname ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43984 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 4 ;; QUESTION SECTION: ;toys.movie.edu. ;; ANSWER SECTION: toys.movie.edu.
IN
CNAME
86400 IN CNAME
toystory.movie.edu.
Avec le DNS, par contre, si on cherche le nom canonique, on nobtient que celui-ci. Le serveur ou lapplication ne savent pas dterminer facilement sil existe des alias associs ce nom :
% nslookup Default Server: wormhole Address: 0.0.0.0 > toystory Server: wormhole Address: 0.0.0.0 Name: toystory.movie.edu Address: 192.249.249.3
En utilisant nslookup ou dig pour rechercher un alias, on rcupre dans le mme paquet, la fois lalias et le nom canonique, mais on ne voit aucun autre alias ventuel :
% nslookup Default Server: wormhole Address: 0.0.0.0 > toys Server: wormhole
[12/01/08]
DNS et Bind
Mta-caractres
Address: 0.0.0.0 Name: toystory.movie.edu Address: 192.249.249.3 Aliases: toys.movie.edu > exit % dig toys.movie.edu ; <<>> DiG 9.3.2 <<>> toys.movie.edu ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29782 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 4 ;; QUESTION SECTION: ; toys.movie.edu. ;; ANSWER SECTION: toys.movie.edu. toystory.movie.edu.
461
IN
toystory.movie.edu. 192.249.249.3
La seule mthode pour retrouver tous les alias associs un CNAME consiste transfrer la totalit de la zone, puis en extraire tous les enregistrements CNAME dans lesquels le nom canonique en question apparat :
% nslookup Default Server: wormhole Address: 0.0.0.0 > ls -t cname movie.edu [wormhole.movie.edu] $ORIGIN movie.edu. toys 1D IN CNAME wh 1D IN CNAME mi 1D IN CNAME >
Cette mthode ne rvle que les alias dclars dans cette zone ; il peut aussi y en avoir dans dautres zones.
Mta-caractres
Nous navons pas encore parl des mta-caractres du DNS. Il peut arriver que lon veuille un enregistrement unique pour couvrir tous les noms possibles, plutt quune multitude denregistrements ne se diffrenciant que par leur nom. Le DNS rserve le caractre spcial astrisque ( * ) qui peut tre utilis comme nom gnrique dans les chiers de zone. Le mta-caractre peut correspondre nimporte quel nombre de termes dans un nom, tant quil ny a pas de correspondance exacte avec un nom dj existant dans la base de donnes du serveur.
[12/01/08]
DNS et Bind
462
Chapitre 17 Divers
Le plus souvent, on utilise les mta-caractres pour rediriger du courrier vers des rseaux non connects lInternet. Supposons quun site ne soit pas connect lInternet et quun hte serve de relais entre lInternet et le rseau du site. On pourrait ajouter un mta-enregistrement MX la zone movie.edu pour provoquer lenvoi de tout le courrier venant de lInternet vers le relais. Voici un exemple :
*.movie.edu. IN MX 10 movie-relay.nea.gov.
Puisque les mta-caractres correspondent un ou plusieurs lments de nom, cet enregistrement de ressource sappliquerait aussi bien toystory.movie.edu qu empire.fx.movie.edu ou casablanca.bogart.classics.movie.edu. Le danger des mta-caractres est quils se heurtent aux listes de recherche : ce mta-caractre correspond aussi cujo.movie.edu.movie.edu, ce qui le rend dangereux pour un usage interne la zone. En effet, certaines versions de sendmail appliquent la liste de recherche lorsquelles recherchent des enregistrements MX :
% nslookup Default Server: wormhole Address: 0.0.0.0 > set type=mx > cujo.movie.edu Server: wormhole Address: 0.0.0.0
Recherche denregistrements MX pour cujo
cujo.movie.edu.movie.edu Ce nest pas le nom dun hte rel ! preference = 10, mail exchanger = movie-relay.nea.gov
Les mta-caractres ont une fonction limite. Ils ne remplacent pas les noms pour lesquels il existe dj des donnes. Supposons que nous utilisions des mta-caractres dans les donnes de la zone, comme dans lextrait de db.movie.edu suivant :
* et jaws fx fx IN IN IN IN IN MX MX A NS NS 10 mail-hub.movie.edu. 10 et.movie.edu. 192.253.253.113 bladerunner.fx.movie.edu. outland.fx.movie.edu.
Le courrier destination de toystory.movie.edu est envoy mail-hub.movie.edu, mais celui pour et.movie.edu est directement envoy et.movie.edu. La recherche des enregistrements MX de jaws.movie.edu indiquerait quil ny a pas denregistrement MX pour ce nom ; le mta-caractre ne sapplique pas car il y a dj un enregistrement A. Le mtacaractre ne sapplique pas non plus aux noms de fx.movie.edu car il ne provoque pas le suivi de dlgation, pas plus quau nom movie.edu car, par dnition, le mta-caractre compte pour zro ou plusieurs termes, suivis dun point puis de movie.edu.
[12/01/08]
DNS et Bind
Connexions commutes
463
Lun deux est aux tats-Unis et lautre est en France ; le rseau non connect lInternet est en Grce. La plupart du courrier venant des tats-Unis, deux mta-caractres pour enregistrements MX ont t initialiss avec la plus grande prfrence (la plus petite valeur) pour le relais aux tats-Unis. Puisque ce dernier a la plus grande prfrence, tout le courrier transite par ce relais tant que ce dernier est joignable. Le courrier dun expditeur en France traversera donc lAtlantique pour atteindre le relais aux tats-Unis puis retraversera lAtlantique vers la Grce, car rien dans la liste des enregistrements MX nindique que le relais franais est plus proche, dans ce cas, du destinataire.
Connexions commutes
Les connexions commutes sont une gageure pour le DNS. Au dbut de lInternet et du DNS, ce type de connexions nexistait pas. Avec la popularisation de lInternet et larrive en masse des fournisseurs daccs, de nouveaux types de problmes sont apparus. Lobjectif principal lors de linitialisation du DNS sur une connexion commute est de permettre chaque hte de rsoudre le nom de tout hte distant dont il a besoin. Si on utilise une connexion commute la demande, il faut aussi viter les connexions inutiles. Ainsi, lors de la recherche dun nom situ dans le domaine local, le routeur naura probablement pas besoin dtablir une connexion lInternet. Nous avons rparti les connexions commutes en deux catgories : la connexion manuelle, qui correspond une connexion tablie par un utilisateur, et la connexion la demande, qui ncessite lutilisation dun matriel supplmentaire. Dans ce dernier cas, il sagit gnralement dun routeur, mais une machine Linux (ou tout autre systme dexploitation) peut faire laffaire ; son rle sera deffectuer une connexion automatique lInternet an dcouler du trac. Nous prsentons deux scnarios pour chacun des deux modes de connexion : dans lun, un seul hte tablit la connexion lInternet alors que, dans lautre, cest un petit rseau qui se connecte. Mais avant cela, il faut comprendre comment se met en place la connexion et comment on les connexions inutiles peuvent tre vites.
[12/01/08]
DNS et Bind
464
Chapitre 17 Divers
Pour mettre en vidence le problme, nous effectuons une connexion FTP vers le systme local deadbeef.tinyofce.megacorp.com, mais en orthographiant mal deadbeef :
% ftp deadbeer
Avec lapplication de la liste de recherche, le resolver cherche dabord deadbeer.tinyofce.megacorp.com. Le serveur local, qui fait autorit sur la zone tinyofce.megacorp.com, informe immdiatement que ce nom nexiste pas. Le resolver ajoute alors le second terme de la liste de recherche et cherche deadbeer.megacorp.com, ce qui ncessite linterrogation dun serveur de megacorp.com et donc ltablissement dune connexion la demande.
[12/01/08]
DNS et Bind
Connexions commutes
465
Nous pouvons galement vouloir faire fonctionner un serveur de noms local lorsque la connexion commute est en service an damliorer les performances grce une mmoire cache. Cette opration est simple avec un systme Unix tel que Linux : nous utilisons un script tel que ifup pour mettre en place la connexion et un script ifdown pour larrter. Des scripts annexes, ifup-post et ifdown-post, sont appels respectivement par ifup et ifdown et effectuent lessentiel du travail. Nous pouvons dmarrer named en linvoquant directement ou via ndc start dans ifup-post, puis larrter avec ndc stop ou rndc stop dans ifdown-post. Il suft ensuite de dnir le domaine local dans resolv.conf. Que le serveur de noms soit en service ou non, le resolver, dont le comportement par dfaut consiste interroger un serveur potentiel sur lhte local, saccommodera de la situation.
DNS et Bind
466
Chapitre 17 Divers
Le battement par dfaut est de 60 minutes et nous pouvons dsactiver la maintenance de zone en linitialisant 0. Si une ou plusieurs zones sont connexion commute, le serveur tente de concentrer toutes les oprations de maintenance de ces zones dans un intervalle de temps court et de ne pas effectuer de maintenance plus souvent que lintervalle de battement. Pour un serveur-esclave de zone, cela signie que le temporisateur de rafrachissement standard est dsactiv et que le serveur-matre demande lenregistrement SOA la frquence de battement. Pour une zone-matre, cela implique lenvoi de messages NOTIFY et, probablement, ltablissement de la liaison et la programmation dun rafrachissement sur les esclaves. La sous-structure dialup de la structure options permet de qualier lensemble des zones comme tant accdes via une connexion commute :
options { heartbeat-interval 60; dialup yes; };
Utilise dans une structure zone, elle permet de qualier spciquement cette zone :
zone "movie.edu" { type master;
[12/01/08]
DNS et Bind
467
Les zones accdes via une liaison commute peuvent aussi tre utiles sur les serveursesclaves pour des milliers de zones. Certains FAI fournissent un service-esclave grande chelle et peuvent tre submergs par les administrateurs de serveurs-matres qui xent une priode de rafrachissement trs courte. En qualiant toutes ces zones comme tant accs commut et en grant correctement lintervalle de battement, les FAI peuvent contourner ce problme.
[12/01/08]
DNS et Bind
468
Extrait du chier db.15 :
; ; Fait correspondre 15.0.0.0 0 hp-net.hp.com. ; Le masque de sous-rseau est 255.255.248.0. ; 0.0.0.15.in-addr.arpa. IN PTR hp-net.hp.com. IN A 255.255.248.0
Chapitre 17 Divers
Voici la procdure pour rechercher le nom du sous-rseau correspondant ladresse IP 15.1.0.1 : 1. Appliquez le masque de rseau par dfaut correspondant la classe de ladresse. Ladresse 15.1.0.1 est de classe A, son masque par dfaut est 255.0.0.0. En appliquant le masque ladresse IP vous obtenez le numro de rseau 15. , 2. Envoyez une requte (type=A ou type=ANY) au sujet de 0.0.0.15.in-addr.arpa. 3. La rponse la requte contient une adresse, cest le masque de sous-rseau 255.255.248.0. En lappliquant ladresse IP vous obtenez 15.1.0.0. , 4. Envoyez une requte (type=A ou type=ANY) au sujet de 0.0.1.15.in-addr.arpa. 5. La rponse la requte ne contient pas dadresse, ce qui signie que 15.1.0.0 ne contient pas de sous-rseau. 6. Envoyez une requte PTR pour 0.0.1.15.in-addr.arpa. 7. La rponse contient le nom du rseau pour 15.1.0.1 : corp-subnet.corp.hp.com. Nous pouvons aussi fournir la liste de tous les rseaux dune zone laide denregistrements PTR :
movie.edu. IN PTR 0.249.249.192.in-addr.arpa. IN PTR 0.253.253.192.in-addr.arpa.
Bien que la RFC 1101 contienne tout ce qui est ncessaire, peu de logiciels utilisent ce type de conguration et peu dadministrateurs ajoutent ces informations.
AFSDB
AFSDB a une syntaxe proche de celle des enregistrements MX et une smantique proche de celle des enregistrements NS. Un enregistrement AFSDB indique o se trouve, soit un serveur de base de donnes de cellules AFS, soit un serveur de noms authenti de cellules DCE. Il dcrit le type et le nom du serveur.
[12/01/08]
DNS et Bind
469
AFS signie Andrew File System ; il a t conu lUniversit de Carnegie-Mellon dans le projet Andrew (cest maintenant un produit dIBM2). AFS est un systme de chiers en rseau qui gre mieux que NFS les problmes de latence des grands rseaux et qui propose des systmes de mmoire cache pour amliorer les performances. Un serveur de base de donnes de cellules AFS mmorise la position densembles de chiers (groupes de chiers) sur les diffrents serveurs de chiers AFS, lintrieur de cellules (groupes logiques dhtes). Pour trouver un chier dans une cellule, il faut tre capable de trouver les serveurs de base de donnes de cellules AFS. Un serveur de noms authenti de cellules DCE mmorise les informations sur tous les services disponibles dans une cellule DCE. Une cellule DCE est un groupe logique dhtes qui partagent des services offerts dans lenvironnement distribu DCE (Distributed Computing Environment de lOpen Group). Pour accder aux services dune autre cellule AFS ou DCE du rseau, il faut dabord trouver les serveurs de base de donnes de cellules ou les serveurs de noms authentis. Le nom auquel est attach lenregistrement AFSDB fournit le nom de la cellule connue du serveur DNS. Les cellules portent souvent le nom du domaine. Comme nous lavons crit, la syntaxe des enregistrements AFSDB est proche de celle des enregistrements MX. La valeur de prfrence est remplace par le type de serveur : 1 pour un serveur de base de donnes de cellules AFS, 2 pour un serveur de noms authenti de cellules DCE. la place de lchangeur de courrier, on dsigne lhte qui hberge le serveur. Prenons un exemple : ladministrateur de fx.movie.edu installe une cellule DCE qui inclut des service AFS an de tester un systme distribu pour amliorer les performances de calculs graphiques. Il installe un serveur de base de donnes de cellule AFS et un serveur de noms de cellules DCE sur bladerunner.fx.movie.edu, un serveur de bases de donnes de cellule sur empire.fx.movie.edu et un serveur de noms DCE sur aliens.fx.movie.edu. Il doit crer les enregistrements AFSDB suivants :
; Notre cellule DCE sappelle fx.movie.edu, du mme nom que la zone fx.movie.edu. IN AFSDB 1 bladerunner.fx.movie.edu. IN AFSDB 2 bladerunner.fx.movie.edu. IN AFSDB 1 empire.fx.movie.edu. IN AFSDB 2 aliens.fx.movie.edu.
LOC
La RFC 1876 dnit lenregistrement exprimental LOC qui permet aux administrateurs de zone dannoncer lemplacement des quipements, des rseaux et sous-rseaux. Dans le DNS, la localisation se fait sous la forme de la latitude, de la longitude et de laltitude. Des applications pourraient utiliser ces informations pour dessiner des cartes du rseau, pour valuer lefcacit du routage, etc. Lenregistrement LOC mmorise, dans lordre, la latitude, la longitude et laltitude. Latitude et longitude ont le format suivant :
<degrs> [minutes [secondes.<fraction de secondes>]] (N|S|E|W)
2.
[12/01/08]
DNS et Bind
470
Laltitude est donne en mtres.
Chapitre 17 Divers
Le site RFC 1876 Resources accessible depuis lURL http://www.ckdhr.com/dns-loc, cr par Christopher Davis, lun des auteurs de la RFC 1876, donne des renseignements et fournit des liens utiles ceux qui crent des enregistrements LOC. Si vous ne disposez pas de rcepteur GPS (Global Positioning System) pour localiser chaque machine3, vous pouvez essayer, par exemple, le service Geocoding de ViaMichelin (http://www.viamichelin.fr)4. Voici un exemple denregistrement LOC :
huskymo.boulder.acmebw.com. IN LOC 40 2 0.373 N 105 17 23.528 W 1638m
Des champs optionnels permettent de dnir la largeur de lentit dcrite (les enregistrements LOC dcrivent aussi des rseaux, qui peuvent tre vastes) ainsi que la prcision des coordonnes. La taille par dfaut est de un mtre, ce qui est parfait pour une machine. Les prcisions par dfaut sont de 10000 mtres en horizontal et de 10 mtres en vertical. Les enregistrements LOC peuvent tre attachs un nom de rseau ou de sous-rseau. Si vous avez cr des enregistrements pour les rseaux en suivant la RFC 1101 (voir la section Nom et adresse de rseau dans ce chapitre), vous pouvez leur associer des enregistrements LOC :
; ; Correspondance nom/adresse pour le rseau 15.0.0.0. ; hp-net.hp.com. IN PTR 0.0.0.15.in-addr.arpa. IN LOC 37 24 55.393 N 122 8 37 W 26m
SRV
Il est difcile de localiser un service ou un type particulier de serveur dans une zone si on ne sait pas explicitement o le trouver. De nombreux administrateurs rsolvent partiellement ce problme en crant des alias portant le nom des services. Lalias ftp.movie.edu, par exemple, dsigne larchive FTP du domaine :
ftp.movie.edu. IN CNAME plan9.fx.movie.edu.
Cela facilite le travail des utilisateurs et dissocie le service de la machine qui lhberge, ce qui permet de dplacer le service vers un autre hte, en changeant uniquement lenregistrement CNAME au niveau du service de noms. Lenregistrement exprimental SRV, introduit par la RFC 2052, est un mcanisme gnral de localisation des services. SRV fournit aussi des fonctions puissantes qui permettent aux administrateurs de rpartir la charge et de fournir des services de secours, par un mcanisme similaire celui des enregistrements MX. Nous pouvons
3.
4.
NdT : pour la France, vous pouvez consulter le site web de lIGN (http://www.ign.fr). La rubrique GPS donne des indications sur la correspondance entre les coordonnes GPS et les systmes de coordonnes utiliss sur les cartes franaises. Pour les tats-Unis, vous pouvez utiliser Etaks Eagle Geocoder (http://www.geocode.com/ modules.php?name=TestDrive_Eagle) pour des positions ainsi que AirNavs Airport Information (http://www.airnav.com/airports) qui donne les altitudes des aroports, etc.
[12/01/08]
DNS et Bind
471
voir lenregistrement SRV comme une gnralisation de lenregistrement MX des services autres que le trac SMTP . Le format de nom attach est spcique lenregistrement SRV. Tout comme pour les alias dcrivant des services, le nom auquel un enregistrement SRV est attach fournit le nom du service offert et le protocole sur lequel il fonctionne, le tout accol au nom de lhte. Les termes reprsentant le nom du service et le protocole commencent par un caractre de soulignement ( _ ) an de les diffrencier des termes constituant le nom dun hte. Ainsi :
_ftp._tcp.movie.edu
reprsente lenregistrement SRV que recevrait un utilisateur effectuant une recherche du service FTP de movie.edu. Linformation :
_http._tcp.www.movie.edu
reprsente lenregistrement SRV que rechercherait quelquun en accdant lURL http:/ /www.movie.edu en vue de trouver les serveurs web www.movie.edu. Les noms de service et de protocole doivent, soit apparatre dans la liste des numros de ports de lIANA (http://www.iana.org/assignments/port-numbers), soit tre un nom spcique uniquement utilis en local. Nous ne devons utiliser des numros de port ou de protocole, mais des noms. Les donnes dun enregistrement SRV comportent quatre champs : priorit, poids, port et cible. Les trois premiers sont des entiers non signs sur 16 bits. cible est un nom. Priorit priorit est semblable la prfrence dun enregistrement MX : plus la valeur est faible, plus la cible associe doit tre privilgie. Lors de la recherche de lhte offrant un certain service, les clients devraient retenir les cibles ayant la mme priorit avant dessayer celles de valeur plus leve (priorit plus faible). Poids poids permet aux administrateurs de zone de rpartir la charge entre plusieurs cibles. Les clients devraient utiliser les cibles de mme priorit en proportion de leur poids. Si une cible a une priorit de 0 et un poids de 1, et quune autre cible a aussi une priorit de 0 mais un poids de 2, la seconde cible devrait recevoir une charge double de la premire. Cest au client de grer cette charge : il tire alatoirement un nombre. Si le nombre est, par exemple, dans le dernier tiers de la plage, il choisit la troisime cible ; sil est dans le second tiers, il choisit la seconde cible, etc. Port port dnit le port sur lequel fonctionne le service recherch. Cela permet des administrateurs de zone de placer des serveurs sur des ports non standard. Ainsi, un administrateur peut-il utiliser un enregistrement SRV pour indiquer des navigateurs web dutiliser le port 8000 plutt que le port standard du protocole HTTP (80). Cible cible indique le nom de lhte qui hberge le service. cible doit tre un nom canonique, pas un alias, et doit avoir des enregistrements dadresse attachs.
[12/01/08]
DNS et Bind
472
Chapitre 17 Divers
Ainsi, pour le serveur FTP de movie.edu, nous avons ajout les enregistrements suivants db.movie.edu :
_ftp._tcp.movie.edu. IN SRV 1 0 21 plan9.fx.movie.edu. IN SRV 2 0 21 thing.fx.movie.edu.
Ces enregistrements indiquent aux clients FTP capables dutiliser les enregistrements SRV, dutiliser en premier le port 21 de plan9.fx.movie.edu pour se connecter movie.edu, puis dessayer le port 21 de thing.fx.movie.edu si le serveur FTP de plan9.fx.movie.edu nest pas disponible. Les enregistrements :
_http._tcp.www.movie.edu. IN SRV 0 2 80 www.movie.edu. IN SRV 0 1 80 www2.movie.edu. IN SRV 1 1 8000 postmanrings2x.movie.edu.
rorientent les requtes www.movie.edu vers le port 80 de www.movie.edu et de www2.movie.edu avec la rception de deux fois plus de requtes par www.movie.edu que par www2.movie.edu. Si aucun de ces serveurs nest disponible, la requte peut tre envoye vers le port 8000 de postmanrings2x.movie.edu. Pour annoncer lindisponibilit dun service, il suft de placer un point dans le champ cible :
_gopher._tcp.movie.edu. IN SRV 0 0 0 .
Malheureusement, peu dapplications clientes utilisent les enregistrements SRV. Certains clients SIP5, Windows 2000, Windows XP et Windows Server 2003 sont des exceptions (nous traiterons plus loin des enregistrements SRV dans lenvironnement de Windows). Comme SRV est peu rpandu, il ne faut pas les utiliser comme une alternative aux enregistrements dadresse. Il est prudent dintroduire au moins un enregistrement dadresse pour le nom auquel un enregistrement SRV est attach (cest--dire le nom sans les termes commenant par le _ ) et mme plusieurs enregistrements dadresse si on veut pratiquer un quilibrage de charge entre les adresses. Si la cible dun enregistrement SRV nest l quen secours, il ne faut pas inclure son adresse IP De . mme, si un hte propose un service sur un port non standard, il ne faut pas inclure son adresse, puisquil ny a pas de mthode pour rorienter un client vers un port non standard dans un enregistrement A. Les enregistrements suivants ont t ajouts pour www.movie.edu :
_http._tcp.www.movie.edu. IN IN IN www.movie.edu. IN IN SRV SRV SRV A A 0 2 80 www.movie.edu. 0 1 80 www2.movie.edu. 1 1 8000 postmanrings2x.movie.edu. 200.1.4.3 ; adresse de www.movie.edu et 200.1.4.4 ; de www2.movie.edu pour les ; clients non au fait des ; enregistrements SRV
Les navigateurs capables dinterprter les enregistrements SRV enverront deux fois plus de requtes www.movie.edu qu www2.movie.edu et ils nutiliseront
5.
NdT : SIP (Session Initiation Protocol) est un protocole de l'IETF (RFC 3261) qui traite des sessions multimdia.
[12/01/08]
DNS et Bind
ENUM
473
postmanrings2x.movie.edu que si les deux serveurs web principaux sont indisponibles. Les requtes des navigateurs qui nutilisent pas les enregistrements SRV parviendront alternativement www.movie.edu et www2.movie.edu.
ENUM
ENUM (Telephone Number Mapping ou correspondance inverse des numros de tlphone) est un nouveau service du DNS ; sa principale fonction est dutiliser le DNS pour faire correspondre les numros E.164 des URI6. Ces URI permettent didentier un utilisateur VoIP une adresse de courriel, un tlcopieur, etc. , Vous connaissez probablement dj les numros en notation E.164 mais peut-tre pas sous ce nom. La recommandation E.164 de lUIT (Union internationale des tlcommunications) dnit le format des numros de tlphone utiliss dans le monde. Ces numros commencent par le code du pays (tel que 33 pour la France), suivi habituellement dun code de zone gographique. Le reste du numro est dni localement. Dans la reprsentation des numros, une ponctuation peut sparer le code du pays des autres champs comme par exemple, aux tats-Unis, (408) 555-1234. Outre le tiret, on trouve couramment des points, des parenthses ou des combinaisons de ces signes de ponctuation. Le code de pays est souvent prcd dun plus ( + ). Le lien entre un numro au format E.164 et des URI permet, par exemple, de joindre un correspondant par VoIP sans savoir comment au pralable. Tant que lappelant connat le numro E.164 li un URI oprationnel, son tlphone (ou, plus probablement, un logiciel ou un composant faisant ofce de tlphone) peut dterminer lURI de destination et tablir la communication. ENUM permet aussi des utilisateurs de rseaux VoIP diffrents de communiquer sans recourir au rseau tlphonique commut public. ENUM est promis un bel avenir comme sorte dannuaire uni de mthodes pour joindre des correspondants. Sous un seul numro E.164, vous pouvez indiquer les URI que vos correspondants peuvent utiliser pour vous joindre par tlphone, courrier lectronique, tlcopie ou messagerie instantane, par exemple.
6.
URI signie Uniform Resource Identier. Une URL (Uniform Resource Locator), telle que celles que vous utilisez dans votre navigateur, est un cas particulier dURI, de la mme manire que lest aussi un URN (Uniform Resource Name).
[12/01/08]
DNS et Bind
474
Chapitre 17 Divers
3. Insrez un point entre chaque chiffre et ajoutez e164.arpa. la n. Le rsultat sera le nom rechercher (la chane 2121558041 devient le nom 2.1.2.1.5.5.5.8.0.4.1.e164.arpa.).
Enregistrement NAPTR
Maintenant que le numro E.164 est traduit en un nom DNS, nous devons comprendre ce quil faut rechercher. ENUM mmorise toutes les informations dans un enregistrement NAPTR7 qui possde six champs spciques, dont certains dentre eux sont rarement utiliss. Ordre Similaire la valeur de prfrence dun enregistrement MX, ce champ informe un client ENUM de la place quil doit donner cet enregistrement, relativement aux autres enregistrements NAPTR attachs au mme nom. La valeur est un entier non sign sur 16 bits. Plus la valeur est basse, plus cet enregistrement sera utilis rapidement. Prfrence Lui aussi cod sous la forme dun entier non sign sur 16 bits, ce champ donne des informations aux clients ENUM sur lutilisation de lenregistrement. Si un client ENUM accepte plus dun URI dans un jeu denregistrements NAPTR de mme ordre, il peut utiliser la valeur de prfrence pour choisir lenregistrement ; plus la valeur de prfrence est faible, plus la prfrence est leve. Dun autre ct, le client est libre de choisir parmi plusieurs enregistrements selon ses propres possibilits et selon sa prfrence. Drapeaux Le drapeau u est le seul drapeau dni pour un enregistrement NAPTR utilis par ENUM. Il indique que lenregistrement NAPTR est terminal, cest--dire quil correspond un enregistrement E.164 dnissant directement un URI. Effectivement, un enregistrement NAPTR peut aussi correspondre un nom DNS, qui nit par dsigner des URI. Service Dans un enregistrement ENUM, ce champ commence toujours par e2u+ (la casse est non signicative). e2u signie de E.164 URI . La chane qui suit e2u+ dnit le type et, ventuellement, le sous-type dURI li dans cet enregistrement NAPTR. Ainsi, le service e2u+sip relie un numro E.164 un URI commenant par sip: ou sips: . Expression rgulire Ce champ contient une expression de remplacement sous la mme forme que dans Perl ou sed pour modier lAUS (voir plus haut). La premire moiti de lexpression de substitution est une expression rgulire tendue au format POSIX. La seconde moiti peut contenir une combinaison doctets pour remplacer une partie
7.
Les enregistrements NAPTR (Naming Authority Pointer) sont antrieurs aux enregistrements ENUM et peuvent servir dautres usages, mais seul ENUM les utilise vraiment aujourdhui.
[12/01/08]
DNS et Bind
ENUM
475
de lAUS, ainsi que des rfrences en arrire des portions de lAUS entre parenthses. Le drapeau optionnel i indique que lexpression de remplacement est sensible la casse des caractres. Nous montrerons des exemples. Remplacement Pour un enregistrement NAPTR non terminal, ce champ dnit le nom suivant rechercher. Voici quelques exemples denregistrement NAPTR, extraits de la RFC 3761 qui dcrit ENUM :
$ORIGIN 3.8.0.0.6.9.2.3.6.1.4.4.e164.arpa. NAPTR 10 100 "u" "E2U+sip" "!^.*$!sip:info@example.com!" . NAPTR 10 101 "u" "E2U+h323" "!^.*$!h323:info@example.com!" . NAPTR 10 102 "u" "E2U+msg" "!^.*$!mailto:info@example.com!" .
Remarquons que le dernier champ de chaque enregistrement, remplacement, contient un unique point, indiquant ainsi quil ny a aucun domaine de remplacement. Ces enregistrements NAPTR mettent en correspondance le numro E.164 +441632960083 avec trois URI. Ils ont tous la mme valeur dordre mais ladministrateur de lenregistrement a dni une meilleure prfrence pour lURI SIP . Les champs dexpression rgulire semblent tranges dans le contexte du DNS et mritent une explication. Le point dexclamation ( ! ) sert de sparateur, de la mme manire quune barre oblique ( / ). Il doit y en avoir exactement trois : la premire avant lexpression de substitution, la seconde entre lexpression recherche et lexpression de remplacement, la troisime aprs lexpression de remplacement avant dventuels drapeaux. Nimporte quel caractre non numrique peut servir de sparateur, sauf ceux utilisables comme drapeau (cest--dire pas la lettre i ). / ou ! sont des bons choix car ils sont faciles reprer. Lexpression rgulire tendue correspond une partie ou la totalit de lAUS. Dans les trois enregistrements en exemple, ^.*$ dsigne lensemble de lAUS. En effet, ^ dsigne le dbut de lAUS, $ en dsigne la n et .* dsigne une ou plusieurs occurrences de tout caractre. Les trois expressions concernent donc lensemble de lAUS et le remplacent en totalit par un URI, en loccurrence par lURI sip:info@example.com dans le cas du premier enregistrement NAPTR. Heureusement, la plupart des enregistrements NAPTR terminaux dans ENUM remplacent la totalit dun AUS par un URI. Voici maintenant un exemple denregistrement NAPTR utilisant une rfrence en arrire pour extraire une partie de lAUS et lutiliser dans un URI :
$ORIGIN 0.5.6.1.e164.arpa. * NAPTR 10 100 "u" "E2U+sip" "/^+1650(.*)$/sip:\1@peninsula.sip.sbc.com/" .
Toute la partie entre parenthses, cest--dire tout ce qui suit +1650, est mmorise lors de la recherche pour tre utilise telle quelle lors du remplacement. Dans la seconde partie de lexpression, \1 correspond ce premier jeu de parenthses (et ici, le seul), comme en Perl. Bien sr, une fois quun numro E.164 a t traduit en URI, de nouvelles recherches DNS peuvent tre ncessaires pour rsoudre, par exemple, les noms en adresses IP .
[12/01/08]
DNS et Bind
476
Chapitre 17 Divers
[12/01/08]
DNS et Bind
477
compatible ASCII (ASCII-compatible encoding ou ACE) est plutt incomprhensible pour un tre humain, de la mme manire que lest le codage en base 64. An de faciliter la distinction entre un nom cod en ACE et un nom cod en ASCII mais particulirement complexe, le systme ACE dnit un prxe spcique (xn--), dsormais interdit dans un nom purement cod en ASCII. Les noms DNS incorporant un ou plusieurs termes cods en ACE sappellent des noms de domaine internationaliss (Internationalized Domain Names ou IDN). Plutt que de tenter de prendre en charge une multitude de langues et les jeux de caractres informatiques spciques qui leur sont propres, la RFC 3490 ne gre quun seul jeu, appel Unicode. Et quel jeu ! Unicode contient des dizaines de milliers de caractres de toute origine8. Il est presque toujours possible de traduire une chane saisie avec dans un jeu de caractres nationaux (par exemple ISO Latin-1) en Unicode. Le codage en Unicode incombe aux applications et non aux resolvers ou aux serveurs de noms. Si un navigateur permet un utilisateur dinvoquer lURL www.etwas-hnlich.de, cest le navigateur qui code etwas-hnlich en son quivalent ACE avant de demander au resolver de rsoudre le nom9. Les administrateurs nont donc besoin de mettre jour ni les resolvers, ni les serveurs de noms. Par contre, si lquipe marketing souhaite faire enregistrer un ensemble de noms internationalis, vous aboutirez des donnes de zone plutt dsagrables rechercher. Prenons un exemple : lquipe marketing souhaite que vous enregistriez etwashnlich.de. DENIC, le bureau denregistrement qui gre la zone de, demande quun serveur soit dj oprationnel avant de mettre en place la dlgation de zone. Il faut donc dterminer pralablement le codage ACE de etwas-hnlich.de. Plusieurs sites offrent des outils de codage en ACE :
Le chier de zone doit, lui aussi, utiliser le nom de domaine cod en ACE :
$TTL 1d xn--etwas-hnlich-lcb.de. IN SOA ns1.xn--etwas-hnlich-lcb.de. ( hostmaster.xn--etwas-hnlich-lcb.de. 2006012500 1h 15m 30d 1h ) IN NS ns1.xn--etwas-hnlich-lcb.de. IN NS ns2.xn--etwas-hnlich-lcb.de.
8. 9.
Le site web du Consortium Unicode, http://www.unicode.org/., www et com tant des termes en ASCII pur, ils nont pas besoin dtre traduits.
[12/01/08]
DNS et Bind
478
Chapitre 17 Divers
Bien sr, vous pouvez viter certaines de ces congurations en prparant des serveurs de noms avec des noms utilisant simplement les codes ASCII et en dnissant une adresse lectronique alternative dans lenregistrement SOA. Si vous envisagez de manipuler massivement des noms internationaliss, vous aurez probablement besoin dune bibliothque de fonctions pour convertir le codage ACE en Unicode et inversement. Plusieurs bibliothques sont disponibles :
DNS et WINS
Dans la premire dition de ce livre ( lpoque o tout tait simple), nous avions voqu lalignement prochain des noms NetBIOS et des noms du DNS, mais nous avions observ quil ny avait aucun moyen pour que le DNS fasse ofce de serveur de noms NetBIOS. En effet, un serveur de noms devait accepter les mises jour dynamiques pour fonctionner comme un serveur de noms NetBIOS. Aujourdhui, BIND 8 et 9 supportent les mises jour dynamiques. Malheureusement, ni les clients NetBIOS ni les serveurs WINS nenvoient de mise jour dynamique un serveur DNS. Les serveurs WINS ne traitent que les mises jour dynamiques propritaires des clients NetBIOS. En dautres termes, un serveur WINS ne dialogue pas avec le DNS. Toutefois, Microsoft fournit un serveur de noms, Microsoft DNS Server, qui peut dialoguer avec les serveurs WINS. Le serveur DNS de Microsoft dispose dune interface graphique dadministration confortable et tablit un lien avec WINS. On peut le congurer pour quil interroge le serveur WINS sil ne trouve pas une information dadresse dans une zone DNS. Pour cela, il utilise lenregistrement WINS qui, comme le SOA, est attach au nom de la zone. Il agit comme un drapeau pour informer le serveur DNS de Microsoft quil doit interroger un serveur WINS sil ne trouve pas une adresse associe au nom recherch. Lenregistrement :
@
[12/01/08]
IN
WINS
192.249.249.39 192.253.253.39
DNS et Bind
DNS et WINS
479
indique au serveur DNS de Microsoft dinterroger les serveurs WINS situs aux adresses 192.249.249.39 et 192.253.253.39, dans cet ordre. Le TTL zro est une prcaution pour viter que lenregistrement ne soit cherch et plac en mmoire cache. Lenregistrement WINS-R permet un serveur DNS de Microsoft de chercher un nom connaissant son adresse IP en utilisant une requte NetBIOS NBSTAT. Si une zone in, addr.arpa contient un enregistrement WINS-R tel que :
@ 0 IN WINS-R movie.edu
et que ladresse IP recherche napparat pas dans la zone DNS, le serveur envoie une requte NetBIOS NBSTAT pour une recherche inverse partir de ladresse IP Cela . revient appeler un numro de tlphone et demander qui est au bout du l. Le serveur ajoute ensuite un point et le nom du domaine, ici .movie.edu , au rsultat obtenu. Ces enregistrements fournissent un lien efcace entre les deux espaces de noms. Malheureusement, lintgration nest pas parfaite. Le principal problme est que seuls les serveurs DNS de Microsoft comprennent les enregistrements WINS et WINS-R. Par consquent, si on veut que les recherches dans la zone fx.movie.edu parviennent au serveur WINS du dpartement des effets spciaux, il faut que tous les serveurs DNS de fx.movie.edu viennent de chez Microsoft. En effet, si les serveurs de fx.movie.edu sont dorigines diverses (Microsoft pour les uns, BIND pour les autres), et si un serveur DNS distant a besoin de rechercher un nom qui se trouve tre dorigine NetBIOS dans fx.movie.edu, il choisit dinterroger le serveur DNS de fx.movie.edu avec lequel il obtient le meilleur dlai daller-retour. Sil sagit dun serveur DNS Microsoft, la correspondance entre nom recherch et adresse attribue dynamiquement sera possible, ce qui ne sera pas le cas sil sagit dun serveur BIND. La meilleure conguration DNS-WINS consiste placer toutes les donnes lies WINS dans une zone ddie du DNS, par exemple wins.movie.edu. Tous les serveurs de noms de wins.movie.edu sont des serveurs DNS de Microsoft ; la zone wins.movie.edu ne contient que des enregistrements SOA et NS ainsi quun enregistrement WINS dsignant le serveur WINS pour wins.movie.edu. De cette manire, il ny a pas de possibilit dincohrence entre les diffrents serveurs de la zone. Par contre, la correspondance inverse ne peut pas tre rpartie facilement en deux zones spares, lune pour un serveur BIND et lautre pour un serveur Microsoft. Donc, pour mettre en place simultanment une correspondance inverse base sur des enregistrements PTR et une correspondance inverse base sur WINS-R, il ne faut utiliser que des serveurs DNS de Microsoft. Un autre problme est que les enregistrements WINS et WINS-R sont propritaires. Les serveurs BIND ne les comprennent pas et un esclave BIND transfrant un enregistrement WINS partir dun matre primaire de Microsoft chouera dans le transfert de zone car lenregistrement WINS est de type inconnu (voir les dtails au Chapitre 14). Une solution ces problmes est apporte par la mise jour dynamique du DNS, introduite dans BIND 8 (voir le Chapitre 10), et son intgration dans Windows 2000, WINDOWS XP et Windows Server 2003. La mise jour dynamique permet dajouter et de supprimer les enregistrements dune zone, ce qui offre Microsoft les moyens techniques dutiliser le DNS comme service de noms pour NetBIOS.
[12/01/08]
DNS et Bind
480
Chapitre 17 Divers
[12/01/08]
DNS et Bind
481
Le serveur DHCP de Windows 2000 inclus dans les serveurs Windows rcents ajoute de lui-mme lenregistrement PTR. Dans linterface MMC du serveur DHCP une option , permet ladministrateur dimposer au serveur lajout la fois de lenregistrement PTR et de lenregistrement A. Si lenregistrement A tait ajout automatiquement, nous naurions pas prcis quil sagissait dun prrequis. Certains serveurs, et particulirement les contrleurs de domaine, enregistrent de nombreuses informations dans le DNS par mise jour dynamique, avec rafrachissement priodique (le service netlogon, par exemple, valide ses enregistrements SRV toutes les heures). Ces informations permettent aux clients de localiser les services (ports et htes). Voici les enregistrements ajouts par matrix.fx.movie.edu, le contrleur du domaine Active Directory fx.movie.edu :
fx.movie.edu. 600 IN A 192.253.254.14 ec4caf62-31b2-4773-bcce-7b1e31c04d25._msdcs.fx.movie.edu. 600 IN CNAME matrix.fx.movie.edu. gc._msdcs.fx.movie.edu. 600 IN A 192.253.254.14 _gc._tcp.fx.movie.edu. 600 IN SRV 0 100 3268 matrix.fx.movie.edu. _gc._tcp.Default-First-Site-Name._sites.fx.movie.edu. 600 IN SRV 0 100 3268 matrix.fx.movie.edu. _ldap._tcp.gc._msdcs.fx.movie.edu. 600 IN SRV 0 100 3268 matrix.fx.movie.edu. _ldap._tcp.Default-First-Site-Name._sites.gc._msdcs.fx.movie.edu. 600 IN SRV 0 100 3268 matrix.fx.movie.edu. _kerberos._tcp.dc._msdcs.fx.movie.edu. 600 IN SRV 0 100 88 matrix.fx.movie.edu. _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs.fx.movie.edu. 600 IN SRV 0 100 88 matrix.fx.movie.edu. _kerberos._tcp.fx.movie.edu. 600 IN SRV 0 100 88 matrix.fx.movie.edu. _kerberos._tcp.Default-First-Site-Name._sites.fx.movie.edu. 600 IN SRV 0 100 88 matrix.fx.movie.edu. _kerberos._udp.fx.movie.edu. 600 IN SRV 0 100 88 matrix.fx.movie.edu. _kpasswd._tcp.fx.movie.edu. 600 IN SRV 0 100 464 matrix.fx.movie.edu. _kpasswd._udp.fx.movie.edu. 600 IN SRV 0 100 464 matrix.fx.movie.edu. _ldap._tcp.fx.movie.edu. 600 IN SRV 0 100 389 matrix.fx.movie.edu. _ldap._tcp.Default-First-Site-Name._sites.fx.movie.edu. 600 IN SRV 0 100 389 matrix.fx.movie.edu. _ldap._tcp.pdc._msdcs.fx.movie.edu. 600 IN SRV 0 100 389 matrix.fx.movie.edu. _ldap._tcp.97526bc9-adf7-4ec8-a096-0dbb34a17052.domains._msdcs.fx.movie.edu. 600 IN SRV 0 100 389 matrix.fx.movie.edu. _ldap._tcp.dc._msdcs.fx.movie.edu. 600 IN SRV 0 100 389 matrix.fx.movie.edu. _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs.fx.movie.edu. 600 IN SRV 0 100 389 matrix.fx.movie.edu.
Que denregistrements ! Ces enregistrements informent les clients Active Directory des services offerts par le contrleur de domaine, dont Kerberos et LDAP10. Les enregistrements SRV indiquent que ces services sexcutent tous sur lunique contrleur de domaine matrix.fx.movie.edu. Avec un second contrleur de domaine, le nombre denregistrements doublerait.
10. Chacun de ces enregistrements est dcrit dans larticle Q178169 de la Knowledge Base de Microsoft.
[12/01/08]
DNS et Bind
482
Chapitre 17 Divers
Tous les noms denregistrements SRV se terminent par fx.movie.edu, le nom du domaine Active Directory. Si le domaine stait appel ad.movie.edu, les procdures de mise jour dynamique auraient modi la zone qui contient le nom ad.movie.edu, cest--dire movie.edu en ralit.
DNS et Bind
483
BIND et GSS-TSIG
Malheureusement, BIND ne supporte pas encore GSS-TSIG ; on ne peut donc pas utiliser la mise jour dynamique scurise de Windows avec BIND. GSS-TSIG sera support dans une prochaine version de BIND 9, ce qui permettra dutiliser toutes les rgles de la politique de scurit dcrites au Chapitre 10 an de dnir la porte de chaque cl. Lensemble de rgles :
zone "fx.movie.edu" { type master; file "db.fx.movie.edu"; update-policy { grant *.fx.movie.edu. self *.fx.movie.edu. A; grant matrix.fx.movie.edu. self matrix.fx.movie.edu. ANY; grant matrix.fx.movie.edu. subdomain fx.movie.edu. SRV CNAME A; }; };
permet aux clients Windows et aux serveurs de dclarer eux-mmes ce qui est ncessaire dans la zone.
Mise en place
En attendant lvolution de BIND, comment peut-on grer la prolifration de Windows et dActive Directory sur un rseau ? Microsoft conseille de migrer tous les serveurs de noms vers le serveur DNS de Microsoft. Mais il existe des options bties autour de BIND.
DNS et Bind
484
Chapitre 17 Divers
Si vous tes dispos envisager lutilisation dun serveur DHCP diffrent, vous pouvez mme dployer une solution plus scurise. Les dernires versions du serveur DHCP de lISC supportent les mises jour dynamique certies par TSIG et utilisent un mcanisme plus intelligent, bas sur des enregistrements TXT, pour viter les conits de noms entre clients DHCP . Lorsque le serveur DHCP ajoute un enregistrement A pour le compte dun client DHCP il ajoute galement un enregistrement TXT contenant une empreinte de , ladresse MAC du client. Voici les enregistrements rsultants :
walktheline A TXT 192.253.254.237 "313f1778871429e6d240893c1afc163aee"
Avant dajouter ultrieurement un enregistrement A diffrent pour le compte dun client, le serveur DHCP vrie tout dabord si ladresse MAC de ce client conduit la mme empreinte que celle mmorise dans lenregistrement TXT. Si cest le cas, le serveur DHCP supprime tout dabord lancien enregistrement A car il appartient au mme client (le client a probablement chang de rseau ou ngoci une nouvelle adresse). Si ladresse MAC ne correspond pas lempreinte, le serveur DHCP ne procde pas la mise jour car lancien enregistrement A appartient probablement un autre client qui a le mme nom DNS. Pour plus dinformations sur le serveur DHCP de lISC, consultez http://www.isc.org/sw/ dhcp/.
Si aucune option nest convenable car vous voulez que le Contrleur de Domaine modie lui-mme ses enregistrements sans pour autant le laisser dtruire la zone, rien nest perdu. Vous pouvez en effet exploiter le merveilleux format des noms des enregistrements SRV et crer des sous-domaines dlgus portant les noms, dans notre cas, _udp.fx.movie.edu, _tcp.fx.movie.edu, _sites.fx.movie.edu et _msdcs.fx.movie.edu. Dsactivez
[12/01/08]
DNS et Bind
485
le test de validit du nom pour _msdcs.fx.movie.edu, car le Contrleur de Domaine veut ajouter un enregistrement dadresse ce nom en plus de lensemble denregistrements SRV, or le nom de cet enregistrement contiendra un _ . Laissez ensuite le Contrleur mettre jour dynamiquement ces zones, mais pas votre zone principale :
acl dc { 192.253.254.13; }; zone "_udp.fx.movie.edu" { type master; file "db._udp.fx.movie.edu"; allow-update { dc; }; }; zone "_tcp.fx.movie.edu" { type master; file "db._tcp.fx.movie.edu"; allow-update { dc; }; }; zone "_sites.fx.movie.edu" { type master; file "db._sites.fx.movie.edu"; allow-update { dc; }; }; zone "_msdcs.fx.movie.edu" { type master; file "db._msdcs.fx.movie.edu"; allow-update { dc; }; check-names ignore; };
Si votre Contrleur de Domaine fonctionne sous Windows Server 2003, vous devrez ajouter deux zones supplmentaires cette liste : DomainDNSZones.fx.movie.edu et ForestDNSZones.fx.movie.edu:
zone "DomainDNSZones.fx.movie.edu" { type master; file "db.DomainDNSZones.fx.movie.edu"; allow-update { dc; }; }; zone "ForestDNSZones.fx.movie.edu" { type master; file "db.ForestDNSZones.fx.movie.edu"; allow-update { dc; }; check-names ignore; };
Vous avez ainsi obtenu le meilleur des deux mondes : un enregistrement dynamique des services dans une zone principale protge.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
A
Format des messages et des enregistrements de ressource du DNS
Cette annexe dcrit le format des messages DNS ainsi que les diffrents types denregistrement de ressource. Ces derniers sont prsents dans leur format littral, tels quon les trouve dans un chier de zone, et dans leur format binaire, tels quils apparaissent dans les messages. Certains enregistrements nont pas t dcrits prcdemment car ils sont, soit exprimentaux, soit obsoltes. Nous avons incorpor des extraits de la RFC 1035, crite par Paul Mockapetris, qui traite du format littral des chiers matres (que nous avons appels chiers de zone dans ce livre) ou du format des messages DNS (utile ceux qui veulent analyser les paquets).
Les lignes vides et les lignes de commentaires sont autorises nimporte o dans le chier.
[12/01/08]
DNS et Bind
488
La RFC dnit deux entres de contrle : $ORIGIN et $INCLUDE. $ORIGIN est suivie dun nom de domaine ; elle rinitialise lorigine courante utilise pour les noms relatifs. $INCLUDE insre le chier dsign dans le chier courant et peut ventuellement dnir le nom dun domaine comme nouvelle origine pour le chier inclus. Une entre $INCLUDE nagit pas sur lorigine du chier courant. Les deux dernires entres reprsentent des enregistrements de ressource (RR). Si une entre RR commence par un blanc, lentre correspondante est lie implicitement au nom courant. Le contenu dun rr se prsente sous lune des formes suivantes :
[TTL] [classe] type RDATA [classe] [TTL] type RDATA
Un RR commence par un TTL et une classe optionnels, suivis dun type et dun champ RDATA dpendant de la classe et du type. La classe et le type utilisent des mnmoniques standard ; le TTL est un entier naturel. Si on omet la classe ou le TTL, les dernires valeurs explicites sont utilises. Les lments des noms sont forms de chanes de caractres spares par des points. Des caractres dchappement permettent dutiliser des caractres spciaux dans les noms. Les noms se terminant par un point sont absolus et sont vus comme complets. Les noms ne se terminant pas par un point sont relatifs ; le nom complet est issu de la concatnation du nom relatif et de lorigine dnie par $ORIGIN, par $INCLUDE ou par un paramtre dans le chier-matre. Un nom relatif est une erreur quand aucune origine nest dnie. Une chane de caractres peut se prsenter sous deux formes : soit un ensemble continu de caractres sans espaces, soit une chane encadre de guillemets. lintrieur dune chane dlimite par des guillemets, tout caractre peut apparatre, except le guillemet lui-mme. Si on veut utiliser un guillemet, il faut utiliser le caractre dchappement barre oblique inverse ( \ ). Puisque les chiers sont des chiers de texte, plusieurs dclarations spciales sont ncessaires pour dnir ou charger certaines donnes : . Pour la racine. @ Pour dnir lorigine courante. \X Un caractre autre quun chiffre. \X est utilis pour insrer un caractre spcial : \. , par exemple, place un point dans un nom. \DDD Chaque D reprsente un chiffre. \DDD est loctet correspondant au nombre dcimal DDD. Loctet correspondant est cens tre du texte, non un caractre spcial. () Les parenthses groupent les donnes de plusieurs lignes. En effet, les caractres de n de ligne ne sont pas pris en compte entre des parenthses.
[12/01/08]
DNS et Bind
489
Types
Voici une liste complte des types denregistrement de ressource. La reprsentation littrale est utilise dans les chiers matres. La reprsentation binaire est utilise dans les requtes et les rponses DNS. Les enregistrements de ressource sont dcrits aux pages 13 21 de la RFC 1035.
A (Address) : adresse
(daprs la RFC 1035, page 20) Reprsentation littrale
nom ttl classe A adresse
Exemple
localhost.movie.edu. IN A 127.0.0.1
Reprsentation binaire
Adresse - Code de type : 1 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ADDRESS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : ADDRESS Est une adresse Internet sur 32 bits.
Exemple
wh.movie.edu. IN CNAME wormhole.movie.edu.
Reprsentation binaire
CNAME - Code de type : 5
[12/01/08]
DNS et Bind
490
o : CNAME
Exemple
grizzly.movie.edu. IN HINFO VAX-11/780 UNIX
Reprsentation binaire
HINFO - Code de type : 13 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / CPU / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / OS / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : CPU Est une chane de caractres qui dfinit le type de CPU. OS Est une chane de caractres qui dfinit le type de systme dexploitation.
Exemple
ora.com. IN MX 0 ora.ora.com. IN MX 10 ruby.ora.com. IN MX 10 opal.ora.com.
Reprsentation binaire
MX - Code de type : 15 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | PREFERENCE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / EXCHANGE / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
[12/01/08]
DNS et Bind
491
EXCHANGE
Est un entier sur 16 bits qui dfinit la prfrence donne cet enregistrement sur tous ceux de mme nom. Plus la valeur est petite, plus lenregistrement est prioritaire. Dfinit un hte qui fait office dchangeur de messages pour ce nom.
Exemple
movie.edu. IN NS terminator.movie.edu.
Reprsentation binaire
NS - Code de type : 2 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / NSDNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : NSDNAME Dfinit un hte qui fait autorit sur la classe et le domaine indiqus.
Exemple
1.249.249.192.in-addr.arpa. IN PTR wormhole.movie.edu.
Reprsentation binaire
PTR - Code de type : 12 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / PTRDNAME / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : PTRDNAME Dsigne un autre endroit de lespace des noms.
[12/01/08]
DNS et Bind
492
Reprsentation littrale
nom ttl classe SOA serveur adresse_lectronique (numro_de_srie rafrachissement nouvel-essai expiration minimum)
Exemple
movie.edu. IN SOA terminator.movie.edu. al.robocop.movie.edu. ( 1 ; Numro de srie 10800 ; Rafrachissement aprs 3 heures 3600 ; Nouvel essai aprs 1 heure 604800 ; Expiration aprs 1 semaine 86400 ) ; TTL minimal d1 jour
Reprsentation binaire
SOA - Code de type : 6 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / RNAME / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | SERIAL | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | REFRESH | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | RETRY | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | EXPIRE | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | MINIMUM | | | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : MNAME Est le nom du serveur primaire de la zone. RNAME Dfinit ladresse_lectronique du responsable de la zone. SERIAL Est le numro de version, sur 32 bits non signs, de la base de donnes de la zone. Les transferts de zone conservent cette valeur. Cette valeur boucle sur ellemme et les comparaisons doivent tenir compte de larithmtique particulire utilise. REFRESH Est un entier sur 32 bits qui dfinit la priodicit de rafrachissement. RETRY Est un entier sur 32 bits qui dfinit la priodicit de nouvel essai suite un chec de rafrachissement. EXPIRE Est un entier sur 32 bits qui dfinit la dure limite avant que le serveur ne fasse plus autorit sur la zone. MINIMUM Est un entier non sign sur 32 bits qui dfinit le TTL minimal des enregistrements de ressource de la zone.
[12/01/08]
DNS et Bind
493
Exemple
cujo.movie.edu. IN TXT "Emplacement : niche de la salle des machines"
Reprsentation binaire
TXT - Code de type : 16 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / TXT-DATA / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : TXT-DATA Est form dune ou de plusieurs chanes de caractres.
Exemple
terminator.movie.edu. IN WKS 192.249.249.3 TCP ( telnet smtp ftp shell domain )
Reprsentation binaire
WKS - Code de type : 11 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ADDRESS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | PROTOCOL | | +--+--+--+--+--+--+--+--+ | | | / BIT MAP / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : ADDRESS Est une adresse Internet sur 32 bits. PROTOCOL Est un numro de protocole IP sur 8 bits. BIT MAP Est une zone de longueur variable, multiple de 8 bits.
[12/01/08]
DNS et Bind
494
Exemple
fx.movie.edu. IN IN IN IN AFSDB AFSDB AFSDB AFSDB 1 2 1 2 bladerunner.fx.movie.edu. bladerunner.fx.movie.edu. empire.fx.movie.edu. aliens.fx.movie.edu.
Reprsentation binaire
AFSDB - Code de type : 18 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | SUBTYPE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / HOSTNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : SUBTYPE Le sous-type 1 dfinit un serveur de base de donnes de cellules AFS, et le sous-type 2 dfinit un serveur de noms de cellules DCE. HOSTNAME Dfinit lhte qui est serveur pour la cellule dsigne par le nom de lenregistrement.
ISDN (Integrated Services Digital Network address) : adresse RNIS (Rseau Numrique Intgration de Services) (exprimental)
Reprsentation littrale
nom ttl classe ISDN adresse_RNIS sa
Exemple
delay.hp.com. hep.hp.com. IN ISDN 141555514539488 IN ISDN 141555514539488 004
Reprsentation binaire
ISDN - Code de type : 20 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / ISDN ADDRESS / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / SUBADDRESS / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
[12/01/08]
DNS et Bind
495
Dfinit ladresse RNIS et, optionnellement, le DDI Direct Dial In). Dfinit une sous-adresse optionnelle.
Exemple
; Lorigine actuelle est fx.movie.edu @ IN RP ajs.fx.movie.edu. ajs.fx.movie.edu. bladerunner IN RP root.fx.movie.edu. hotline.fx.movie.edu. IN RP richard.fx.movie.edu. rb.fx.movie.edu. ajs IN TXT "Arty Segue, (415) 555-3610" hotline IN TXT "Movie U. Network Hotline, (415) 555-4111" rb IN TXT "Richard Boisclair, (415) 555-9612"
Reprsentation binaire
RP - Code de type : 17 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MAILBOX / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / TXTDNAME / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : MAILBOX Dfinit ladresse_lectronique du responsable. TXTDNAME Dfinit un enregistrement TXT associ. On peut ensuite rechercher lenregistrement TXT txtdname.
Exemple
sh.prime.com. IN RT 2 Relay.Prime.COM. IN RT 10 NET.Prime.COM.
Reprsentation binaire
RT - Code de type : 21 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | PREFERENCE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / INTERMEDIATE / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
[12/01/08]
DNS et Bind
496
o : PREFERENCE
EXCHANGE
Est un entier sur 16 bits qui dfinit la prfrence donne cet enregistrement sur tous ceux de mme nom. Plus la valeur est petite, plus lenregistrement est prioritaire. Dfinit un hte intermdiaire dans le chemin pour atteindre nom.
Exemple
relay.pink.com. IN X25 31105060845
Reprsentation binaire
X25 - Code de type : 19 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / PSDN ADDRESS / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : PSDN ADRESSE Dfinit une adresse PSDN (Public Switched Data Network, rseau public commutation de donnes) dans le plan de numrotation X.121.
Exemple
ab.net2.it. IN PX 10 ab.net2.it. O-ab.PRMD-net2.ADMDb.C-it.
Reprsentation binaire
PX - Code de type : 26 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | PREFERENCE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MAP822 / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / MAPX400 / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
[12/01/08]
DNS et Bind
497
MAP822 MAPX400
Est un entier sur 16 bits qui dfinit la prfrence donne cet enregistrement sur tous ceux de mme nom. Plus la valeur est petite, plus lenregistrement est prioritaire. Est un nom contenant rfc822-domain, la partie RFC 822 de la correspondance dfinie par la RFC 1327. Est un nom contenant la valeur de x400-in-domain-syntax, drive de la partie X.400 de la correspondance au format dfini par la RFC 1327.
Exemple
ipv6-host IN AAAA 4321:0:1:2:3:4:567:89ab
Reprsentation binaire
AAAA - Code de type : 28 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ADDRESS | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : ADDRESS Est une adresse IPv6 sur 128 bits.
Exemple
_http._tcp.www.movie.edu. IN SRV 0 2 80 www.movie.edu.
Reprsentation binaire
SRV - Code de type : 33 La RFC ne contient pas de diagramme de la reprsentation binaire. La priorit, le poids et le port sont des entiers nons signs sur 16 bits. La cible est un nom DNS.
[12/01/08]
DNS et Bind
498
Exemple
gatech.edu IN NAPTR 100 50 "s" "http+I2L+I2C+I2R" "" _http._tcp.gatech.edu.
Reprsentation binaire
SRV - Code de type : 35 +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | ORDER | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | PREFERENCE | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / FLAGS / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / SERVICES / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / REGEXP / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ / REPLACEMENT / / / +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ o : ORDER Est un entier non sign sur 16 bits. Il dfinit lordre dans lequel les enregistrements NAPTR doivent tre traits afin que les rgles senchanent correctement. PREFERENCE Est un entier non sign sur 16 bits. Il dfinit lordre dans lequel des enregistrements NAPTR dordre quivalent devraient tre traits, les faibles valeurs tant prendre en premier. FLAGS Est une chane de caractres contenant diffrents drapeaux. SERVICES Est une chane de caractres contenant des identifiants de protocole et de service. REGEXP Est une chane de caractres contenant une expression rgulire. REPLACEMENT Est un noms DNS qui dfinit la nouvelle valeur dans le cas o lexpression rgulire est une simple opration de substitution.
Classes
(daprs la RFC 1035, page 13) Le champ CLASS apparat dans les enregistrements de ressource. La RFC 1035 dnit les mnmoniques et valeurs suivants :
[12/01/08]
DNS et Bind
Messages DNS
IN 1 : lInternet
499
CS 2 : la classe CSNET (obsolte ; uniquement utilise pour des exemples dans des RFC obsoltes) CH 3 : la classe CHAOS HS 4 : la classe Hesiod
Messages DNS
An dcrire des programmes danalyse de messages DNS, il est ncessaire de comprendre le format des messages. Les requtes et les rponses DNS sont souvent contenues dans des datagrammes UDP qui contiennent des messages complets. Si la requte et la rponse sont envoyes via TCP elles sont prxes par une valeur de deux , octets indiquant leur longueur, ces deux octets exclus. Les sections qui suivent dtaillent le format et le contenu des messages.
question au serveur de noms enregistrements rpondant la question enregistrements faisant autorit enregistrements complmentaires
La section den-tte existe obligatoirement. Un en-tte inclut des champs qui prcisent quelles autres sections sont prsentes ; il prcise aussi si le message est une requte ou une rponse, une requte standard ou une requte spciale, etc. Le nom des sections aprs len-tte est driv de leur utilisation dans les requtes standard. Les champs de la section question dcrivent une question un serveur de noms. Ces champs contiennent : le type de requte (QTYPE), la classe de requte (QCLASS) et le nom recherch (QNAME). Les trois dernires sections ont le mme format : une liste denregistrements de ressource, ventuellement vide. La section rponse contient les enregistrements qui rpondent la question, la section autorit contient des enregistrements dsignant des serveurs de noms faisant autorit et la section complments contient des enregistrements relatifs la requte, mais qui ne rpondent pas strictement la question.
[12/01/08]
DNS et Bind
500
QR OPCODE
AA
TC
RD
RA Z
[12/01/08]
DNS et Bind
Messages DNS
RCODE (Response CODE). Ce champ de 4 bits est positionn dans les rponses. Les valeurs possibles sont : 0 Pas derreur. 1 Erreur de format. Le serveur a t incapable dinterprter la requte. 2 Panne de serveur. Le serveur a t incapable de traiter la requte, en raison dun problme de service de noms. 3 Erreur de nom. Significatif seulement avec les rponses faisant autorit, ce code signifie que le nom utilis dans la requte nexiste pas. 4 Non mis en uvre. Le serveur naccepte pas le type de requte utilis. 5 Le serveur refuse lopration demande. Un serveur, par exemple, peut refuser une opration un demandeur spcifique, ou peut refuser une opration (transfert de zone) sur des donnes spcifiques. 6-15 Champ rserv pour une extension future. Entier non sign sur 16 bits, qui spcifie le nombre dentres dans la section des questions. Entier non sign sur 16 bits, qui spcifie le nombre denregistrements dans la section des rponses. Entier non sign sur 16 bits, qui spcifie le nombre denregistrements NS dans la section autorit des enregistrements faisant autorit. Entier non sign sur 16 bits, qui spcifie le nombre denregistrements dans la section complmentaire.
501
ARCOUNT
[12/01/08]
DNS et Bind
502
QTYPE
QCLASS
Valeurs de QCLASS
(daprs la RFC 1035, page 13) Le champ QCLASS apparat dans la section de la question dune requte. Les valeurs de QCLASS sont un sur-ensemble des valeurs de CLASS ; chaque CLASS est donc une valeur acceptable de QCLASS. La valeur suivante de QCLASS est galement dnie : * 255 : toute classe
Valeurs de QTYPE
(daprs la RFC 1035, pages 1213) Le champ QTYPE apparat dans la section de la question dune requte. Les valeurs de QTYPE sont un sur-ensemble des valeurs de TYPE ; chaque TYPE est donc une valeur acceptable de QTYPE. Les valeurs suivantes de QTYPE sont galement dnies : AXFR 252 : transfert dune zone complte MAILB 253 : enregistrements relatifs un courriel (MB, MG ou MR) MAILA 254 : enregistrements dagent de messagerie (obsolte, voir MX) * 255 : tout enregistrement
[12/01/08]
DNS et Bind
Messages DNS
503
[12/01/08]
DNS et Bind
504
Dans le diagramme, lorsquun octet reprsente une valeur numrique, le bit le plus gauche, tiquet 0, est le bit de plus fort poids (le plus signicatif). Le diagramme suivant, par exemple, reprsente la valeur dcimale 170 :
0 1 2 3 4 5 6 7 +-+-+-+-+-+-+-+-+ |1 0 1 0 1 0 1 0| +-+-+-+-+-+-+-+-+
De la mme manire, lorsquun groupe doctets reprsente une valeur numrique, le bit le plus gauche de tout le champ est le bit le plus signicatif. Cest le bit qui est transmis en premier.
Chane de caractres
(daprs la RFC 1035, page 13) Une chane de caractres est forme dun premier octet dnissant sa longueur, suivi de ce nombre de caractres. Une chane de caractres est traite comme une information binaire dont la longueur peut atteindre 256 octets, y compris le premier.
[12/01/08]
DNS et Bind
505
Nom
(daprs la RFC 1035, page 10) Les noms dans les messages sont reprsents par des squences de termes. Chaque terme est une suite doctets dont le premier dnit le nombre doctets restant dans le terme. Puisque chaque nom se termine par le terme nul pour reprsenter la racine, un nom se termine par un octet zro, ce qui dnit un terme de longueur nulle. Les deux premiers bits de chaque octet sont zro dans le cas gnral ; les six bits restants limitent 63 octets la longueur dun terme.
Compression de message
(daprs la RFC 1035, page 30) Le systme utilise un schma de compression qui limine les rptitions de noms de domaine dans un message, an de rduire la taille des messages. Avec ce schma, un nom de domaine complet ou une liste de termes la n dun nom de domaine est remplac par un pointeur vers la prcdente occurrence du mme nom. Un pointeur prend la forme dune squence de deux octets :
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ | 1 1| OFFSET | +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
Les deux premiers bits sont un, ce qui permet de diffrencier les pointeurs des termes, ces derniers ayant leur deux premiers bits 0 (les combinaisons 10 et 01 sont rserves pour des extensions ultrieures). Le champ OFFSET dnit un dcalage par rapport lorigine du message, cest--dire par rapport au premier octet du champ ID dans lentte du message. Un dcalage nul dsigne le premier octet du champ ID, etc.
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
B
Compatibilit des versions de BIND
Le tableau B-1 rsume les caractristiques de BIND en fonction des versions.
[12/01/08]
DNS et Bind
508
[12/01/08]
DNS et Bind
C
Compilation et installation de BIND dans Linux
La plupart des systmes Linux sont livrs avec une version rcente de BIND. BIND 8.4.7 est la plus rcente version de BIND 8 (au moment o nous crivons) et lISC recommande une mise jour vers BIND 9. Voici un guide pour ceux qui ne peuvent attendre la sortie de la prochaine rvision de leur Linux.
[12/01/08]
DNS et Bind
510
200 PORT command successful. 150 Opening BINARY mode data connection for bind-src.tar.gz (1600504 bytes). 226 Transfer complete. 1600504 bytes received in 23 seconds (56 Kbytes/s) ftp > quit 221 Goodbye.
Cela suppose quon dispose dune version de tar capable de traiter les chiers compresss par gzip ; si ce nest pas le cas, rcuprez en une par FTP anonyme sur ftp.gnu.org dans /gnu/tar/tar-1.15.tar. Lexcution de ces commandes cre un rpertoire src et plusieurs sous-rpertoires dont bin, include, lib et port, qui contiennent : bin Code source pour tous les binaires de BIND, dont named. include Fichiers include utiliss par le code de BIND. Il vaut mieux prendre ceux-l, plutt que ceux livrs en standard avec le systme dexploitation. lib Code source des bibliothques ncessaires pour BIND. port Informations que BIND utilise pour rgler les choix de compilation et les options de compilation, en fonction du systme dexploitation cible.
Compiler BIND
Lancez ensuite la compilation de lensemble, partir du rpertoire de plus haut niveau de la distribution de BIND. Commencez par excuter :
% make stdlinks
[12/01/08]
DNS et Bind
511
Cela supprime tout ancien chier intermdiaire qui aurait t cr lors de prcdentes tentatives de compilation et met jour les dpendances de Makele. Enn, compilez le code source en excutant :
% make all
Le code source doit se compiler sans aucune erreur. Installez ensuite les nouvelles versions de named et de named-xfer dans /usr/sbin. Il vous faut le privilge de root pour cela et utiliser :
# make install
[12/01/08]
DNS et Bind
512
la diffrence de la distribution BIND 8, cette commande cre un sous-rpertoire bind9.3.2 contenant lensemble du code (le dcompression des distributions de BIND 8 cre les chiers dans le rpertoire courant). Le sous-rpertoire bind-9.3.2 contient : bin Code source pour tous les binaires de BIND, dont named. contrib Outils issus de contributions. doc Documentation, dont lincomparable Administrator Resource Manual. lib Code source des bibliothques utilises par BIND. make Makeles
Et voil !
1.
NdR : pour connatre la liste des autres options, excutez ./configure --help.
[12/01/08]
DNS et Bind
D
Domaines de niveau suprieur
Ce tableau dresse la liste de tous les codes de pays en deux lettres et de tous les domaines suprieurs qui ne sont pas des pays. ce jour, certains pays ne gurent pas dans lespace des noms de lInternet mais ils sont peu nombreux.
Domaine AC AD AE AERO AF AG AI AL AM AN AO AQ AR ARPA AS AT AU Pays ou organisme (en anglais) Ascension Island Andorra United Arab Emirates Aeronautical Industry Afghanistan Antigua and Barbuda Anguilla Albania Armenia Netherlands Antilles Angola Antarctica Argentina ARPA Internet American Samoa Austria Australia (en franais) Ascension (le) Andorre mirats arabes unis Industrie aronautique Afghanistan Antigua et Barbuda Anguilla Albanie Armnie Antilles nerlandaises Angola Antarctique Argentine Internet ARPA Samoa amricaines Autriche Australie
[12/01/08]
DNS et Bind
514
Domaine AW AZ BA BB BD BE BF BG BH BI BIZ BJ BM BN BO BR BS BT BV BW BY BZ CA CC CD CF CG CH CI CK CL
[12/01/08]
DNS et Bind
515
Gnrique (initialement commercial) coopratives Costa Rica Cuba Cap-Vert le Christmas Chypre Rpublique tchque Allemagne Djibouti Danemark Dominique Rpublique dominicaine Algrie quateur Secteur de lducation Estonie gypte Sahara Occidental rythre Espagne thiopie Union Europenne Finlande Fidji les Malouines (les Falkland) Micronsie (tats fdrs de) les Fro
[12/01/08]
DNS et Bind
516
Domaine FR FX GA GB GD GE GF GG GH GI GL GM GN GOV GP GQ GR GS GT GU GW GY HK HM HN HR HT HU ID
[12/01/08]
DNS et Bind
517
Korea, Democratic Peoples Republic Core du Nord of Korea, Republic of Kuwait Cayman Islands Kazakhstan Lao Peoples Democratic Republic Lebanon Saint Lucia Core du Sud Kowet les Camans Kazakhstan Laos Liban Sainte-Lucie
[12/01/08]
DNS et Bind
518
[12/01/08]
DNS et Bind
519
Gnrique (initialement organismes de gestion de rseaux) le Norfolk Nigria Nicaragua Pays-Bas Norvge Npal Nauru Niou Nouvelle-Zlande Oman Gnrique (initialement organisations non commerciales) Panama Prou Polynsie Franaise Papouasie-Nouvelle-Guine Philippines Pakistan Pologne Saint-Pierre-et-Miquelon Pitcairn Porto Rico Professionnels Autorit Palestinienne Portugal
[12/01/08]
DNS et Bind
520
Domaine PW PY QA RE RO RU RW SA SB SC SD SE SG SH SI SJ SK SL SM SN SO SR ST SU SV SY SZ TC TD TF
[12/01/08]
DNS et Bind
521
Domaine TG TH TJ TK TL TM TN TO TP TR TRAVEL TT TV TW TZ UA UG UK UM US UY UZ VA VC VE VG VI VN VU WF
les mineures loignes des tats-Unis tats-Unis dAmrique Uruguay Ouzbkistan Vatican Saint-Vincent-et-Grenadines Vnzuela les Vierges britanniques les Vierges amricaines Vietnam Vanuatu Wallis-et-Futuna
[12/01/08]
DNS et Bind
522
Domaine WS YE YT YU ZA ZM ZR ZW
a.
Dans la pratique, le Royaume-Uni utilise UK pour son domaine de plus haut niveau.
[12/01/08]
DNS et Bind
E
Configuration dun serveur de noms et dun resolver BIND
Directives et structures de contrle du chier de dmarrage dun serveur de noms et dun resolver BIND
Cette annexe prsente les directives et structures de contrle dun serveur de noms et dun resolver BIND. Certaines directives et structures nexistent que dans les dernires versions et il se peut que votre serveur de noms ne les prennent pas en compte. La plupart des informations de cette annexe sont bases sur la page de manuel de named.conf, aussi pourrez-vous vous y rfrer si votre version de BIND est plus rcente que les versions 8.4.7 ou 9.3.2. La structure options a t assez tendue. la n de cette annexe, nous avons ajout la description de chaque option de conguration issue du BIND 9 Administrator Reference Manual, au cas o vous nauriez pas un accs facile cette documentation. Pour BIND 8, les informations sont disponibles dans la page de manuel de named.conf.
};
[12/01/08]
DNS et Bind
524
Trait au Chapitre 7.
include
Fonction Insertion du chier dsign lendroit o la structure include est rencontre. Syntaxe
include nom;
Trait au Chapitre 7.
logging
Fonction Conguration du comportement du mcanisme de journalisation. Syntaxe
logging { [ channel nom_canal { ( file chemin [ versions ( nombre | unlimited ) ] [ size taille ]
[12/01/08]
DNS et Bind
525
[ severity ( critical | error | warning | notice | info | debug [ niveau ] | dynamic ); ] [ print-category boolen; ] [ print-severity boolen; ] [ print-time boolen; ] }; ] [ category nom_catgorie { nom_canal; [ nom_canal; ... ] }; ] ... };
Trait au Chapitre 7.
options
Fonction Conguration des options globales. Syntaxe
options { [ allow-query { liste_d_adresses }; ] [ allow-recursion { liste_d_adresses }; ] [ allow-transfer { liste_d_adresses }; ] [ also-notify { adresse_ip; [ adresse_ip; ... ] }; ] [ auth-nxdomain boolen; ] [ blackhole { liste_d_adresses }; ] [ check-names ( master | slave | response ) ( warn | fail | ignore ); ] [ cleaning-interval frquence; ] [ coresize taille; ] [ datasize taille; ] [ deallocate-on-exit boolen; ] [ dialup boolen; ] [ directory chemin; ] [ dump-file chemin; ] [ edns-udp-size nombre; ] [ fake-iquery boolen; ] [ fetch-glue boolen; ] [ files taille; ] [ forward ( only | first ); ] [ forwarders { [ adresse_ip ; [ adresse_ip ; ... ] ] }; ] [ has-old-clients boolen; ] [ heartbeat-interval nombre; ]
[12/01/08]
DNS et Bind
526
[ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ };
server
Fonction Dnition des caractristiques associes un serveur de noms distant.
[12/01/08]
DNS et Bind
527
};
zone
Fonction Conguration des zones gres par le serveur de noms. Syntaxe
zone "nom_du_domaine" [ ( in | hs | hesiod | chaos ) ] { type master; file chemin; [ allow-query { liste_d_adresses }; ] [ allow-transfer { liste_d_adresses }; ] [ allow-update { liste_d_adresses }; ] [ also-notify { adresse_ip; [ adresse_ip; ... ] [ check-names ( warn | fail | ignore ); ] [ dialup boolen | notify; ] [ forward ( only | first ); ] [ forwarders { [ adresse_ip; [ adresse_ip; ... ] ] }; ] [ notify boolen; ] [ pubkey drapeaux id_protocole id_algorithme cl_publique; ] }; zone "domain_name" [ ( in | hs | hesiod | chaos ) ] { type (slave | stub); masters [ port port_ip ] { adresse_ip; [ adresse_ip; ... ] };
[12/01/08]
DNS et Bind
528
[ [ [ [ [ [ [ [ [ [ [ [ [ [ };
zone "domain_name" [ ( in | hs | hesiod | chaos ) ] { type forward; [ forward ( only | first ); ] [ forwarders { [ adresse_ip ; [ adresse_ip ; ... ] ] }; ] [ check-names ( warn | fail | ignore ); ] }; zone "." [ ( in | hs | hesiod | chaos ) ] { type hint; file chemin; [ check-names ( warn | fail | ignore ); ] };
acl
Fonction Dnition dune liste dadresses IP utilisable, entre autres, pour le contrle daccs.
[12/01/08]
DNS et Bind
529
controls
Fonction Conguration dun canal utilis par rndc pour piloter un serveur de noms. Syntaxe
controls { inet ( adresse_ipv4 | adresse_ipv6 | * ) [ port ( entier | * ) ] allow { lment_de_correspondance; ... } [ keys { cl; ... } ]; unix unsupported; // non mis en uvre };
Trait au Chapitre 7.
include
Fonction Insertion du chier dsign l o la structure include est rencontre. Syntaxe
include chemin;
Trait au Chapitre 7.
key
Fonction Dnition dune cl utilisable dans une structure server ou dans une liste dadresses pour associer une cl TSIG un serveur particulier. Syntaxe
key nom { algorithm id_algorithme; secret chane_secrte; };
[12/01/08]
DNS et Bind
530
logging
Fonction Conguration du comportement du mcanisme de journalisation. Syntaxe
logging { channel canal { file chemin [ versions ( version | unlimited ) ] [ size taille ]; syslog fonction; null; stderr; severity niveau; print-time boolen; print-severity boolen; print-category boolen; }; category catgorie { canal; ... }; };
Trait au Chapitre 7.
lwres
Fonction Conguration du dmon de rsolution lger. Syntaxe
lwres { listen-on [ port entier ] { ( adresse_ipv4 | adresse_ipv6 ) [ port port ]; ... }; view chane classe_optionnelle; search { chane; ... }; ndots entier; };
masters
Fonction Dnition du matre dune zone. Vous pouvez le dnir, soit directement dans toutes les structures zone, soit en un seul point ( laide de cette structure) en donnant un nom la liste et en y faisant rfrence dans les structures zone.
[12/01/08]
DNS et Bind
531
options
Fonction Conguration des options globales. Syntaxe
options { avoid-v4-udp-ports { port; ... }; avoid-v6-udp-ports { port; ... }; blackhole { correspondance_d_adresse; ... }; coresize taille; datasize taille; directory chane_encadre_de_guillemets; dump-file chane_encadre_de_guillemets; files taille; heartbeat-interval entier; host-statistics boolen; // non mis uvre host-statistics-max nombre; // non mis uvre hostname ( hte_encadr_de_guillemets | none ); interface-interval entier; listen-on [ port entier ] { correspondance_d_adresse; ... }; listen-on-v6 [ port entier ] { correspondance_d_adresse; ... }; match-mapped-addresses boolen; memstatistics-file chane_encadre_de_guillemets; pid-file ( chane_encadre_de_guillemets | none ); port entier; querylog boolen; recursing-file chane_encadre_de_guillemets; random-device chane_encadre_de_guillemets; recursive-clients entier; serial-query-rate entier; server-id ( chane_encadre_de_guillemets | none ); stacksize taille; statistics-file chane_encadre_de_guillemets; statistics-interval entier; // non encore mis en uvre tcp-clients entier; tcp-listen-queue entier; tkey-dhkey chane_encadre_de_guillemets entier; tkey-gssapi-credential chane_encadre_de_guillemets; tkey-domain chane_encadre_de_guillemets; transfers-per-ns entier; transfers-in entier; transfers-out entier;
[12/01/08]
DNS et Bind
532
[12/01/08]
DNS et Bind
533
[12/01/08]
DNS et Bind
534
server
Fonction Dnition des caractristiques associes un serveur de noms distant. Syntaxe
server ( adresse_ipv4 | adresse_ipv6 ) { bogus boolen; edns boolen; provide-ixfr boolen; request-ixfr boolen; keys cl_serveur; transfers entier; transfer-format ( many-answers | one-answer ); transfer-source ( adresse_ipv4 | * ) [ port ( entier | * ) ]; transfer-source-v6 ( adresse_ipv6 | * ) [ port ( entier | * ) ]; support-ixfr boolen; // obsolte };
trusted-keys
Fonction Conguration des cls publiques de scurit utilises dans DNSSEC. Syntaxe
trusted-keys {
nom drapeaux protocole algorithme cl; ...
};
view
Fonction Cration et conguration dune vue. Syntaxe
view chane classe_optionnelle { match-clients { liste_d_adresses; ... }; match-destinations { liste_d_adresses; ... }; match-recursive-only boolen; key chane {
[12/01/08]
DNS et Bind
535
}; allow-recursion { liste_d_adresses; ... }; sortlist { liste_d_adresses; ... }; topology { liste_d_adresses; ... }; // non mis en uvre auth-nxdomain boolen; // valeur par dfaut modifie minimal-responses boolen; recursion boolen; rrset-order { [ class chane ] [ type chane ] [ name chane_encadre_de_guillemets ] string chane; ... }; provide-ixfr boolen; request-ixfr boolen; rfc2308-type1 boolen; // non encore mis en uvre additional-from-auth boolen; additional-from-cache boolen; query-source source_requte_ipv4; query-source-v6 source_requte_ipv6; cleaning-interval entier; min-roots entier; // non mis en uvre lame-ttl entier; max-ncache-ttl entier; max-cache-ttl entier; transfer-format ( many-answers | one-answer ); max-cache-size taille; check-names ( master | slave | response ) ( fail | warn | ignore ); cache-file chane_encadre_de_guillemets; suppress-initial-notify boolen; // non encore mis en uvre preferred-glue chane; dual-stack-servers [ port entier ] { ( chane_encadre_de_guillemets [port entier] | adresse_ipv4 [port entier] | adresse_ipv6 [port entier] ); ... };
[12/01/08]
DNS et Bind
536
[12/01/08]
DNS et Bind
537
zone
Fonction Conguration des zones gres par le serveur. Syntaxe
zone chane classe_optionnelle { type ( master | slave | stub | hint | forward | delegation-only ); file chane_encadre_de_guillemets; masters [ port entier ] { ( masters | adresse_ipv4 [port entier] | adresse_ipv6 [ port entier ] ) [ key chane ]; ... }; database chane; delegation-only boolen; check-names ( fail | warn | ignore ); dialup type_appel; ixfr-from-differences boolen; allow-query { liste_d_adresses; ... }; allow-transfer { liste_d_adresses; ... }; allow-update { liste_d_adresses; ... }; allow-update-forwarding { liste_d_adresses; ... }; update-policy { ( grant | deny ) chane ( name | subdomain | wildcard | self ) chane liste_de_types_d_enregistrements; ... }; notify type_de_notification; notify-source ( adresse_ipv4 | * ) [ port ( entier | * ) ]; notify-source-v6 ( adresse_ipv6 | * ) [ port ( entier | * ) ]; also-notify [ port entier ] { ( adresse_ipv4 | adresse_ipv6 ) [ port entier ]; ... }; allow-notify { liste_d_adresses; ... }; forward ( first | only ); forwarders [ port entier ] {
[12/01/08]
DNS et Bind
538
ixfr-base chane_encadre_de_guillemets; // obsolte ixfr-tmp-file chane_encadre_de_guillemets; // obsolte maintain-ixfr-base boolen; // obsolte max-ixfr-log-size taille; // obsolte pubkey entier entier entier chane_encadre_de_guillemets; // obsolte };
; et #
Fonction Commentaire dans le chier de conguration du resolver.
[12/01/08]
DNS et Bind
539
ou :
# commentaire au format libre
Exemple
# Domaines parent ajouts la liste de recherche, # pour compatibilit avec 4.8.3.
Trait au Chapitre 6.
domain
Fonction Dnition du domaine local pour le resolver. Syntaxe
domain nom_du_domaine
Exemple
domain corp.hp.com
Trait au Chapitre 6.
nameserver
Fonction Dnition dun serveur interroger. Syntaxe
nameserver adresse_IP
Exemple
nameserver 15.255.152.4
Trait au Chapitre 6.
Exemple
options attempts:2
Trait au Chapitre 6.
[12/01/08]
DNS et Bind
540
options debug
Fonction Activation du dbogage pour un resolver. Syntaxe
options debug
Exemple
options debug
Trait au Chapitre 6.
options ndots
Fonction Dnition du nombre de points quun nom doit avoir pour que le resolver le recherche litralement avant application de la liste de recherche. Syntaxe
options ndots:nombre_de_points
Exemple
options ndots:1
Trait au Chapitre 6.
Exemple
options no-check-names
Trait au Chapitre 6.
[12/01/08]
DNS et Bind
541
Trait au Chapitre 6.
Exemple
options rotate
Trait au Chapitre 6.
search
Fonction Dnition du domaine local et de la liste de recherche pour le resolver. Syntaxe
search nom_du_domaine_local nom_du_domaine_suivant ... ... nom_du_dernier_domaine
Exemple
search corp.hp.com pa.itc.hp.com hp.com
Trait au Chapitre 6.
sortlist
Fonction Dnition des adresses de rseau que le resolver doit privilgier. Syntaxe
sortlist liste_de_rseaux
Exemple
sortlist 128.32.4.0/255.255.255.0 15.0.0.0
Trait au Chapitre 6.
[12/01/08]
DNS et Bind
542
Cette section prsente chaque possibilit. Ce texte est issu du document BIND 9 Administrator Reference Manual de Nominum. Pour BIND 8, recherchez les informations la page de documentation de named.conf.
Dnition et utilisation
La structure options dnit les rglages globaux de BIND. Cette structure ne peut apparatre quune fois dans le chier de conguration. En labsence de la structure options, BIND considre que chaque option est initialise sa valeur par dfaut. directory Rpertoire de travail du serveur. Tout chemin non absolu apparaissant dans le chier de conguration est relatif ce rpertoire. Cest la destination par dfaut pour la plupart des chiers de sortie (tels que named.run). Si aucun rpertoire nest dni, le rpertoire de travail par dfaut est . , cest--dire celui dans lequel le serveur a t dmarr. Le rpertoire dni doit tre un chemin absolu. key-directory Rpertoire dans lequel trouver les cls publique et prive utilisables lors des mises jour dynamiques scurises de zone, sil est diffrent du rpertoire de travail courant. Le chemin indiqu doit tre absolu. named-xfer Option obsolte. Dans BIND 8, elle dnissait le chemin du programme namedxfer. Dans BIND 9, aucun programme spar named-xfer nest ncessaire ; la fonction de transfert est intgre dans le serveur de noms. tkey-domain Nom de domaine ajout aux noms de toutes les cls partages gnres avec TKEY. Lorsquun client demande un change TKEY, il peut ventuellement prciser le nom de la cl. Dans ce cas, le nom de la cl partage sera partie dnie par le client + domaine tkey . Sinon, le nom de la cl partage sera une suite alatoire de nombres hexadcimaux + domaine tkey . Le nom de domaine devrait tre celui du serveur de noms. tkey-dhkey Cl Dife-Hellman utilise par le serveur pour gnrer les cls partages avec les clients fonctionnant en mode Dife-Hellman pour TKEY. Le serveur doit pouvoir charger les cls publique et prive partir de chiers situs dans son rpertoire de travail. Le nom de la cl devrait tre le nom du serveur.
[12/01/08]
DNS et Bind
543
dump-file Fichier dans lequel le serveur crit le contenu de sa base de donnes (dump) lors de lutilisation de rndc dumpdb. Le chier par dfaut est named_dump.db. memstatistics-file Fichier dans lequel le serveur crit des statistiques dutilisation de la mmoire. Le chier par dfaut est named.memstats. pid-file Fichier dans lequel le serveur crit son numro de processus. Le chier par dfaut est /var/run/named.pid. Ce chier sert aux programmes qui envoient des signaux au serveur de noms en cours dexcution. Si pid-le a pour valeur none, le serveur nutilise pas de chier PID : aucun chier nest crit et tout chier existant est supprim. Notons que none est un mot-cl, pas un nom de chier, aussi nest-il pas encadr de guillemets. statistics-file Fichier dans lequel le serveur ajoute des statistiques lors de lutilisation de rndc stats. Le chier par dfaut a pour nom named.stats et se trouve dans le rpertoire courant du serveur. port Port UDP /TCP utilis par le serveur pour recevoir et envoyer des messages DNS. Le port 53 est le port par dfaut. Cette option est spcialement destine au test de serveur, un serveur utilisant un autre port ne pouvant pas communiquer avec le DNS global. random-device Origine de lentropie utiliser par le serveur. Cette entropie est principalement ncessaire pour les oprations DNSSEC, telles que les transactions TKEY et la mise jour dynamique de zones signes. Cette option dnit le priphrique (ou le chier) partir duquel lire lentropie. Si cest un chier, les oprations ncessitant une entropie choueront lorsque le contenu du chier aura t puis. Par dfaut, random-device a pour valeur /dev/random (ou tout quivalent) lorsquelle existe et rien sinon. Loption random-device ne sert quau dmarrage du serveur et nest plus consulte lors des rechargement ultrieurs. preferred-glue Sil est dni, type list (A ou AAAA) plac en premier dans la section des enregistrements complmentaires dune rponse. Par dfaut, il ny a aucune prfrence de type (NONE). root-delegation-only Gestion des proprits de dlgation dans les TLD et la zone racine laide dune liste dexclusion optionnelle2.
2.
NdT : si loption root-delegation-only est valide, seules des rponses de dlgation venant des TLD et de la racine seront prises en compte ; les autres seront ignores.
[12/01/08]
DNS et Bind
544
Notons que certains TLD, tels que de, lv, us ou museum ne pratiquent pas que la dlgation.
options { root-delegation-only exclude { "de"; "lv"; "us"; "museum"; }; };
disable-algorithms Invalidation des algorithmes spcis, dans DNSSEC, pour le nom DNS indiqu. Plusieurs structures disable-algorithms sont possibles. Dans ce cas, seule la plus spcique sera applique. dnssec-lookaside Mthode alternative pour valider les enregistrements DNSSEC la racine dune zone. Lorsquun enregistrement DNSKEY apparat au plus profond dun domaine et que la cl DNSSEC de ce domaine nest pas valide par la mthode normalise, un nouveau point de conance est ajout au nom de la cl ; un enregistrement DLV est alors recherch pour voir sil peut valider la cl. Si lenregistrement DLV valide lenregistrement DNSKEY (de la mme manire que le ferait un enregistrement DS), le RRSet DNSKEY est suppos valide. dnssec-must-be-secure Hirarchies qui doivent ou peuvent tre sres (signes et valides). Si le paramtre a pour valeur yes, named nacceptera que les rponses certies. Sil a pour valeur no, la validation normale dnssec est applique, permettant ainsi lacceptation de rponses non valides par DNSSEC. Le domaine spci doit tre certi par une cl ou loption dnssec-lookaside doit tre active.
Options boolennes
auth-nxdomain Si le paramtre a pour valeur yes, le bit AA est toujours valid dans les rponses NXDOMAIN, mme si le serveur ne fait pas effectivement autorit. La valeur par dfaut est no ; elle a t modie depuis BIND 8. Si vous utilisez des logiciels DNS trs anciens, vous devrez peut-tre valider cette option. deallocate-on-exit Dans BIND 8, validation de la recherche des fuites de mmoire lors de larrt du serveur. BIND 9 ne tient pas compte de cette option et effectue toujours les tests. dialup Si cette option a pour valeur yes, le serveur traite toutes les zones comme si elles effectuaient les transferts travers une liaison commute la demande, connecte en raison du trac provenant de ce serveur. Elle produit diffrents effets selon le type de zone et provoque la concentration des oprations de maintenance de manire ce quelles se passent dans un intervalle de temps court, la frquence dnie par heartbeat-interval et, avec un peu de chance, durant un seul appel. Elle rduit aussi le trac habituel de gestion de zone. Sa valeur par dfaut est no.
[12/01/08]
DNS et Bind
545
Loption dialup peut galement tre dnie dans une structure view ou une structure zone. Dans ce cas, le rglage est prpondrant sur une option dialup globale. Par dfaut, si le serveur est le matre, il envoie une requte NOTIFY tous les esclaves. Cette action dclenche le test du numro de srie par lesclave, sil est capable de prendre en compte NOTIFY, lui permettant ainsi de vrier la zone pendant que la connexion est active. La liste des serveurs auxquels envoyer un message NOTIFY peut tre gre par les options notify et also-notify. Si le serveur est un esclave ou source, il ne pratique pas les vrications priodiques habituelles mais attend la fois lexpiration du heartbeat-interval et la rception de message NOTIFY. Un contrle encore plus n peut tre appliqu laide des options notify (le serveur nenverra que des messages NOTIFY), notify-passive (le serveur enverra des messages NOTIFY et ne gnrera pas de requtes priodiques de rafrachissement), refresh (le serveur neffectuera pas de rafrachissement priodique et attendra lexpiration de heartbeat-interval) et passive (le serveur invalide uniquement le processus normal de rafrachissement).
Mode dappel Rafrachissement normal Oui Non Oui Non Non Non Rafrachissement sur hearbeat Non Oui Non Oui Non Non Notication sur heartbeat Non Oui Oui Non Non Oui
Notons que le processus NOTIFY normal nest pas affect par loption dialup. fake-iquery Dans BIND 8, la validation de cette option provoque la simulation du type de requte IQUERY, dsormais obsolte. BIND 9 ne simule jamais IQUERY. fetch-glue Option obsolte. Si fetch-glue a pour valeur yes, BIND 8 tente de complter les enregistrements de ressource sur lesquels il ne fait pas autorit lorsquil construit la section des enregistrements complmentaires dans une rponse. Ce comportement est dsormais considr comme mauvais et BIND 9 ne le pratique jamais. flush-zones-on-shutdown Si loption est valide, purge de toutes les critures en attente lorsque le serveur sarrte suite la rception dun signal SIGTERM. La valeur par dfaut est no.
[12/01/08]
DNS et Bind
546
has-old-clients Option mal mise en uvre dans BIND 8 et non prise en compte dans BIND 9. Pour obtenir le mme effet que has-old-clients yes, utilisez plutt conjointement les deux rglages auth-nxdomain yes et rfc2308-type1 no. host-statistics Avec cette option, BIND 8 conserve des statistiques pour chaque hte avec lequel il a des changes. Elle nest pas mise en uvre dans BIND 9. maintain-ixfr-base Option obsolte. Elle tait utilise dans BIND 8 pour indiquer sil fallait conserver un journal de transaction pour les transferts de zone en mode incrmental. BIND 9 maintient systmatiquement un tel journal lorsque cela est possible. Loption provide-ixfr no permet de mettre hors service le transfert incrmental de zone sortant. minimal-responses Lorsque cette option a pour valeur yes, le serveur najoute des enregistrements la section des enregistrements faisant autorit et la section des enregistrements complmentaires que sur demande (par exemple des informations de dlgation ou des rponses ngatives) lorsquil construit une rponse. Cette option peut permettre damliorer les performances. Sa valeur par dfaut est no. multiple-cnames Avec cette option, BIND 8 autorise un nom disposer de plusieurs CNAME, ce qui est une violation des normes du DNS. BIND 9.2 applique strictement les rgles concernant les CNAME, aussi bien dans les chiers matres que pour les mises jour dynamiques. notify Si cette option a pour valeur yes (sa valeur par dfaut), des messages DNS NOTIFY sont envoys lors de la modication dune zone sur laquelle le serveur fait autorit. Les messages sont envoys tous les serveurs apparaissant dans les enregistrements NS de la zone (sauf au serveur-matre dsign par le champ MNAME du SOA) ainsi qu ceux gurant dans loption also-notify. Si elle a pour valeur explicit, les notications ne sont envoyes quaux serveurs dsigns par loption notify. Cette option ne doit tre invalide que si elle provoque lcroulements de serveurs-esclaves. recursion Si cette option a pour valeur yes et quune requte rcursive est reue, le serveur tente de rpondre compltement la question. Si elle a pour valeur no et que le serveur ne connat pas dj la rponse, ce dernier renvoie une rponse contenant une rfrence. La valeur par dfaut est yes. Notons que le rglage de recursion no nempche pas les clients dobtenir des informations provenant de la mmoire cache du serveur ; il vite uniquement que des nouvelles informations soient mises en mmoire cache suite des requtes de clients. La mise en mmoire cache continue se produire lors des oprations internes du serveur, telles que des recherches dadresse lors de NOTIFY. Voyez aussi loption fetch-glue.
[12/01/08]
DNS et Bind
547
rfc2308-type1 Si cette option a pour valeur yes, le serveur renvoie aussi les enregistrements NS et SOA lors de rponses ngatives. La valeur par dfaut est no. Cette option nest pas encore mise en uvre dans BIND 9. use-id-pool Option obsolte. BIND 9 alloue toujours les identiants de requte partir dun pool. zone-statistics Si cette option a pour valeur yes, le serveur collecte des statistiques concernant toutes les zones (sauf si les statistiques sont dvalides pour une zone spcique laide de loption zone-statistics no dans une structure zone). Ces statistiques peuvent tre consultes laide de la commande rndc stats qui crit les statistiques dans le chier dni par loption statistics-le. use-ixfr Option obsolte. Si vous avez besoin dinvalider IXFR pour un ou plusieurs serveurs spciques, voyez loption provide-ixfr. provide-ixfr Indique au serveur local agissant comme matre de rpondre par un transfert incrmental de zone lorsque que le serveur distant spci (un esclave) le demande. Si elle a pour valeur yes, le transfert est incrmental ds que cela est possible. Si elle a pour valeur no, aucun transfert vers le serveur distant nest incrmental. request-ixfr Indique au serveur local agissant comme esclave de demander des transferts de zone en mode incrmental au serveur distant spci (le matre). treat-cr-as-space Indiquait BIND 8 de traiter le retour-chariot ( \r ) de la mme manire quun espace ou une tabulation, an de faciliter le chargement de chiers de zone gnrs sur un systme NT ou DOS. BIND 9 accepte la fois la forme Unix \n et la forme NT/DOS \r\n comme symbole de n de ligne. BIND 9 ne tient pas compte de cette option. additional-from-auth additional-from-cache Gestion du comportement dun serveur faisant autorit lorsquil rpond des requtes contenant des enregistrements complmentaires ou lorsquil suit des chanes de CNAME ou de DNAME. Lorsque les deux options ont pour valeur yes (valeurs par dfaut) et que le serveur rpond une requte partir dune information sur laquelle il fait autorit (cest-dire pour une zone congure sur le serveur), la section des informations complmentaires de la rponse est complte avec des donnes provenant la fois dautres zones sur lesquelles il fait autorit et de la mmoire cache. Dans certains cas, ce comportement nest pas souhaitable comme, par exemple, lorsquil peut y avoir des doutes sur la qualit des informations en cache ou lorsque le serveur est esclave de
[12/01/08]
DNS et Bind
548
zones modiables par une tierce personne. De plus, linvalidation de la recherche des informations complmentaires permettra dacclrer les oprations du serveur, uniquement au prix dune dpense supplmentaire si dautres recherches sont ncessaires pour rsoudre ce qui aurait t plac dans la section complmentaire. Par exemple, si une requte demande lenregistrement MX de foo.example.com et que lenregistrement trouv est MX 10 mail.example.net , les enregistrements dadresse (A et AAAA) de mail.example.net sont normalement fournis sils sont connus, mme sils ne sont pas dans la zone example.com. Avec ces options no, ce comportement est dvalid et le serveur ne cherche les informations complmentaires que dans la zone sur laquelle il fait autorit. Ces options sont destines une utilisation sur les serveurs authoritative-only (serveurs ne rpondant pas des requtes sur lesquelles ils ne font pas autorit et qui proviendraient de leur mmoire cache). Si cette option est no sans que recursion ne soit no, le serveur nen tient pas compte et gnre un message dalerte. Le rglage additional-from-cache no invalide en fait lutilisation du cache pour la recherche dinformations complmentaires et pour la recherche de la rponse la question. Cest le comportement normal dun serveur authoritative-only lorsque lexactitude des informations en mmoire cache est recherche. Lorsquun serveur de noms est interrog de manire non rcursive pour un nom qui nest pas dans lune des zones quil gre, il rpond normalement par une information de rfrence vers les serveurs de la racine ou vers les serveurs dune zone parente du nom recherch. Puisque linformation renvoyer est une rfrence vers le haut provenant de sa mmoire cache, le serveur ne peut pas rpondre lorsque loption additional-from-cache est no. Il rpond donc par REFUSED une telle requte. Ce comportement ne devrait pas poser de problme puisque les rfrences vers le haut ne sont pas indispensables au processus de rsolution. match-mapped-addresses Si cette option a pour valeur yes, une adresse IPv6 reprsente en IPv4 rpond tous les critres dune liste de correspondance auxquels rpond aussi cette adresse IPv4. Cette option sert parfois sur les systmes Linux dont la pile IPv6 est active. Elle sappuie sur une bizarrerie du noyau qui provoque lacceptation de connexions TCP IPv4, telles quun transfert de zone, sur une socket IPv6 utilisant la correspondance IPv4. Il en rsulte que les listes de correspondance dadresses conues pour IPv4 ne fonctionnent plus. Lutilisation de cette option pour un autre usage est dconseille. ixfr-from-differences Lorsque cette option a pour valeur yes et quun serveur-matre charge une nouvelle version partir de ses chiers de zone ou quun serveur-esclave reoit une nouvelle version de la zone au cours dun transfert non incrmental, le serveur compare la nouvelle version de la zone avec sa version prcdente et calcule les diffrences. Ces diffrences sont ensuite enregistres dans le journal de la zone, de manire ce quelles puissent tre transmises sous forme de transfert incrmental des esclaves situs plus loin dans la chane. En permettant lutilisation de transferts en mode incrmental de zone pour des zones non dynamiques, cette option prserve la bande passante mais au dtriment
[12/01/08]
DNS et Bind
549
dune plus grande consommation de ressources de calcul et de mmoire sur le matre. En particulier, si la nouvelle version est totalement diffrente de la prcdente, lensemble des diffrences est comparable en taille la combinaison des deux zones en question. Le serveur a alors temporairement besoin dallouer de la mmoire supplmentaire pour conserver la totalit de cet ensemble. multi-master Vous devriez initialiser cette option si vous avez plusieurs serveurs-matres pour une mme zone et que les enregistrements NS associs correspondent rellement des machines diffrentes. Si elle a pour valeur yes, named ne gnre pas dalerte lorsque le numro de srie sur le matre est infrieur celui dj connu de named. Sa valeur par dfaut est no. dnssec-enable Si cette option a pour valeur yes, elle indique named de prendre en charge DNSSEC. Dans le cas contraire, named se comporte comme sil ne comprenait pas DNSSEC. La valeur par dfaut est no. querylog Journalisation des requtes ds le dmarrage de named. En labsence de querylog, la journalisation dpend de la prsence de la catgorie de journalisation queries. check-names Cette option restreint le jeu de caractres et la syntaxe de certains noms DNS dans les chiers de zone et/ou dans les rponses reues du rseau. Le comportement par dfaut varie selon la situation. Une structure zone master a pour valeur par dfaut fail, alors quune structure zone slave a pour valeur warn. Pour les rponses reues du rseau, la valeur par dfaut est ignore. Les rgles dnissant les noms valides pour les domaines et le courriel sont drives des RFC 952 et 821 modies par la RFC 1123. check-names sapplique aux enregistrements A, AAAA et MX. Le teste sapplique aussi au champ des donnes spciques des enregistrements NS, SOA et MX ainsi qu celui des enregistrements PTR lorsque le nom de lenregistrement correspond la recherche inverse dun nom de machine (cest--dire lorsque le nom de lenregistrement PTR se termine par IN-ADDR.ARPA, IP6.ARPA ou IP6.INT).
Redirection
La fonction de redirection peut conduire une grande mmoire cache sur quelques serveurs et, par consquent, rduire le trac sur certains liens vers des serveurs externes. Elle peut aussi permettre que des requtes vers lextrieur russissent mme pour des serveurs nayant pas daccs direct lInternet. La redirection ne sapplique que pour les requtes correspondant des informations sur lesquelles le serveur ne fait pas autorit et qui ne sont pas dans sa mmoire cache. forward Cette option na de sens que si la liste forwarders nest pas vide. Si elle a pour valeur rst (valeur par dfaut), le serveur interroge tout dabord les redirecteurs puis, sil nobtient pas la rponse, recherche lui-mme la rponse. Si elle a pour valeur only, le serveur ne fait quinterroger les redirecteurs.
[12/01/08]
DNS et Bind
550
forwarders Dnition des adresses pour la redirection. La liste est vide par dfaut (pas de redirection). La redirection peut aussi tre congure au niveau du domaine, ce qui permet aux options globales de redirection dtre modie de diffrentes manires. En effet, on peut alors dnir des redirecteurs particuliers pour des domaines spciques, avoir des comportements forward only/rst diffrents ou ne rien rediriger du tout.
Contrle daccs
Laccs un serveur peut tre limit en fonction de ladresse du systme qui linterroge. allow-notify Htes autoriss, en plus des matres de la zone, notier ce serveur (un esclave) dune modication de zone. allow-notify peut aussi apparatre dans une structure zone et, dans ce cas, elle est prdominante sur une directive allow-notify dans la structure options. Elle na de sens que pour une zone esclave. Si elle nest pas dnie, seuls les messages NOTIFY des matres de la zone sont pris en compte. allow-query Htes autoriss poser des questions standard. Si allow-query apparat dans une structure zone, elle est prpondrante sur loption allow-query de la structure options. Si elle nest pas dnie, les requtes de tous les htes sont autorises. allow-recursion Htes autoriss demander des recherches rcursives. En labsence de cette option, toute requte rcursive est accepte. Notons que linvalidation de la rcursivit nempche pas un client dobtenir des informations en provenance de la mmoire cache du serveur. allow-update-forwarding Htes autoriss soumettre des mises jour dynamiques aux esclaves dune zone, ces requtes tant rediriges vers le matre de la zone. La valeur par dfaut est none, ce qui signie que les demandes ne sont pas rediriges. allow-update-forwarding any autorise la redirection des demandes. Toutes les autres valeurs nont pas de sens car la responsabilit du contrle devrait sappuyer sur le serveur-matre, pas sur les serveurs-esclaves.
[12/01/08]
DNS et Bind
551
Notons que la validation de cette option sur un esclave peut exposer des matres dont le contrle daccs se base sur la gestion des adresses IP . allow-v6-synthesis Option introduite pour la transition douce entre les enregistrements AAAA et A6 ainsi quentre les tiquettes qui leur sont lies. Toutefois, comme A6 a t mis de ct, cette option est actuellement vide de sens. Elle est maintenant ignore et son utilisation produit des messages dalerte. allow-transfer Htes autoriss recevoir des transferts de zone partir du serveur. allow-transfer peut tre dnie dans une structure zone et, dans ce cas, elle est prpondrante sur son apparition dans la structure options. Si elle nest pas dnie, tous les htes peuvent transfrer la zone. blackhole Liste dadresses desquelles le serveur naccepte aucune requte ou vers lesquelles il nenverra aucune requte. Aucune rponse nest envoye vers ces adresses. La valeur par dfaut est none.
Interfaces
Loption listen-on dnit les interfaces et les ports utiliss par le serveur pour rpondre aux questions. Ses paramtres sont un port optionnel et une liste dadresses. Le serveur coute toutes les interfaces spcies. Par dfaut, le port utilis est le port 53. Plusieurs structures listen-on sont possibles :
listen-on { 5.6.7.8; }; listen-on port 1234 { !1.2.3.4; 1.2/16; };
Ici, le serveur est lcoute du port 53 de ladresse IP 5.6.7.8, ainsi que du port 1234 dune adresse sur le rseau 1.2, mais pas de ladresse 1.2.3.4. En labsence de loption listen-on, le serveur coute le port 53 sur toutes les interfaces. Loption listen-on-v6 dnit les interfaces et les ports sur lesquels le serveur coute les requtes en IPv6. Avec la liste dadresses :
{ any; }
alors le serveur ne se lie pas une nouvelle socket pour chaque adresse IPv6 dinterface, linverse de ce quil ferait en IPv4, si les API IPv6 du systme dexploitation le permettent (en particulier, si le systme est conforme aux RFC 3493 et 3542). Dans la ngative, le serveur sera lcoute de toute adresse IPv6. Si limplmentation des API IPv6 est insufsante, le systme se comportera de la mme manire quen IPv4. Nous pouvons aussi dnir une liste dadresses IPv6 particulires ; dans ce cas, le serveur est lcoute sur une socket spcique par adresse, indpendamment de la prsence de lAPI adquate dans le systme. Nous pouvons dnir plusieurs options listen-on-v6 :
listen-on-v6 { any; }; listen-on-v6 port 1234 { !2001:db8::/32; any; };
[12/01/08]
DNS et Bind
552
Ces options mettent le serveur lcoute du port 53 pour toute adresse IPv6 (sur une unique socket gnrique) et du port 1024 des adresses IPv6 dont le prxe nest pas 2001:db8::/32 (sur une socket individuelle pour chaque adresse correspondante). Avec loption suivante, le serveur nest lcoute daucune adresse IPv6 :
listen-on-v6 { none; };
Adresse de requte
Si un serveur ne connat pas la rponse une question, il interroge dautres serveurs. Loption query-source dnit ladresse et le port utiliss pour ces requtes. Loption querysource-v6 est identique pour IPv6. Si address a pour valeur * ou est omise, une adresse IP gnrique (INADDR_ANY) est utilise. Si port a pour valeur * ou est omis, un port sans privilge est choisi de manire alatoire ; avoid-v4-udp-ports et avoid-v6-udp-ports empchent named de choisir certains ports. Les valeurs par dfaut sont :
query-source address * port *; query-source-v6 address * port *;
Notons que ladresse dnie dans loption query-source sert pour les requtes aussi bien en UDP quen TCP mais que le port indiqu ne concerne que les requtes UDP En effet, , . les requtes en TCP utilisent toujours un numro de port sans privilge choisi alatoirement. Voyez aussi transfer-source et notify-source.
Transferts de zone
BIND intgre des mcanismes pour faciliter les transferts de zone et grer la charge gnre sur le systme. Les options qui suivent sappliquent aux transferts de zone : also-notify Liste globale des adresses IP de serveurs de noms auxquels envoyer un message NOTIFY lorsque le serveur charge une nouvelle version de la zone, en plus des serveurs dnis dans les enregistrements NS. Elle permet de garantir que lalgorithme de diffusion dune nouvelle version de la zone converge rapidement mme sur les serveurs non ofciels. Si elle apparat dans une structure zone, elle est prpondrante sur la structure options. Lorsque quune structure zone contient une option notify no, aucun message NOTIFY nest envoy pour cette zone aux adresses IP dnies dans la structure globale also-notify. Par dfaut, la liste globale est vide. max-transfer-time-in Les transferts de zone entrants qui durent plus longtemps que la valeur dnie, en minutes, par cette option sont volontairement interrompus. La valeur par dfaut est de 120 minutes (2 heures). La valeur maximale est de 28 jours (40320 minutes). max-transfer-idle-in Les transferts de zone entrants qui nvoluent plus durant le temps indiqu, en minutes, par cette option sont volontairement interrompus. La valeur par dfaut est de 60 minutes (1 heure). La valeur maximale est de 28 jours (40320 minutes).
[12/01/08]
DNS et Bind
553
max-transfer-time-out Les transferts de zone sortants qui durent plus longtemps que la valeur dnie, en minutes, par cette option sont volontairement interrompus. La valeur par dfaut est de 120 minutes (2 heures). La valeur maximale est de 28 jours (40320 minutes). max-transfer-idle-out Les transferts de zone sortants qui nvoluent plus durant le temps indiqu, en minutes, par cette option sont volontairement interrompus. La valeur par dfaut est de 60 minutes (1 heure). La valeur maximale est de 28 jours (40320 minutes). serial-query-rate Les serveurs-esclaves interrogent priodiquement les serveurs-matres pour surveiller lvolution du numro de srie de la zone. Chaque requte utilise une partie de la bande passante du serveur-esclave. Pour rduire lutilisation de cette bande passante, BIND 9 limite la cadence dexpdition de ces requtes. La valeur de loption serial-query-rate est le nombre maximal de requtes envoyes par seconde. La valeur par dfaut est 20. serial-queries Nombre maximal de requtes concurrentes de numro de srie dans BIND 8. BIND 9 ne gre pas cette limite et ne tient pas compte de cette option, mais loption serial-query-rate lui permet de grer la cadence dexpdition des requtes. transfer-format Format des transferts de zone. Cette option sert au niveau dun serveur-matre. Le format one-answer utilise un message DNS par enregistrement de ressource transfr. Le format many-answers place autant denregistrements de ressource que possible dans un message. Ce second format est plus efcace mais il nest pris en charge que par les serveurs-esclaves relativement rcents, tels que BIND 9, BIND 8.x et des versions modies de BIND 4.9.5. La valeur par dfaut est many-answers. Lorsquelle est globale, cette option peut tre supplante au niveau dun serveur par son utilisation dans une structure server. transfers-in Nombre maximal de transferts de zone entrants pouvant se drouler simultanment. La valeur par dfaut est 10. Laugmentation de cette valeur peut acclrer la convergence des zones esclaves mais peut aussi augmenter la charge sur le systme local. transfers-out Nombre maximal de transferts de zone sortants pouvant se drouler simultanment. Lorsque le maximum est atteint, les nouvelles requtes de transfert sont refuses. La valeur par dfaut est 10. transfers-per-ns Nombre maximal de transferts de zone entrants pouvant se drouler simultanment partir dun mme serveur distant. La valeur par dfaut est 2. Laugmentation de cette valeur peut acclrer la convergence des esclaves mais peut aussi augmenter la charge sur le systme local. Lorsquelle est globale, cette option peut
[12/01/08]
DNS et Bind
554
tre supplante au niveau dun serveur par son utilisation dans une structure server. transfer-source Adresses locales lies des connexions TCP IPv4 utilises pour les transferts de zone entrants. Cette option xe aussi les adresses IPv4 dorigine et, en option, les ports UDP utiliss pour les requtes de rafrachissement et la redirection des mises jour dynamique. La valeur par dfaut est dtermine par le systme, habituellement ladresse de linterface la plus proche de la machine distante concerne. Cette adresse doit apparatre dans loption allow-transfer de la machine distante pour que la zone puisse tre transfre dans le cas o cette option est mise en uvre. Lorsquelle est globale, cette option peut tre supplante au niveau dune zone ou dune vue par son utilisation dans des structures zone ou view. transfer-source-v6 Option quivalente loption transfer-source, mais pour des transferts en IPv6. alt-transfer-source Source de secours pour le transfert en cas dchec de la source dnie dans transfersource. Loption use-alt-transfer-source doit tre valide. alt-transfer-source-v6 Source de secours pour le transfert en cas dchec de la source dnie dans transfersource-v6. Loption use-alt-transfer-source doit tre valide. use-alt-transfer-source Cette option indique si on peut utiliser la source de secours. Si des vues sont dnies, loption a pour valeur no, et yes sinon (compatibilit avec BIND 8). notify-source Adresse source locale, et ventuellement port source UDP utiliss pour envoyer des , messages NOTIFY. Sur lesclave, cette adresse doit apparatre dans la directive masters de la structure zone ou dans une directive allow-notify. Lorsquelle est globale, cette option peut tre supplante au niveau dune zone ou dune vue par son utilisation dans des structures zone ou view. notify-source-v6 Option quivalente notify-source mais pour les messages NOTIFY envoys vers des adresses IPv6.
[12/01/08]
DNS et Bind
555
[12/01/08]
DNS et Bind
556
recursive-clients Nombre maximal de recherches rcursives que le serveur peut effectuer simultanment au nom des clients. La valeur par dfaut est 1000. Comme chaque client rcursif nutilise que peu de mmoire, de lordre de 20 kilo-octets, la valeur de recursive-clients peut tre diminue sans risques sur les htes mmoire limite. tcp-clients Nombre maximal de connexions TCP que le serveur accepte simultanment. La valeur par dfaut est de 100. max-cache-size Taille maximale, en octets, de la mmoire utilise pour le cache. Lorsque la limite approche, le serveur purge prmaturment des enregistrements de sorte que la limite ne soit jamais dpasse. Sur un serveur plusieurs vues, la limite sapplique sparment au cache de chaque vue. La taille par dfaut est unlimited, ce qui signie que les enregistrements ne sont ts du cache que lors de lexpiration de leur TTL. tcp-listen-queue Profondeur de la le dattente en coute. La valeur par dfaut est de 3. Si le noyau gre le ltre dataready , cette option contrle aussi le nombre de connexions TCP en le dans lespace du noyau et qui sont en attente de nouvelles donnes, avant de les passer accept. Les valeurs infrieures 3 sont automatiquement augmentes sans avertissement.
[12/01/08]
DNS et Bind
557
statistics-interval Les statistiques du serveur de noms sont enregistres la frquence dnie par statistics-interval en minutes. La valeur par dfaut est de 60 minutes. La valeur maximale est de 28 jours (40320 minutes). Si la valeur est 0, les statistiques ne sont pas enregistres.
Topologie
Lorsquun serveur a le choix du serveur interroger, il opte pour celui qui est topologiquement le plus proche. La structure topology contient une liste dadresses dont linterprtation est spcique. Chaque lment plac au sommet de la liste se voit attribuer une distance. La distance de tous les autres lments dpend de leur position dans la liste : plus llment est prs du dbut de la liste, plus la distance qui le spare du serveur est faible. Les dclarations ngatives (celles qui sont prcdes dun point dexclamation) se voient attribuer la distance maximale. Sil ny a aucune relation entre ladresse du serveur local et une adresse de la liste, cette dernire se voit attribuer une distance plus leve que nimporte lequel des lments non ngatif de la liste mais toutefois moindre que nimporte quel lment ngatif. Voici un exemple :
topology { 10/8; !1.2.3/24; { 1.2/16; 3/8; }; };
Avec cette liste, on prfrera les serveurs du rseau 10, puis ceux du rseau 1.2.0.0 (masque 255.255.0.0) et enn du rseau 3, lexception des machines du rseau 1.2.3 (masque 255.255.255.0) qui sont les moins bien places. La topologie par dfaut est :
topology { localhost; localnets; };
La structure sortlist
La rponse une requte DNS peut se composer de multiples enregistrements de ressource (RR) formant un ensemble (RRset). Le serveur de noms envoie habituellement les RR dun RRset dans un ordre indtermin. Le resolver du client classe ces RR selon ses propres critres, cest--dire en plaant en premier ceux contenant des adresses
[12/01/08]
DNS et Bind
558
appartenant au mme rseau que lui-mme. Toutefois, tous les resolvers ne le permettent pas ; ils sont aussi parfois mal congurs. Lorsquun client utilise un serveur local, le classement peut tre pralablement excut sur le serveur en fonction de ladresse du client. Ceci ne demande que de congurer les serveurs, rien nest faire sur les clients. La structure sortlist (voici ci-dessous) reoit une liste dadresses et linterprte dune manire encore plus particulire que ne le fait la structure topology. Chaque lment du haut de la liste doit lui-mme tre une liste dadresses de un ou deux lments. Le premier (qui peut tre une adresse IP un prxe IP un nom dACL ou une nouvelle liste , , imbrique) est vri au niveau de ladresse source de la requte jusqu ce quune correspondance soit trouve. Une fois que ladresse dorigine de la requte a t mise en correspondance avec un critre de la liste, si la structure suprieure ne contient quun seul lment, le premier lment rel de la liste avoir provoqu la correspondance dtermine ladresse placer au dbut de la rponse. Si la structure est une liste de deux lments, le second dentre eux est trait comme la liste de correspondance dune structure topology. Chaque lment suprieur se voit attribuer une distance et ladresse de la rponse possdant la plus petite distance est dplace vers le dbut de la rponse. Dans lexemple qui suit, toutes les requtes reues de lune quelconque des adresses de lhte lui mme conduiront en priorit des adresses situes sur les rseaux sur lesquels se trouve lhte. Ici, les adresses prfrentielles sont situes sur le rseau 192.168.1/24 puis, indiffremment, soit sur le rseau 192.168.2/24, soit sur le rseau 192.168.3/24. Les requtes reues dun hte sur le rseau 192.168.1/24 prfrent les adresses de ce rseau celles des rseaux 192.168.2/24 ou 192.168.3/24. Les requtes reues dun hte sur le rseau 192.168.4/24 ou le rseau 192.168.5/24 prfrent exclusivement les autres adresses des rseaux directement connects.
sortlist { { localhost; { localnets; 192.168.1/24; { 192.168.2/24; 192.168.3/24; { 192.168.1/24; { 192.168.1/24; { 192.168.2/24; 192.168.3/24; { 192.168.2/24; { 192.168.2/24; { 192.168.1/24; 192.168.3/24; { 192.168.3/24; { 192.168.3/24; { 192.168.1/24; 192.168.2/24; { { 192.168.4/24; 192.168.5/24; }; }; }; // SI lhte local // ALORS dabord adapter sur // les rseaux suivants }; }; }; // SI dans la classe C 192.168.1 // ALORS utiliser .1, .2 ou .3 }; }; }; // SI dans la classe C 192.168.2 // ALORS utiliser .2, .1 ou .3 }; }; }; // SI dans la classe C 192.168.3 // ALORS utiliser .3, 1 ou .2 }; }; }; // SI .4 ou .5, prfrer ce // rseau
Lexemple qui suit montre un comportement raisonnable pour lhte local et les htes du mme rseau. Il est similaire au comportement du classement dadresses dans BIND 4.9.x. Les rponses des requtes de lhte local favoriseront nimporte lequel des rseaux directement connects. Les rponses des requtes provenant des autres htes
[12/01/08]
DNS et Bind
559
favoriseront nimporte quelles adresses des rseaux directement connects Les rponses provenant dautres rseaux ne sont pas classes :
sortlist { { localhost; localnets; }; { localnets; }; };
En labsence de prcision, les valeurs par dfaut sont ANY pour la classe, ANY pour le type et * pour le nom. Voici les valeurs possibles pour ordering : fixed Enregistrements renvoys dans lordre de leur apparition dans le chier de zone. random Enregistrements renvoys de manire alatoire. cyclic Enregistrements renvoys aprs un tourniquet. Voici un exemple :
rrset-order { class IN type A name "host.example.com" order random; order cyclic; };
L, tout enregistrement de type A dans la classe IN, et qui intgre host.example.com comme sufxe, doit toujours tre renvoy dans un ordre alatoire. Les autres enregistrements sont renvoys de manire cyclique. Si plusieurs structures rrset-order apparaissent, elles ne sont pas combines : cest la dernire qui sapplique.
La structure rrset-order nest pas encore mise en uvre dans BIND 9. BIND 9 ne supporte actuellement pas un classement x.
[12/01/08]
DNS et Bind
560
Ajustement
lame-ttl Dure de conservation dune information de serveur mal dlgu, en secondes. 0 met le cache hors service, mais ce nest pas recommand. La valeur par dfaut est 600 secondes (10 minutes). La valeur maximale est 1800 secondes (30 minutes). max-ncache-ttl Pour rduire le trac rseau et augmenter les performances, le serveur conserve les rponses ngatives. max-ncache-ttl xe la dure maximale de rtention de ces informations. La valeur par dfaut est de 10800 secondes (3 heures). max-ncache-ttl ne peut pas dpasser 7 jours et sa valeur est ramene sans avertissement ce maximum si elle est plus leve. max-cache-ttl Dure maximale de conservation des rponses normales (positives). La valeur par dfaut est de une semaine (7 jours). min-roots Nombre minimal de serveurs de la racine ncessaires pour quune requte de recherche des serveurs de la racine soit accepte. La valeur par dfaut est 2. Cette option nest pas encore mise en uvre dans BIND 9. sig-validity-interval Nombre de jours de validit de signatures DNSSEC automatiquement gnres. La valeur par dfaut est de 30 jours. La valeur maximale est de 10 ans (3660 jours). La date de dpart de validit de la signature est systmatiquement initialise une heure avant lheure courante an dviter les problmes lis aux drives dhorloge. min-refresh-time max-refresh-time min-retry-time max-retry-time Comportement du serveur lors dun rafrachissement de zone (recherche de modication de SOA) ou nouvel essai de transfert de zone. Habituellement, les valeurs utilises sont celles du SOA de la zone mais ces valeurs sont initialises par le matre, laissant peu de contrle ladministrateur de lesclave. Ces options permettent ladministrateur de xer des valeurs minimales et maximales pour la priodicit de rafrachissement ou de nouvel essai de transfert, que ce soit par zone, par vue ou globalement. Ces options sont utilisables sur un esclave ou une zone source (stub). edns-udp-size Taille du tampon UDP annonce par EDNS. La valeur peut aller de 512 4096 octets (en cas de dpassement, les valeurs sont ramenes sans avertissement dans la plage). La valeur par dfaut est de 4096 octets. Habituellement, on ne rgle ednsudp-size une valeur autre que celle par dfaut quan que les rponses UDP puissent franchir un pare-feu dfectueux qui bloquerait les paquets fragments ou les paquets plus longs que 512 octets.
[12/01/08]
DNS et Bind
561
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
Index
Symboles
$=w (classe de sendmail) 109 . (point) nud racine 4 option ndots pour resolver 103 oubli en n de nom dans un chier de zone 390 point terminal dans les noms DNS complets 137 soulignant un FQDN 97 / (barre oblique en dbut de chemin absolu) 97 :: (notation dans une adresse IPv6) 251 ACE 477 conversion Unicode 478 outils de codage 477 ACL (liste de contrle daccs ou access control list) 214 application un transfert de zone 273 une requte 272 une zone 272 base sur des adresses IP 218 globale sur chier de zone 299 mise jour dynamique 218 problme au dmarrage de nslookup 346 sur requte en ou hors de la zone dautorit du serveur 278 acl (structure) 214, 528 dans une structure view 233 actions 112 Active Directory 480485 gestion des serveurs 484 problmes avec BIND 482 AD (drapeau Authenticated Data) 312 Address database dump (section) 382 adresse (classement) 55 par le serveur de noms 238239 adresse (enregistrement AAAA) 257 adresse (liste de correspondance) 213 argument de la structure 218 allow-update 218 allow-update-forwarding 218 cl TSIG dans une ACL 219 named 214 adresse (type) 16
A
A (enregistrement dadresse) 55 ajouter un hte dans un chier de zone 128 alias pour machine multi-domicilie 56 client DNS Windows XP 116 enregistrements multiples pour tourniquet 235 restriction de mise jour dynamique 220 AAAA (enregistrement dadresse) 257 exemple 257 A6 (enregistrement dadresse) 257 correspondance directe 258 absolu chemin de chier 4 nom DNS 12 accs complet lInternet 49
[12/01/08]
DNS et Bind
564
adresse/nom (enregistrement PTR) 57 adresse/nom (recherche de correspondance) 51 aero (domaine) 18 AFSDB (enregistrement) 468 algorithme (champ) enregistrement DNSKEY 305 DS 310 RRSIG 307 algorithme cl publique bas sur des courbes elliptiques 306 alias 7, 55 conguration de la gestion par un agent de messagerie 91 crer dans un parent supprimer dans un sous-domaine 210 non prise en compte par un agent de messagerie 90 pour un hte 110 alias de nom DNS 7 Alice travers le miroir xix Alice au pays des merveilles xix allow-notify (dans structure zone) acceptation des messages dun serveur de noms autre que le matre de la zone 225 allow-query (sous-structure) 272, 279 liste daccs global sur des donnes de zone 299 restriction de toutes les requtes 272 des requtes dans une zone 272 des requtes vers un rseau interne 277 allow-recursion (sous-structure) 241 utilisation dACL pour recherche rcursive ou itrative 278 allow-transfer (sous-structure) 151, 273 restriction des transferts des adresses internes 273 allow-update (sous-structure) 218, 269 allow-update-forwarding (sous-structure) 218 also-notify (sous-structure de zone) 225 supprimer des messages NOTIFY tous les serveurs hormis ceux de la liste 225
Index
American Registry of Internet Numbers (ARIN) 47 ANY (enregistrement, requte dans BIND 8) 160 any (liste de correspondance dadresse) 214 arborescence et base de donnes du DNS 4 architecture 447455 infrastructure de redirection 451452 externe faisant autorit 448450 interne 453 opration sur le DNS 454 ARIN (American Registry of Internet Numbers) 47 arithmtique des numros de srie 130 arpa (domaine) 18 ARPAnet 1 correspondance nom/adresse pour un hte 2 asymtrique (cryptographie) 303 attaques dtournement du trac DNS travers un pare-feu 285 mascarade sappuyant sur la rcursivit 276 rseaux et protection du serveur de noms 153 vulnrabilit des versions de BIND 270 attempts (option du resolver) 104 au (domaine de niveau suprieur) 19 Authenticated Data (drapeau AD) 312 authentication du courriel et DNS 9294 SPF 9294 mise jour dynamique sur zone signe 325 rndc (programme) 123 ruserok( ), utiliser 97 auth-nxdomain (sous-structure) 250 autorit (rponse faisant) 335, 339 aa (drapeau dans dig) 350 autorit (rponse ne faisant pas) 335 autorit (section denregistrements dans un message) 340 autorit (serveur faisant) choix entre plusieurs serveurs 29 recherche par serveur cache 176
[12/01/08]
DNS et Bind
Index
autorit dun serveur sur une zone 53 AXFR (enregistrement) alternative IXFR 226
565
pilotage dun serveur de noms 119 128 mdc et controls (BIND 9) 123 127 ndc et controls (BIND 8) 120123 utilisation de signaux 127 prise en charge de la mise jour dynamique (versions 8 et 9) 214 problmes avec Active Directory 482 recherche dadresse IP 38 redirection 229232 resolver 26 conguration directives de la version 4.9 105 liste de recherche par dfaut 97 roundtrip time (RTT ou temps dallerretour) utilis par un serveur de noms 29 scurit excution avec privilges moindres 274276 version rcente 270271 statistiques (serveur de noms) 155163 change requte/rponse 155157 utilisation 164 tlchargement 35 transfert incrmental de zone 226 update-policy (version 9) xiii version avantages 36 rcente pour serveur de noms expos lInternet 285 vues (BIND 9) 232235 zone redirige 231 bind-users (liste de diffusion et scurit) 270 biz (domaine) 19, 43 blackhole (sous-structure) 242 bouclage (adresse) 59 lien avec named 279 ne pas utiliser avec plusieurs directives nameserver 101 boucle de routage du courriel algorithme des MX 90 prvention 86 BSD (systme dexploitation Unix) 1 bstat (outil) 160
B
base de donnes (dump) emplacement du chier, modier 138 base-64 chiffrement de mot de passe 123 cration dune cl code 267 bastion (hte) 285 conguration pour un espace de noms fractionn 297299 protection des donnes par un espace de noms fractionn 299 redirection des requtes de serveur de noms 286 du courrier Internet 294 utilisation des vues 301 BIND (Berkeley Internet Name Domain) xiii cache ngatif dun serveur de noms 32 code source le plus rcent 36 compatibilit des versions 507 compiler et installer sous Linux 509 512 congurer le serveur de noms et le resolver 523561 dbogage 353370 dnition dalias dhte 110 et GSS-TSIG 483 historique 9 IXFR 225 journalisation 138148 canal 143144 canaux et catgories 138 catgorie 144148 logging (structure) 141 listes de diffusion et forums 37 mise en uvre 4984 adresse de bouclage 59 chier de conguration 62 chiers de zone 51, 5359 informations indicatives pour la zone racine 5964 TTL standard dune zone 52 pare-feu ltrage de paquets avec BIND 8 ou 9 284
[12/01/08]
DNS et Bind
566
Index
dans une sous-structure channel de logging 140 journaliser vers un canal 139 par dfaut 144 syslog 141 CD (drapeau Checking Disabled) 313 chane (structure update-policy) 220 chane de bits (correspondance inverse en IPv6) 261 chane de conance 310312 chane de redirecteurs (vitement) 230 CHAOS (classe) 499 charge quilibrage 235 rpartition 235 permutation denregistrements dadresse 235 Checking Disabled (drapeau CD) 313 chiffrement cl publique 302 chmod(1) (documentation) 120 chroot (mise en uvre) 275 chroot() 274 CIDR (Classless Inter-Domain Routing) 46 CLASS (champ dun enregistrement de ressource) 498 classd $=w dans sendmail 109 classe de rseaux 46 erreur dans un enregistrement 153 implication sur les types denregistrement 16 inter-rseau (IN) 16 classe A, classe B et classe C (rseaux) 46 sous-rseaux de classe A ou B non dlimits au niveau de loctet 202 sous-rseaux de classe C non dlimits au niveau de loctet 203 Classless Inter-Domain Routing (CIDR) 46 cl (champ identiant) enregistrement RRSIG 307 RS 310 cl (dnition dans rndc) 123 cleaning-interval (sous-structure) 248 cls (paire) 303 gnration dune nouvelle paire 316, 326 zone signe en DNSSEC 305
C
C (programmation) bibliothque du resolver 417427 structure _res 423 serveur de noms 425430 check_soa (exemple) 431442 ca (domaine du Canada) 23 cache 32 blocage de construction dune mmoire cache 240 purge des donnes primes 248 resolver de Windows XP 116 cache ngatif 116 mise hors-service du cache 117 serveurs de la racine 26 TTL 34 sur les enregistrements en mmoire cache 249 cach (espace de noms) 296 chier de zone 296 cache (serveur primaire) 106, 450 Canada (domaine ca) 23 canal de journalisation 138, 143144 conguration 139 chier 143 ignorer les messages de la catgorie default 140 mise en forme des donnes 144 niveau de gravit dun message 139 null 144 pour journalisation des catgories 139 stderr 144 syslog 143 cannot set resource limits on this system (message de syslog) 149 canonique (nom DNS) 7 canonique (nom) enregistrement PTR 57 nom de domaine dans un enregistrement NS 198 recherche par un agent de messagerie 90 canonisation par sendmail 108 alias dans un en-tte de courriel 56 Carroll, Lewis xix catgorie (journalisation) 138, 144148 afcher toutes les catgories 147 congurer 144
[12/01/08]
DNS et Bind
Index
cls de chiffrement cl prive pour valeur de hachage dans un enregistrement TSIG 267 conguration pour TSIG 267 cryptographie cl publique 302 envoi pour signature 319 KSK (Key Signing Key) 315 modication 325327 tapes 326 signature de requte de transfert de zone par un esclave 273 TSIG 266 ZSK (Zone Signing Key) 314 client (limitation du nombre de clients servis simultanment) 247 client/serveur (architecture DNS) 4 CNAME ou canonical name (enregistrement) 55, 457461 alternative un enregistrement dadresse 56 comportement avec sendmail 109 comportement avec un agent de messagerie 91 dans la partie des donnes dun enregistrement de ressource 152 dans les donnes dun enregistrement de ressource 458 dplacer un hte dun parent vers un sous-domaine 199 dplacer un rseau ou sous-rseau vers un nouveau sous-domaine 209 dsignant un autre CNAME 458 li un nud interne 457 mise jour dhte dans un chier de zone 128 multiple li un nom DNS 459 mise en uvre dun tourniquet 236 obtention dun CNAME la place dun PTR par un resolver 402 recherche 459 des alias associs un nom 460 codage, outils 477 com (domaine) 17, 43 interprtation des noms DNS (exemple) 20 commande (programme ndc) 120 commentaire 528
567
dans un chier de zone 52 dans un resolver BIND version 4.9 105 comp.protocols.dns.bind (forum utile pour la scurit de BIND) 270 compatibilit des serveurs de noms 250 compression dun nom DNS 428 condensat 266 conditions 111 cong (catgorie de journalisation) 144 conguration (chier) erreur de syntaxe 388390 format 51 connectivit dun serveur de noms 168 connexion commute 463467 connexion la demande pour plusieurs htes 465 pour un hte unique 465 tablissement vitement 464 raisons 463 tablissement manuel pour plusieurs htes 466 pour un hte unique 464 serveur faisant autorit sur connexion la demande 466 connexion Internet commute 463467 connexion la demande pour hte unique 465 pour htes multiples 465 connexion manuelle pour hte unique 464 plusieurs htes 466 tablissement 463 vitement de connexion 464 serveur faisant autorit et connexion la demande 466 contact administratif dune zone 48 technique de zone 48 continue (action dans NSS) 112 contrle (message de modication du niveau de dbogage) 356 contrle (structure) 120, 529 congurer un serveur de noms pour couter les messages de contrle 120 chiers de zone 134 $INCLUDE 137 $ORIGIN 137
[12/01/08]
DNS et Bind
568
Contrleur de Domaine Active Directory 484 coop (domaine) 19 coresize (limite) 246 corp (sous-domaine) 20 correspondance directe 51 dlgation par serveur de racine interne 291 IPv6, 275 exprimental 258 courrier lectronique 8594 comportement des agents de messagerie 108 courriel dhtes internes, envoys via une racine interne 294 DNS et authentication 9294 SPF 9294 domaine exemple 88 changeur de messages 88 MX algorithme 90 enregistrement 8688 redirection pour des domaines spciques de lInternet laide dune racine interne 295 serveur de messagerie de notre domaine exemple 88 sollicitation intensive des serveurs de noms 169 CPU (utilisation par le processus named) 170 critical (niveau de gravit) 139 cryptographic checksum (somme de contrle) 266 CSNET (classe) 499
Index
db.DOMAIN (chier) ajout/suppression dhte 128 insertion denregistrement de ressource avec spcl.DOMAIN 134 db.movie.edu.signed (exemple de chier) 317 db.root (chier) 186, 292 redirection de la messagerie interne vers lInternet 294 dbogage BIND 353370 exemples 357370 interprtation 357368 mise en uvre 356 niveaux 353356 mise hors-service complte avec nslookup 338 script Perl de conversion dadresse en nom 370 dbogage (exemple de message) 144 debug (gravit) 139 debug (option de nslookup) 338 dcompression dun nom DNS 429 des noms de domaine 429 default (catgorie de journalisation) 140 143 default servers are not available (message) 346 default_stderr (canal de journalisation) 144 default-key (sous-structure), chier rndc.conf 125 default-server (sous-structure) de la structure options de rndc.conf 125 dlai BIND option du resolver 104 versions 4.9 8.2 102 versions 8.2 et postrieures 102 nslookup, serveurs de noms et resolvers 330 dlgation 20 correspondance directe avec une racine interne 291 gestion 208209 par zone source 209 information de dlgation prime 408
D
d2 (option de nslookup) 338, 346 daemon (service) 139, 143 date (commande) 164 db.ADDR (mise jour dun hte dans le chier) 129 db.cache (chier) 176 serveur temporaire de la racine 187 version jour 61
[12/01/08]
DNS et Bind
Index
sous-domaine 24, 193197 absence de dlgation 393 dun domaine in-addr.arpa 201 206 dcision de mise en place 192 dlgation incorrecte 394397 surcharge de travail 190 test laide de host 206 transition vers des sous-domaines 209 211 supprimer des alias au niveau du parent 210 vers une zone non signe 312 zones 21 in-addr.arpa avec racine interne 291 dpannage 371409 absence de dlgation 393 dlgation vers un sous-domaine incorrecte 394397 domaine local non initialis 398 chec contrle daccs rlogin rsh 407 enregistrement des requtes 382 PTR, oubli dajout 387 erreur de donnes concernant la racine 391 erreur de syntaxe dans resolv.conf 397 chier de conguration 388390 esclave ne pouvant charger une zone 386387 impossibilit de rechercher des noms locaux 405 incrmentation du numro de srie, oubli 383385 mise jour vers une version rcente de BIND 400 named-xfer, utiliser 372374 NIS 371 persistance dinformations primes 408 perte de connectivit 391397 point terminal pour un nom dans un chier de base de donnes, oubli 390 problmes dinteroprabilit et de version 401404 rechargement du serveur primaire, oubli 385 recherche de noms distants impossible 406
[12/01/08]
569
recherche lente 407 refus daccs des services 408 rponse de source inattendue 399 fausse ou incohrente 406 transfert de zone par nslookup ou dig 374 descripteur de chier 149 besoins de named 247 DHCP 214 mise jour dynamique denregistrements A, TXT et PTR autorise par update-policy 220 dial-up (sous-structure) 466 Dife-Hellman (algorithme de chiffrement) 306 dig (outil) 348352 format dafchage 349 options 352 recherche en ligne de commande 348 serveur de noms supportant DNSSEC et vriant un enregistrement 313 tlcharger la liste des serveurs de la racine 134 transfert de zone 351, 374 digest type (champ dun enregistrement DS) 310 dist (chier) 174 distant (impossibilit de rechercher des noms distants) 406 DNAME (enregistrement) 257, 458 correspondance inverse 260263 dname (paramtre de res_search) 422 DNS (Domain Name System) xi alternative au DNS 9 analyse dune rponse 430442 architecture 447455 infrastructure de redirection 451 452 infrastructure externe faisant autorit 448450 infrastructure interne 453 tches 454 authentication du courriel 9294 SPF 9294 connexion commute vers lInternet 463467 contenu des messages 339, 349 courrier lectronique 8592 enregistrements de ressource 51
DNS et Bind
570
DNS (Domain Name System) (suite) espace de noms dun domaine 1116 format dun message 417 du chier matre 487489 historique 2 interruption du rseau 183185 messages 499504 pare-feu Internet 282302 espace de noms fractionn 296 302 laissant passer la totalit du trac DNS 285 racine interne 290296 redirecteur vers lInternet 285 290 resolver (client) 100 structure de la base de donnes 4 surcharge du rseau par le trac DNS 172 Windows et Active Directory 480485 gestion des serveurs Windows 484 prise en charge des clients Windows 483 WINS 478479 DNSEXT 37 DNSKEY (enregistrement) 305306, 312, 314 ajout aux donnes de zone 326 dans les chiers de zone 317 cl de signature de zone (ZSK) et cl de signature de cl (KSK) 315 cl publique 306 de lalgorithme, champ 305 des drapeaux, champ 305 du protocole, champ 305 keyset, chier 319 SEP drapeau 305 , signature par dnssec-signzone 317 dnskeygen (programme) 267 DNSSEC (DNS Security Extensions) xiii chiffrement cl publique et signature lectronique 303 cl de signature de zone (ZSK) et cl de signature de cl (KSK) 315 DO, AD et CD 312 enregistrement DNSKEY 305306 DS et chane de conance 310 312
[12/01/08]
Index
NSEC 308309 RRSIG 306308 utiliser 313 mise jour dynamique 322325 modication des cls 325327 numro dalgorithme 268 performances 314 signature de zone 315321 cration dune paire de cls 316 envoi des cls pour signature 319 zone parente 320 dnssec-keygen (programme) 124, 267, 316 options -a, -b et -n 316 -f 316 dnssec-signzone (programme) 317 cration dun enregistrement DS 320 keyset, chier 319 options 318 re-signature denregistrement 319 de zone 319 DO (drapeau) 312 domain (directive de resolver) 96 mise jour de resolver 99 utilisation de la directive search en BIND 4.9 105 domaine 4, 1316 choix du nombre de serveurs de noms 167 cycle de vie dun parent 211 dlgation 20 diffrence avec une zone 21 DNS ou NIS 15 niveau suprieur 513522 sous-domaine 15 structure retant celle de lentreprise 191 domaines nationaux de niveau suprieur 18, 39 domaines de second niveau 40 donnes (chier de zone) 25 drapeaux (champ denregistrements DNSKEY) 305 DS (enregistrement Delegation Signer) 310312, 314 cration par dnssec-signzone 320 pour une zone parente signe 321 DSA/SHA-1 (algorithme cryptographique) 306
DNS et Bind
Index
dsset (chier) 321 dumpdb (commande) ndc, programme 122 rndc, programme 126 Dunlap, Kevin 9 dynamic (gravit) 139 Dynamic Update (norme RFC 2136) 37 dynamique (mise jour) xiii, 214221 adresse source lors dune redirection 254 annonce de modication 222 DNSSEC 322325 chier de zone 217 impossibilit durant une modication manuelle des chiers de zone 227 liste daccs 36 mise jour dACL 218 numro de srie 217 restriction par TSIG 269 scurit dans Windows 482 signature par TSIG 218 transfert de zone incrmental 225 utilisation par Windows 480482
571
serveurs de noms 178180, 409 cache simple 180 esclave partiel 180 quelques serveurs 178 sous-domaine dlgu 200 test des rseaux 4547 zones 47 voir aussi registrar enregistrements complmentaires (message DNS) 342 en-tte (section dun message DNS) 339 ENUM (correspondance inverse des numros de tlphone) xiii, 473476 enregistrement des noms de domaine 476 NAPTR 474475 numro E.164 (traduction en nom de domaine) 473 respect de la vie prive et scurit 476 environnement graphique (utilisation intensive des serveurs de noms) 170 pine dorsale (backbone) 2 erreurs (fonction herror) 419 error (gravit) 139 esclave (serveur de noms) 24 BIND 8 dbogage de niveau 1 test de zone 366367 BIND 9 dbogage de de niveau 1 test de zone 367 chargement des donnes de zone partir dun autre esclave 175 conguration pour utiliser un redirecteur 229 enregistrement 178 chiers de zone 25 gestion des demandes de transfert de zone 273 impossibilit de charger les donnes de zone 386387 impossibilit de joindre le matre pour un transfert de zone 151 mcanisme de balayage pour dterminer le besoin dun transfert de zone 221 mise en place dans un nouveau sous-domaine dlgu 197 sous-domaine dlgu 200 modier les chiers de zone 128
E
E.164 (numros) 473 correspondance avec les URI 473 changeur de messages 86, 88 impossibilit dutiliser une adresse IP la place dun noms DNS pour une identication 88 qualits dun bon changeur 89 valeur de prfrence ou priorit 86 edns server (sous-structure) 256 EDNS0 (Extension Mechanisms for DNS, version 0) 256 requis par DNSSEC 312 edns-udp-size (sous-structure de options) 256 edu (domaine de lducation) 6, 17 interprtation des noms de domaine (exemple) 20 edu (zone) 21 enregistrement 39 automatique dans Windows XP 116 nom de domaine ENUM 476 nom DNS contenant des caractres non ASCII 45
[12/01/08]
DNS et Bind
572
esclave (serveur de noms) (suite) NOTIFY annonce envoye aprs un transfert de zone 222 rponse envoye un matre 222 recherche de serveur cache dans une zone 176 reconguration en serveur primaire lors de pannes longues 186 requte AXFR pour initialiser un transfert de noms 160 requte de transfert de zone et capacit de transfert IXFR du matre 229 signature des requtes de transfert de zone 273 trac rseau avec un primaire cach 450 transfert de zone entrant (named-xfer) 138 TTL 181 espace de noms 11 cach 296 domaine 1316 espace de noms de lInternet 1720 fractionn 296302 nom DNS 12 RR 16 espace tendu (domaine us) 45 espace local (domaine us) 43 /etc/hosts (chier) gestion de panne 186 lien avec nslookup 330 nouveau sous-domaine dlgu 193 Europe (bureau denregistrement) 47 exec (commande de ndc) 122 exemples des programmes de cet ouvrage xvii expiration (enregistrement SOA) 182 choix 183 explicit argument (notify (sous-structure)) 225 exports (montage NFS) 108 externe (vue) 234 inhibition de la rcursivit 282 extranet 2
Index
F
FAI (Fournisseur dAccs Internet) attribution dadresse IP par DHCP 214 enregistrement de rseau 46 offre de service de noms 38 zone in-addr.arpa et dlgation de sous-domaine 48 fetch-glue (sous-structure) 241 chier erreur Too many open les 402 limiter le nombre de chiers ouverts par named 247 chier de dmarrage (dnition statique de ladresse du routeur par dfaut) 185 chiers ouverts (limite) 247, 402 ltrage de paquet (pare-feu) 282 communication dun serveur de noms interne avec des serveurs de lInternet 285 pare-feu commercial 283 ltre de canonisation (leve dambigut) 110 n de ligne dans Windows et Unix 250 ush (commande de rndc) 127 ushname (commande de rndc) 127 forum BIND 37 forward rst (prdilection du mode de redirection) 229 redirecteur simple 230 forward only (redirection simple) 230 forwarders (sous-structure) 229, 286 liste vide 231 FQDN (Fully Qualied Domain Name) 12 signalisation par point terminal (.) 97 fractionn (espace de noms) 296302 congurer la machine bastion 297 299 prcautions de scurit sur un bastion serveur de noms 300 protection des donnes de zone sur le bastion 299 vues sur un bastion 301 freeze (commande de rndc) 126, 227 ftp (commande) 107 furtif (esclave) 454
[12/01/08]
DNS et Bind
Index
573
HOSTALIASES (variable denvironnement) 110 hostname canonisation (programme sendmail) 109 pour dterminer le nom du domaine local 96 utilis pour lidentication par un client NFS 108 hosts.equiv (ajout du domaine au nom dhte dans le chier) 110 HOSTS.TXT (chier) 2 host-statistics (sous-structure) 158, 172 hte (identiant) 46 hte (table) avantages du DNS 85 domaine exemple 50 pour gnrer des chiers de zone 132 134 secours pour resolver 184 traduction en donnes de zone pour le DNS 51 htes alias pour nom DNS 7 choix pour linstallation des serveurs de noms 168 facteurs prendre en compte 168 conguration 95117 alias 110 diffrences de comportement entre les services 107 nom dhte dans un chier dautorisation 109 nsswitch.conf (chier) 111 programmes de messagerie 108 resolver 95107 resolver de Windows XP 112117 informations fournies par le DNS 11 nom DNS 7, 15 statistiques par hte dans BIND 8 172 htes (base de donnes) 111 afchage par ypcat 372 HUP (signal) 128
G
Generic Security Service (GSS) 482 gestion des ressources humaines (domaine jobs) 19 getpid (commande de ndc) 122 getrlimit( ) et setrlimit( ) (appels systme) 149 gov (domaine) 17 gravit dnition pour canal chier 143 journaliser les messages 139 group (chier) 276 GSS (Generic Security Service) 482 GSS-TSIG 482 dans BIND 483 gTLD (generic Top-Level Domain) 18, 39 choix dun nom de sous-domaine 43 non sponsoris 18 nouveaux 18
H
h_errno (variable) 419 h2n (script) 132134 ajout manuel denregistrements de ressource 133 autres options 132 cration dalias pour rseaux ou htes de sous-rseau 210 -d, option 132 initialiser named.conf 195 -n, option 132 options ncessitant un nom dhte 133 suppression dalias pour hte de sousdomaine sur un parent 211 hachage (valeur dans un enregistrement TSIG) 267 halt (commande de rndc) 126 Harvest 160 Header (objet de Net::DNS) 443 herror (fonction) 419 Hesiod (classe) 499 HMAC-MD5 (algorithme cryptographique) 123, 266 homognit des serveurs 169 host (programme) 206 pour le test de dlgation 207 sites de tlchargement 206
[12/01/08]
I
ICANN (Internet Corporation for Assigned Names and Numbers) 18
DNS et Bind
574
ICMP (Internet Control Message Protocol) message port unreachable 184 port unreachable, host unreachable ou network unreachable 101 identiant alatoire de message de requte 277 dinterface (adresse IPv6) 252 de sous-rseau (IPv6) 252 identit (stratgie de update-policy) 219 IDN (Internationalized Domain Names) xiv ifcong (commande) 184 inactivit (limitation de la dure lors dun transfert de zone) 244 in-addr.arpa (domaine) sous-domaines 201206 sous-rseau dlimit au niveau de loctet 201 sous-rseau non dlimit au niveau de loctet 202208 in-addr.arpa (zone) 48 dlgation 199 partir dune racine interne 291 enregistrement de serveurs de noms 179 $INCLUDE (structure) 134, 137 include (directive dans un enregistrement TXT de SPF) 94 include (structure) 134, 529 lecture dune structure key partir dun autre chier 268 Incremental Zone Transfer (IXFR) xiii, 37, 225229 calcul des diffrences entre versions de chiers de zone 226 chiers 227 limitations 226 inet (sous-structure) (controls) 123 info (domaine) 19, 44 info (gravit) 139 messages envoys syslog et au chier de dbogage 143 infrastructure DNS externe 448452 instantan des statistiques (message syslog) 150 int (domaine pour les organismes internationaux) 18 interface-interval (option) 249
[12/01/08]
Index
interne (vue) 234 rcursion 282 Internet compars aux internets 2 historique 1 ncessit du DNS 9 internet bas sur TCP/IP et dcision de mise en place dun DNS 9 compar Internet 2 Internet (classe) 499 Internet (espace de noms) 1720 domaines de niveau suprieur 1719 lecture des noms DNS 20 Internet (pare-feu) DNS et proxy 283 types de pare-feu 282 Internet (redirecteurs) 285290 Internet (serveurs de la racine) 26 Internet (types daccs) 49 Internet Corporation for Assigned Names and Numbers (ICANN) 18 Internet Systems Consortium 9 InterNIC formulaire Network Modication 179 site 45 intranet 2 inverse (recherche) 51 IPv6, 275 chane de bits 261 enregistrement DNAME 260263 exprimental 258 requte envoye un redirecteur 289 IP (adresse) attribution par DHCP 214 classement dadresse de serveur de noms 238239 conversion en nom dans le rsultat dun dbogage 370 correspondance adresse/nom 30 recherche dhte 38 IP (gestion de la correspondance adresse/ nom) 48 IP (prxes) 213 IP (test de lenregistrement dun rseau) 4547 ip6.arpa 257 ipcong /displaydns (commande) 117 ipcong /ushdns (commande) 117
DNS et Bind
Index
IPv4 (conguration du transport) 252255 IPv6 adresse 251252 attribution dadresse un site 252 identiant dinterface 252 identiant de sous-rseau 252 notation :: 251 prxe de routage global 252 prxes 252 sufxes 251 conguration du transport 255 recherche directe et inverse 257, 258 263 enregistrement A6 et correspondance directe 258 260 enregistrement DNAME et correspondance inverse 260 263 utiliser les enregistrements AAAA et de ip6.arpa xiii ISC (Internet Software Consortium) page web de BIND 37 site web du code source de BIND 36 ISC (serveur DHCP) 484 ISO 3166 (domaines de niveau suprieur code de pays 18 modle de uk 19 modle des tats-Unis 19 itration 28, 29 itrative (requte) 28 rponse des serveurs de noms 276 .ixfr (chier) 227 IXFR (enregistrement) 226 ixfr-base (sous-structure) 228 ixfr-from-differences (sous-structure) 227 catgorie 144148 message NOTIFY 223 structure logging 141 requtes 382 journalisation (chier) 217 IXFR 227 limitation de taille 228 mise jour dynamique 217
575
K
key (structure) 267, 529 dans une structure view 233 dnir pour plusieurs serveurs 125 rndc, programme 123 rndc.conf, chier 124 keys (sous-structure) 269 keyset (chier) 319, 321 KSK (Key-Signing Key ou cl de signature de cl) 315, 317, 326 modication 327 re-signature de zone 327
L
lame delegation (mauvaise dlgation) 154, 180 lame server (message derreur) 397 lame TTL 250 LAN (local area network) 2 dcision de mise en place dun DNS 10 volume du trac DNS 172 Latin America and Caribbean Internet Addresses Registry (LACNIC) 47 ligne de commande (options de nslookup) 332 limitation des ressources sur un serveur 246248 nombre de clients 247 chiers ouverts 247 requtes de SOA 248 taille de pile 246 dun chier core 246 dun segment de donnes 246 limit (accs Internet) 49 Linux (compiler et installer BIND) 509 512
J
JEEVES 9 .jnl (chier journal) 217 conguration de la taille maximale 229 information IXFR 227 jobs (domaine) 19 journalisation BIND 138148 canal 143144 canaux et catgories 138
[12/01/08]
DNS et Bind
576
liste daccs, mise en uvre dans BIND 8 et 9 36 liste de diffusion des utilisateurs de BIND 37 mise jour du chier db.cache 61 listen-on (sous-structure) 253 listen-on-v6 (sous-structure) 255 LOC (enregistrement) 469 local (nom de domaine) 96 dysfonctionnement de la recherche 405 non initialis 398 local (utilisation du serveur local par le resolver) 106 local0 (canal syslog utilisant ce service) 143 LOCALDOMAIN (variable denvironnement) 96 localhost (liste dadresses) 214 localnets (liste dadresses) 214 log.msgs (chier) 140, 141 logging (structure) 140, 530 afcher tous les messages par catgorie (BIND 8) 147 spcication de catgorie 140 syntaxe 141 logiciel (hte serveur de noms) 169 lpd.allow (leve dambigut sur les noms dhte) 109 ls (commande) 342, 345 lserver (commande) 336 lwres (structure) 530
Index
masters (sous-structure) 224, 251, 530 dnition dun port alternatif 253 spcication dune cl TSIG de transfert de zone 269 match-clients (sous-structure) 233 match-destinations (sous-structure) 233 match-recursive-only (sous-structure) 233 max-journal-size (sous-structure) 229 max-ncache-ttl (sous-structure) 249 max-refresh-time et min-refresh-time (sous-structures) 245 max-retry-time (sous-structure) 245 max-transfer-idle-in (sous-structure) 244 max-transfer-idle-out (sous-structure) 244 max-transfer-time-in (sous-structure) 244 max-transfer-time-out (sous-structure) 244 MD5 (algorithme cryptographique) 266 mmoire limiter lutilisation par la pile du processus named 246 un serveur de noms 246 surveillance de lutilisation par un serveur 170 mmoire cache (inhibition) 277 mta-caractre 461 mta-caractre (enregistrement MX) 294 Microsoft DHCP Server 482 Microsoft DNS Server 478 format de transfert de zone manyanswers 245 problmes dinteroprabilit 401 support de GSS-TSIG 482 NOTIFY 224 zones intgres dans Active Directory 251 Microsoft Knowledge Base (article Q246804) 482 mil (domaine) 17 min-refresh-time (sous-structure) 245 min-retry-time (sous-structure) 245 mmencode (programme) 124, 268 MNAME (champ du SOA dnissant le matre de la zone) 215 mobi (domaine des priphriques mobiles) 19 Mockapetris, Paul 4, 9
M
maintain-ixfr-base (sous-structure) 227 maintenance (intervalle) 248 de balayage des interfaces 249 de purge 248 de statistiques 249 matre (format de chier) 51, 487489 matre (serveur) 24 many-answers (format de transfert) 229, 245 conguration des serveurs de noms 245 mascarades (attaques) enregistrement NAPTR 476 lies la rcursion 276 rponse dune source inattendue 399
[12/01/08]
DNS et Bind
Index
multi-master zone (sous-structure) 251 multiple-cnames (structure) 236 museum (domaine) 19 MX (enregistrement) 8688 algorithme des MX 90 destinations avec enregistrement A mais sans enregistrement MX 87 explication 89 identication du serveur de messagerie de secours 88 limitation 462 mta-caractre 294, 462 mise jour pour les htes dans un chier de zone 128 sendmail 109 valeur de prfrence 86
577
reconguration dun serveur-esclave en serveur primaire 186 rndc-confgen, et 125 rndc-key, structure 123 serveur bastion sur espace de noms fractionn 300 serveur cache 176 serveur de publication lcoute sur ladresse IP de linterface rseau 280 serveur de rsolution lcoute sur ladresse de bouclage 280 serveur faisant autorit sur une zone parente et congur comme source pour une zone enfant 209 serveur-esclave dans un sous-domaine dlgu 197 mise jour partir dun autre serveur-esclave 175 structure pour la zone racine 187 named.conf.primary (chier) 136 named.conf.slave (chier) 136 named.pid (chier) 138 named.run (chier) 140, 356 catgorie default attribue au canal null 141 message de gravit info et de gravit suprieure 143 named.stats (chier) 138, 157, 164 named_dump.db (chier) 138 named-conf (chier), structure trustedkeys 311 namedroppers (liste de diffusion) 37 named-xfer (chier) 138, 372374 nameserver (directive de resolver) 100 102 serveur de noms multiples 101 unique 101 utilisation de plusieurs directives 100 nameserver (directive, serveur de rsolution lcoute sur linterface de bouclage) 281 NAPTR (enregistrement) 474475 mascarade 476 navigation sur le web (utilisation des serveurs de noms) 169
N
named arrt avec rndc stop 130 charge gnre sur le systme 170 deux processus pour publier et rsoudre 279 messages syslog 148 options -u et -g 274 stacksize 246 -t, option 275 named (liste dadresses) 214 named -g <commande> 274 named.conf (chier) 51 controls (sous-structure) 125 dnition de cl pour utilisation dans le chier rndc.conf 124 exemple complet 234 chier db.root de serveurs de la racine 293 hte bastion sur espace de noms fractionn 299 limiter le nombre total de transferts de zone 243 liste dadresse dnie par une structure acl 214 origine par dfaut dun chier de zone 137 primaire (serveur) congur comme esclave 201 sous-domaine dlgu 194
[12/01/08]
DNS et Bind
578
ndc (programme) 120123 aide 121 -c, option 120, 276 grer la journalisation 127 modes interactif ou non-interactif 121 modication du niveau de dbogage avec des messages de contrle 356 prise en charge des commandes par rndc 126 signaux (quivalence avec les commandes) 127 start et restart (commandes) 121 ngatif (cache) 32 max-ncache-ttl options (sousstructure) 249 prise en charge par le serveur de noms 403 resolver de Windows XP 116 TTL 52, 182 ngative (rponse) authentie (enregistrement NSEC) 308309 format 250 net (domaine) 17 Net::DNS (module Perl) 270, 442446 NetBIOS (nom) 478 NetBIOS (service de noms WINS) 116 netgroup (gestion du montage NFS) 108 Network Modication (formulaire) 179 Network Solutions, Inc. 44 Network Time Protocol (NTP) 268 NFS (service) 108 NIS (Network Information Service) 10 diffrences entre domaine DNS et domaine NIS 15 nslookup 330 problme de DNS ou de NIS 371 niveau (domaines) 16 niveau suprieur (domaine) 16, 513522 codes internationaux 18 espace de noms Internet 1719 noms existants ou rservs interdits pour un sous-domaine 191 nouveaux 18 domaines gnriques de niveau suprieur 18 porte des traditions 19 niveaux de conance dans un dump 382
Index
no devant les options de nslookup 332 No response from server (erreur) 345 no-check-names (option de resolver) 104 nud racine (base de donnes) 4 nuds (base de donnes du DNS) 4 nom (collision) 8 nom (domaine) 12, 19 correspondance adresse/nom 30 interprtation 20 nom (service dinformation sur les htes) 111 nom (vues) 233 nom dun domaine 7 ajout un nom dhte pour un chier dhtes autoriss 109 choix 3948 classement dans une zone 308 compression 418 correspondance alias/nom 110 avec des adresses de point daccs des rseaux OSI 160 enregistrement ENUM 476 enregistrements CNAME multiples associs un nom unique 236 internationalisation 45, 476478 local non initialis 398 nom de domaine local pour le resolver 96 oubli du point terminal dans un chier de zone 390 partie spcique dun enregistrement NS 198 rsolution dans Internet 286 stockage 418 nom de domaine dcompression 429 gographique (liste) 513522 nom DNS, dcompression 429 nom/adresse (correspondance) 54 client WIndows XP 116 nom/adresse (rsolution) 51 non inversible (fonction de hachage) 266, 304 non rcursive (requte) entre serveurs de noms 230
[12/01/08]
DNS et Bind
Index
non-commercial (organisme) (domaine org) 17 none (liste dadresse prdnie) 214 Non-existent domain (message) 346 NOTFOUND (condition) 111 notice (gravit) 139 NOTIFY xiii, 175, 221225 ajout de serveurs en plus de ceux dnis par les enregistrements NS 225 annonce envoye par un esclave aprs un transfert de zone 222 dsactivation 224 enchanement complexe de transfert de zone 223 envoi de messages vers un port alternatif 253 identication dune annonce 222 rponse dun esclave une annonce NOTIFY 222 serveur-esclave BIND ne grant pas NOTIFY (erreur NOTIMP) 224 notify (sous-structure) (argument explicit) 225 notify-source (sous-structure) 254 notify-source-v6 (sous-structure) 256 notrace (commande) ndc, programme 123 rndc, programme 127 nouvel essai (valeur de lenregistrement SOA) 182 NS (enregistrement de serveur de noms) 53 absence denregistrement NS pour le MNAME du SOA 402 dlgu dans un sous-domaines de inaddr.arpa 202 sous-domaine dlgu 198 test de la dlgation partir dun serveur de la zone parente 207 spcication dun TTL explicite 180 trop denregistrement NS sur une zone 347 ns_get32 (fonction) 426 ns_init_parse (fonction) 426 ns_msg_count (fonction) 427 ns_msg_get_ag (fonction) 427 ns_msg_id (fonction) 428 ns_name_compress (fonction) 428
[12/01/08]
579
ns_name_skip (fonction) 429 ns_name_uncompress (fonction) 429 ns_parserr (fonction) 430 ns_put32 (fonction) 426 ns_update( ) (fonction du resolver) 215 NSAP (requte denregistrement sur serveur BIND 8) 160 NSEC (enregistrement) 308309, 312 dernier nom dune zone 309 recalcul lors dune mise jour dynamique 323, 325 signature par une zone parente 321 NSFNET 2 tat du trac 172 nslookup 329348 .nslookuprc (chier) 334 dpannage 344348 absence denregistrement PTR correspondant ladresse du serveur 345 absence de rponse pour le premier serveur de resolv.conf 346 no response from server 345 recherche dune information type 344 requte refuse 346 unspecied error 347 visualisation de la recherche 346 mulation dun serveur ou dun resolver 329 n de session 348 liste de recherche 330 inhibition 334 options 331334 abrviations 332 boolennes ou valeur 332 liste 334 modication 332 programmation en shell 412417 recherche de ladministrateur dune zone parente 199 rechercher ladresse IP pour un nom DNS 38 rechercher le courriel du contact technique dun sous-domaine 40 serveurs multiples 330 session interactive 331 non interactive 331
DNS et Bind
580
nslookup (suite) tches courantes 334337 changement de serveur de noms 336 recherche de type denregistrement 335 rponse faisant autorit ou non 335 tches moins courantes 337344 afchage des messages de requte et de rponse 338340 interrogation la manire dun serveur BIND 340342 transfert de zone 342 temps dattente 330 test denregistrement PTR oubli 388 test de mauvaise dlgation 394 transfert de zone 330, 374 utilisation de NIS 373 utiliser 342 versions xiii nsswitch.conf (chier) 111, 372 nsupdate (programme) 215 commandes 215 -k, option 269 mise jour dynamique signe par TSIG 269 -y, option 269 NTP (Network Time Protocol) 268 null (canal de journalisation) 140, 144
Index
auth-nxdomain (sous-structure) 250 BIND 8 528533 blackhole (sous-structure) 242 cleaning-interval (sous-structure) 248 dialup (sous-structure) 466 edns-udp-size (sous-structure) 256 fetch-glue (sous-structure) 241 forwarders (sous-structure) 230 host-statistics (sous-structure) 158, 172 host-statistics (validation) 158 ixfr-from-differences (sous-structure) 227 lame-ttl (sous-structure) 250 listen-on (sous-structure) 253 listen-on-v6 (sous-structure) 255 maintain-ixfr-base (sous-structure) 227 max-journal-size (sous-structure) 229 max-ncache-ttl (sous-structure) 249 max-refresh-time (sous-structure) 245 max-transfer-idle-in (sous-structure) options (structure) max-transfer-idle-out (sousstructure) 244 max-transfer-time-in (sous-structure) 244 max-transfer-time-out (sous-structure) 244 min-refresh-time (sous-structure) 245 notify-source (sous-structure) 254 notify-source-v6 (sous-structure) 256 provide-ixfr (sous-structure) 228 query-source (sous-structure) 253, 284 recursive-clients (sous-structure) 247 request-ixfr (sous-structure) 229 rfc2308-type1 (sous-structure) 250 rrset-order (sous-structure) 236 serial-queries (sous-structure) 248 sig-validity-interval (sous-structure) 324 sortlist (sous-structure) 238 statistics-interval (sous-structure) 249 transfer-format (sous-structure) 245 transfer-source (sous-structure) 254 transfer-source-v6 (sous-structure) 255 transfers-out (sous-structure) 243 transfers-per-ns (sous-structure) 242 use-id-pool (sous-structure) 277 view (position de la structure) 233 options boolennes de nslookup 334
O
octet (sous-rseau dlimit au niveau de) 201 onduleur et batteries 185 one-answer (format de transfert) 245 option valeur (nslookup) 332 option en ligne de commande (dbogage dans BIND) 356 options (directive du resolver BIND) 103 options (structure de rndc.conf) 124 default-server (sous-structure) 125 options (structure) allow-query (sous-structure) 272 ACL globale sur donnes de zone 299 allow-recursion (sous-structure) 241 allow-transfer (sous-structure) 273
[12/01/08]
DNS et Bind
Index
options dans une structure zone lintrieur dune structure view 233 allow-notify 225 also-notify 225 org (domaine) 17, 44 organismes internationaux (domaine int) 18 $ORIGIN (structure) 134 modication de lorigine pour utiliser des raccourcis 137 modier lorigine pour utiliser des raccourcis 192 OSI Network Service Access Point (adresse NSAP correspondant un nom DNS) 160
581
Perl (script de conversion dadresse en nom dans un afchage de dbogage) 370 permutation denregistrements dadresse 235 PID (chier) 128 serveur de publication et serveur de rsolution 280 pile (modication de taille limite pour named) 246 ping analyse de problmes de connectivit 393 option de rotation dans un resolver 104 test dinterface sur machine multidomicilie 55 port unreachable (message) 184 post (domaine de la communaut poste) 19 prfrence (valeur dun enregistrement MX) 86, 91 agent de messagerie de meilleure prfrence 91 prxe (adresse IPv6) 252 prxe de routage global (IPv6) 252, 259 primaire (enregistrement des chiers de donnes dans des rpertoires spars) 135 primaire (chier de zone pour la fonction de) 136 primaire (serveur cach) 106 primaire (serveur) adaptation du transfert de zone la capacit IXFR du matre 229 ajout 174 ajout ou suppression dhte dans les chiers de zone 128 cach 450 congurer comme esclave pour un sous-domaine dlgu 200 crer le chier named.conf dans un sous-domaine dlgu 194 dans le champ MNAME de lenregistrement SOA de la zone 215 dlgation de sous-domaine 198 enregistrement 178 oubli de rechargement 385
P
panne anticipation 183185 prise en charge 186187 interruption de longue dure (jours) 186 interruption de trs longue dure (semaines) 186 pare-feu Internet, DNS et pare-feu 282302 espace de noms fractionn 296 302 ltrage de paquets 282 logiciel de pare-feu 282 proxy (passerelle) 283 racine interne 290296 redirecteur vers Internet 285290 trac DNS traversant en totalit un pare-feu 285 message DNS dpassant 512 octets 257 pare-feu Internet bloquant les requtes de serveur de noms 393 parente (zone) enregistrement de serveurs de noms 179 signature 320 partiel (serveur-esclave) 177 enregistrement 180 passwd (chier) 276 performance avec DNSSEC 314 Perl (module Net::DNS) 270, 442446 version Perl de check_soa 444
[12/01/08]
DNS et Bind
582
primaire (serveur) (suite) rechargement aprs mise jour des donnes de zone 129 recherche des serveurs cache de la zone 176 restriction de transfert de zone pour les serveurs primaires accessibles de lInternet 274 stockage des chiers de zone dans des rpertoires spars 135 TTL 181 utilisant un redirecteur 229 primaire (serveur-matre) 24 chiers de donnes 25 primaire (sufxe DNS) 115 rglage pour un client 115 prive (cl) 303 argument pour un changement priodique de la cl 325 dnition pour dnssec-signzone 319 KSK 315 signature des enregistrements de mise jour dynamique 322 stockage dans un enregistrement RRSIG 306 privilges moindres 274276 pro (domaine professionnel) 19 processus (limitation de lutilisation de la mmoire) 246 professionnel (domaine pro) 19 programmes dexemple de louvrage xvii Proprits de Connexion au rseau local (Windows XP) 112 protocole (champ de lenregistrement DNSKEY) 305 provide-ixfr (sous-structure) 228 proxy (passerelle) 283 avec blocage du trac DNS 285 ps (commande pour trouver le PID du serveur de noms) 128 pstree (programme) 128 PTR (enregistrement pointeur) 57 client DNS Windows XP 116 correspondance adresse/nom 467468 incapacit de trouver ladresse dun serveur 346 ip6.arpa (domaines) 258 mise jour dhte dans les donnes de zone 129
Index
oubli de cration dans les chiers de zone 387 resolver obtenant un CNAME sur une recherche de PTR 402 routeur connectant vers dautres rseaux 194 publication (serveur de) 276 coute dadresse IP dinterface, chier named.conf 280 publique (cl) 303 autorise signer des donnes de zone (enregistrement DS) 310 dans des enregistrements DNSKEY 305, 306 publique (cryptographie cl) 302 gnration dune paire de cls 316 signature lectronique 303
Q
qr (drapeau de dig) 350 QUERY (code dopration) 339 query logging 382 querylog (commande) ndc, programme 123 rndc, programme 126 query-source (sous-structure) 253, 284 querytype (option de nslookup) 335 Question (objet de Net::DNS) 443 question (section dun message DNS) 340 quit (commande de ndc) 123
R
racine (indications) mise jour 134 omission de donnes 391 serveur cache simple 176 racine (serveurs de la zone et donnes indicatives) 5962 racine (serveurs de noms) interne 290296 conguration des autres serveurs 293 courrier des htes internes vers lInternet 294 courrier vers des htes spciques de lInternet 295
[12/01/08]
DNS et Bind
Index
db.root (chier) 292 dlgation in-addr.arpa 291 dlgation pour la recherche directe 291 emplacement 290 problmes 295 utilisation par les autres serveurs internes 294 mise en place lors darrts de longue dure 186 rcursivit 240 rsolution 26 rafrachissement (intervalle) 221 rduction de la frquence de transfert 244 rafrachissement (valeur dun enregistrement SOA) 182 rdist (outil) 174 option special 175 recherche (algorithme de resolver) 368 recherche (liste) 97 application par dig 349 BIND (versions 4.8.3 4.9) 97 BIND 4.8.3 (resolver) 98 BIND 4.9 et suivants 98 changement dans les versions de BIND 400 comportement de sendmail 108 nslookup 330 dsactiver avec 334 dsactiver pour 340 style BIND 4.8.3 partir du sufxe DNS principal 115 recherche positive BIND 8 (dbogage de niveau 1) 361 364 BIND 9 (dbogage de niveau 1) 364 recherche trop lente 407 recollage (enregistrement) 198 recong (commande de rndc) 126 recursing (commande de rndc) 127 rcursion 28 mise hors service 276 requtes de nslookup 340 rd (drapeau de dig) 350 serveur de noms non rcursif 240 rcursive (requte) 28 choix parmi les serveurs faisant autorit 29
583
rponse des serveurs 276 serveur de rsolution 277 serveurs non rcursifs et redirecteurs 241 transmission dun serveur de noms un redirecteur 229 recursive-clients (sous-structure) 247 redirect (option dun enregistrement pour SPF) 94 redirecteur 230, 451452 argument pour ne pas chaner les redirecteurs 230 initialiser un serveur itratif comme redirecteur 240 Internet 285290 problmes de redirection 288 redirection de requte 230 slection par les serveurs de noms 232 (voir aussi structure et forwarders) redirection 229232 problmes 287 serveurs de noms restreints au mode de redirection simple 230 zone redirige 231 redirection de courriel 86 redirection de mise jour 215 gestion de la redirection 218 signature TSIG 219 redirection de zone xiii requtes spciques non retransmises 231 utilisation 289 refresh (commande de rndc) 126 refuge de conance 312 refuse (requte) 346 registrar (bureau denregistrement) 39, 42 choix 44 politique et procdures denregistrement 47 registry (responsable de domaine suprieur) 39 RIR 47 relatif (chemin) 4 reload (commande) message syslog 149 ndc, programme 122 rndc, programme 126, 129
[12/01/08]
DNS et Bind
584
rponse afchage avec nslookup 338 analyse 430442 contenue dans un message DNS 339 rponse incohrente ou fausse 406 Response from unexpected source 399 rponse (section dun message DNS) 340 request-ixfr (sous-structure) 229 requte afchage avec nslookup 338 change requte/rponse pour une recherche 155157 liste daccs 36 messages DNS 339 rcursive et itrative 28 refuse 346 restrictions de scurit 271 restriction de toute requte 272 retransmission un redirecteur 230 test du volume reu par chaque serveur 171 type IXFR 226 _res (structure) 423 res_init (fonction) 420 res_mkquery (fonction) 420 res_query (fonction) 421 res_search (fonction) 422 res_send (fonction) 422 rseau balayage des interfaces 249 choix du nombre de serveurs 167 classes 46 dnition de prfrences par le resolver 103 identiant 46 noms et adresse 467468 organisme proposant une infrastructure 17 panne (gestion) 186187 interruption longue (jours) 186 interruption trs longue (semaines) 186 panne (prvention) 183186 perte de connectivit Internet 391 397 ressource duplique 235 serveur lcoute sur une adresse IP dinterface 279 test denregistrement 4547
Index
rsolution 2632 cache 32 correspondance adresse/nom 30 itrative 28, 29 processus complet 30 recherche trop longue 407 rcursive 28 serveurs de la racine 26 rsolution (serveur de) 277 coute sur ladresse de bouclage (chier named.conf) 280 resolv.conf (chier) 96, 538541 commentaires 105 erreur de syntaxe 397 exemple de conguration avec un serveur local 107 de resolver 106 no response from server (message) 346 omettre les serveurs itratifs 241 serveur de rsolution lcoute sur ladresse de bouclage 281 zro ou un serveur dni 184 resolv.h (chier) 423 resolver 4, 25, 30, 95107 bibliothque (fonctions) 419427 structure _res 423 classement dadresse 238 conguration 96105 commentaires 105 dlais de BIND 4.9 8.2 102 directives de la version 4.9 105 liste de recherche 97 nameserver, directive 100102 nom du domaine local 96 options, directive 103 search, directive 99 sortlist, directive 103 muler par nslookup 329 erreur produisant lutilisation de la table dhtes 184 exemple de conguration 105107 resolver simple 105 serveur de noms local 106 problmes de transition de version de BIND 400 rception de CNAME au lieu de PTR 402 recherche (algorithme) 368 requte (message) 340
[12/01/08]
DNS et Bind
Index
resolver (suite) resolver interne interrogeant un serveur 278 serveur de noms 277 serveur de noms non rcursif 241 structures pour un resolver BIND 538541 Windows XP 112117 cache 116 conguration avance 114 enregistrement automatique 116 ngative (rponse) 115 retransmission(algorithme) 115 sous-rseau prioritaire 117 sufxes DNS 115 resolver (fonction ns_update( )) 215 restart (commande de ndc) 122 retour-chariot et saut de ligne (Windows) 250 retransfer (commande de rndc) 126 return (action) 112 rfc2308-type1 (sous-structure) 250 .rhosts (chier) ajout du nom de domaine au nom dhte 110 saisie du nom canonique 56 RIPE Network Coordination Centre 47 RIR (Regional Internet Registry) 47 enregistrement dune zone inaddr.arpa 48 rlogin (commande) 107 rlogin (chec du contrle daccs) 407 rndc (programme) 120, 123127 cls de chiffrement pour lauthentication utilisateur 123 freeze, commande 227 nouvelles commandes (BIND 9.3.2) 126 -p, option 126 pilotage de plusieurs serveurs 125 reload, commande 129 rndc.conf, chier 124 rndc-confgen, commande 124 -s, option 125 stop, commande 130 thaw, commande 227 trace, commande 140 rotate (option de resolver) 104
585
routage de messagerie et bouclage 86 algorithme des MX 90 route (commande) 184 routeur par dfaut (adresse IP dans le chier de conguration) 185 RP (enregistrement Responsible Person) 131 exemples de RP et enregistrements correspondants 132 RPC (Remote Procedure Call) et identication sur serveur NFS 108 RR (resource records) 16, 51, 468473, 489499 A (adresse) 55 AFSDB 468 ajout dhte des chiers de zone 128 ajout/suppression dans une zone par mise jour dynamique 215 alias 55 CLASS (champ) 498 classes 16 CNAME 55 dans la partie des donnes 152 donnes 504 DS 310312 enregistrement DNSKEY 305306 DNSSEC 313 chiers de donnes 25 gnration difcile partir de /etc/ hosts 133 LOC 469 MX 8688 nom de domaine dans un enregistrement NS 198 non existant 344 NS 53 ns_parserr (fonction) 430 NSEC 308310 objet de Net::DNS 443 ordre dans un chier de zone 51 PTR 57 recherche de diffrents types avec nslookup 335 re-signature denregistrement DNSSEC avec dnssec-signzone 319 rotation sur un serveur de noms 235 RR classiques 131
[12/01/08]
DNS et Bind
586
RR (resource records) (suite) rrset-order (sous-structure) 237 RRSIG 306308 SOA 53 SRV 470473 suppression dhte dans les chiers de zone 129 TSIG 266 TTL ajustement 249 modication 180182 types couvert par la structure updatepolicy 220 RRset ajout/suppression par mise jour dynamique 215 cl prive pour signature lectronique stocke 306 signature et TTL dorigine 307 rrset-order (sous-structure) 236 classer les enregistrements renvoys par un serveur 237 RRSIG (enregistrement) 306308, 312, 314 algorithme, champ 307 champs des dates dchance et dorigine de la signature 307 didentiant de cl, champ 307 des types couverts, champ 307 du nombre de termes, champ 307 du TTL dorigine, champ 307 expiration 327 pour enregistrement DS 320 signataire, champ 308 signature, champ 308 RSA (algorithme cryptographique) 303 RSA/MD5 (algorithme cryptographique) 306 RSA/SHA-1 (algorithme cryptographique) 306 rsh (commande) 107 rsh (chec contrle daccs) 407 rsync (outil) 174 RTT (Round-Trip Time) 29 slection de serveur 239 ruserok( ) (appel systme) 97
Index
S
saut de ligne 250 search (directive du resolver BIND) 99 extrait de conguration 105 utilisation avec directive domain de BIND 4.9 105 secondaire (entres dans les chiers de zone) 136 second-niveau (domaine) 16 scurit 265327 BIND (dernire version) 36 cryptographie cl publique et signature lectronique 303 DNS et pare-feu Internet 282302 espace de noms fractionn 296 302 racine interne 290296 redirecteur Internet 285290 trac DNS libre 285 DNSSEC 302327 emplacement des chiers 138 ENUM 476 hte pour serveur de noms 169 serveur de noms 270282 deux serveurs en un 277282 excution de BIND avec moins de privilges 274276 protection contre les attaques du rseau 153 restriction des requtes 271 sparation des fonctions 276279 transfert de zone non autoris 272274 version de BIND 270271 TSIG 266270 sendmail ajout dalias au chier sendmail.cf 92 boucle de routage du courriel, message derreur 91 comportement selon la conguration du resolver 108 destination avec enregistrement A mais sans enregistrement MX 87 enregistrements A vs. enregistrements CNAME 56 rception de courrier Internet sans modication de conguration de sendmail 294 recherche de tout enregistrement (ANY) 160
[12/01/08]
DNS et Bind
Index
requte de CNAME pour canonisation dadresse lectronique 131 sendmail.cf (chier) ajout du nom du domaine aux noms dhte 110 modier la classe w ou le chier de classe w 210 SEP (drapeau Secure Entry Point dun enregistrement DNSKEY) 305, 315 serial-queries (sous-structure) 248 serial-query-rate options (sous-structure) 248 srie (numro) incrmentation aprs modication des chiers de zone 129 mise jour dans les chiers de zone 128 dynamique 217 modication lors de restauration de zone 153 oubli de mise jour 383385 rinitialisation 130 zones gres par Microsoft DNS Server et intgres dans Active Directory 251 server (commande) 336 server (structure) 526, 534 lintrieur dune structure view 233 association dun serveur et dune cl 125 edns (sous-structure) 256 keys (sous-structure) 269 provide-ixfr (sous-structure) 228 request-ixfr (sous-structure) 229 support-ixfr (sous-structure) 228 transfer-format (sous-structure) 245 transfers (sous-structure) 242 serveur cache 176 absence dofcialisation 180 serveur de noms xii, 4, 2125 ajout 174178 cache simple 176 esclave partiel 177 matre primaire et esclave 174 autorit choix de serveur 29 connexion commute la demande 466 sur une zone 21
[12/01/08]
587
bibliothque 425430 blackhole (structure) 242 bogus (directive) 241 cache 32 TTL 34 changement de serveur dans nslookup 336 choix de lhte dhbergement 168 facteurs considrer 168 choix du nombre 167 guide 167 classement dadresses 238239 client (resolver) 25 compatibilit avec les resolvers et les autres serveurs 250 conguration pour une utilisation de racine interne 293 dclaration dans le resolver de Windows XP 114 dlgation de sous-domaine 24 donnes de zone 25 chec au dmarrage suite linhibition de la somme de contrle UDP 403 EDNS0 (prise en charge) 256 muler par nslookup 329 valuation de la charge 169 ajout de serveur 173 charge du processus named sur un serveur 170 dtermination de la source des requtes 172 statistiques sur serveur charg 170 statistiques sur serveur peu charg 170 utilisation de la mmoire 170 volume de requtes 171 exposition lInternet et excution dune version rcente de BIND 285 externe faisant autorit 448450 forward-rst (mode) 229 foward-only (mode) 230 initialisation 4984 donnes de zone 5162 zones 49 install comme redirecteur 229 journalisation 138148 canaux 143144 canaux et catgories 138 catgories 144148 structure logging 141
DNS et Bind
588
serveur de noms (suite) maintenance prventive 148163 messages syslog classiques 148 155 statistiques de BIND 155164 message de requte envoy par nslookup 340342 mise jour des donnes de zone 128 134 ajout et suppression dhte 128 crer des donnes de zone partir dune table dhte 132134 indications sur la racine 134 nouveau numro de srie 130 numro de srie dans le SOA 129 RP (enregistrement) 131 TXT (enregistrement) 131 modication de lemplacement des chiers 138 non-rcursif 241 ofcialisation 178180 partielle 178 serveur cache 180 organisation des chiers 134138 inclusions dautres chiers de zone 137 modication de lorigine 137 plusieurs rpertoires 135137 pilotage 119128 mdc et controls (BIND 9) 123 127 ndc et controls (BIND 8) 120123 utilisation de signaux 127 problmes de transition lors du changement de version de BIND 400 redirecteur (slection) 232 rglages 242250 intervalles de maintenance 248 limitation des ressources utilises 246248 transferts de zone 242246 TTL 249 rsolution 2632 itrative 29 rcursive 28 scurit 270282 deux serveurs en un 277282 excuter BIND avec moins de privilges 274276
Index
restriction de requte 271 sparation des fonctions 276279 transfert de zone non autoris 272274 version de BIND 270271 servant de racine interne et de serveur faisant autorit 293 serveurs prfrentiels par rseau 239 240 service rendu par le FAI 38 types de serveurs 24 zone source (BIND 8 et 9) 209 serveur dfectueux (limination) 241 serveur faisant autorit sur une zone (serveur itratif) 241 serveur matre secondaire 24 service (accs refus) 408 service (canal syslog) 143 set (modication des options de nslookup) 332 set norecurse et set nosearch (commandes de nslookup) 340 set type=any (commande de nslookup) 344 setrlimit (appel systme) 149 shell (programmation avec nslookup ou dig) 411417 signataire (champ dun enregistrement RRSIG) 308 signature 304 champ dun enregistrement RRSIG 308 date dorigine dun enregistrement RRSIG324 expiration dun enregistrement RRSIG 324 date dorigine 307 cryptographie avec TSIG 219 zone 315321 envoi des cls pour signature 319 gnration dune paire de cls 316 zone parente 320 signature lectronique 304 cl prive sauvegarde dans un enregistrement RRSIG 306 TSIG 219 signaux (pilotage de serveur de noms) 127 sig-validity-interval (sous-structure) 324
[12/01/08]
DNS et Bind
Index
Simple Mail Transfer Protocol (SMTP) 86 site web (domaine de niveau suprieur) 40 size (sous-structure) (canal chier) 143 SMTP (Simple Mail Transfer Protocol) 86 SOA (enregistrement start of authority) absence denregistrement NS pour le serveur MNAME 402 adresse dorigine utilise par un esclave 254 ajout aux chiers de zone 53 champ MNAME (serveur primaire dune zone) 215 check_soa (exemple de programme) version en C 431442 version en Perl 444 courriel du responsable de la zone 40 limiter le nombre de requtes sur un serveur 248 modication des valeurs 182 frquence de rafrachissement 182 numro de srie 129 sous-domaine dune zone parente 193 vrication de dlgation 207 zone in-addr.arpa correspondant un rseau du FAI 48 socket (domaine Unix) 120, 123 somme de contrle inhibe dans UDP 403 sortlist (directive dun resolver BIND) 103 sortlist (sous-structure) 238 source /etc/hosts sur chaque hte 185 sous-domaine 4, 15, 189211 aide la dcision 190 attribution des noms 191 conventions 191 choix du nombre 190 cration 192201 dans une zone parente 192 dcision pour une dlgation 192 dlgation 193197 cycle de vie du domaine parent 211 dun domaine cach 297 gnrique suprieur 43 dlgation 24 gestion 208209 incorrecte 394397 oubli 393 test laide de host 206 dlgu 21 sign ou non sign 312
[12/01/08]
589
des domaines in-addr.arpa 201206 dlimit au niveau de loctet 201 non dlimit au niveau de loctet 202208 gestion de la transition 209211 modier lorigine dans un chier de zone 137 nom du domaine 15 rgles de division dun domaine 190 responsabilit 6 sous-rseau 46 dnition de prfrences pour le resolver 103 priorits avec le resolver de Windows XP 117 recherche du nom partir dune adresse IP 468 sous-rseau (dcoupage) dlimit au niveau de loctet 201 non dlimit au niveau de loctet 202 206 spcl.DOMAIN (chier) 133 SPF (Sender Policy Framework) xiii, 92 sponsored TLD (sTLD) 18 SRI (Stanford Research Institute) 3 SRV (enregistrement) 470473 champs 471 Stanford Research Institute (SRI) 3 start (commande de ndc) 122 statistics-interval (sous-structure) 171, 249 statistiques BIND (interprtation) 155164 change requte/rponse 155157 utilisation des statistiques de BIND 164 stats (commande) ndc, programme 122 rndc, programme 126, 157 status (commande) ndc, programme 122 rndc, programme 127 stderr (canal de journalisation) 144 sTLD (sponsored TLD) 18 stop (commande) ndc, programme 122 rndc, programme 126, 130 stub (resolver) 26 stub (zone) 209 zone pour la correspondance inverse 290
DNS et Bind
590
SUCCESS (condition) 112 sufxe DNS principal de cet ordinateur 483 sufxe spcique une connexion 115 utilis dans le resolver de Windows XP 115 support-ixfr (sous-structure) 228 symtrique (algorithme de chiffrement) 303 syslog catgorie par dfaut 141 conguration dun canal 139 information de message NOTIFY 223 messages courants 148155 bad owner name 150 CNAME dans la partie donnes dun enregistrement de ressource 152 dmarrage dun second serveur sans larrt du premier 148 donnes hors zone 152 erreur de classe 153 esclave incapable de joindre un matre pour un transfert 151 instantan de statistiques 150 lame server 154 Malformed response 152 modier le numro de srie et grer la copie des chiers de zone 153 problme avec les donnes de la zone 150 rechargement dun serveur de noms 149 requtes reues par un serveur de noms 155 Response from unexpected source 153 Too many open les 149 messages de gravit info ou plus 143 niveaux de gravit 139 redirection des canaux de journalisation 143 syslog, messages courants, dmarrage de named 148 syslogd (option -a) 275 systme (modication du chemin des chiers) 138
Index
systme dexploitation compilation du code source de BIND 36 homognit des serveurs de noms 169 limiter lutilisation de la mmoire par le serveur de noms 246 systme de chiers (base de donnes du DNS) 4 systme de chiers Unix compar la base de donnes du DNS 4
T
tches 454 taille dun segment de donnes (modier la limite par dfaut) 246 TCP (coute des messages de contrle sur les ports) 120 TCP/IP (Transmission Control Protocol/ Internet Protocol) 1 classe de rseau 16 telnet (commande) 107 terme (champ dun enregistrement RRSIG) 307 test du besoin de transfert de zone 221 thaw (commande de rndc) 126, 227 Too many open les (erreur) 402 Too many open les (message syslog) 149 top (utilitaire) 170 topology (caractristique de BIND 8) 239 tourniquet 55 tourniquet (rpartition de charge) 117, 235238 rrset-order (sous-structure) 236 utilisation de plusieurs CNAME 236 trace (commande) ndc, programme 123 rndc, programme 126, 140 traceroute 393 traitement du courriel 86 transfer-format (sous-structure) 245 transfers (sous-structure) 242 transfer-source (sous-structure) 254 transfer-source-v6 (sous-structure) 255 transfert (format many-answers) 229 travel (domaine) 19 trusted-keys (structure) 311, 314, 320, 527, 534
[12/01/08]
DNS et Bind
Index
TRYAGAIN (condition) 112 TSIG (Transaction SIGnatures) xiii conguration 267268 cls 267 synchronisation temporelle 268 enregistrement 266 erreurs 404 fonction de hachage non inversible 266 GSS-TSIG 482 limitations 302 signature de mise jour dynamique 219 des requtes de transfert de zone 273 update-policy zone (sous-structure) (BIND 9) 219 TTL (Time To Live) 34, 249 augmenter pour les zones stables 183 compromis performance/cohrence 34 dorigine dans les enregistrements des RRset signs 307 enregistrements du chiers dindication sur la racine 62 explicite, dni sur les enregistrements NS 180 modication 180182 non initialis 403 par dfaut pour une zone 52 Windows XP (cache du resolver) 116 TTL de dpart (enregistrement RRSIG) 307 TXT (enregistrement) association avec enregistrement RP 131 mise jour dans chiers de zone 131 SPF 9294 directives standard 93 type couvert (champ des enregistrements RRSIG) 307 type de nom (structure update-policy) 219 types (champ de la structure updatepolicy) 220
591
uk (domaine) 19 Unassociated entries (dump) 382 UNAVAIL (condition) 111 Unicode 477 conversion ACE 478 Unix BIND inclus 36 commandes rseau et liste de recherche 97 squence de n de ligne 250 socket du domaine Unix 120, 123 Unix epoch et conversion de date 164 unspecied error (nslookup) 347, 374 update-policy (sous-structure) 218, 219, 269 URL page whois des RIR 47 site web des TLD nationaux 40 us (domaine) 19, 43 interprtation des noms de domaine (exemple) 20 use-id-pool (sous-structure) 277
V
vrication 304 version.bind (requte) 270 versions (sous-structure) (canal chier) 143 vide (nom " ") 4 view (commande de nslookup) 344 view (structure) 232, 534537 match-clients (sous-structure) 233 match-destinations (sous-structure) 233 match-recursive-only (sous-structure) 233 types de sous-structure 233 vue explicite dans une structure zone 235 vues 232235 named.conf complet (exemple) 234 serveur de rsolution et de publication 281 utilisation sur une machine bastion 301 vulnrabilit des versions de BIND 270
U
UDP datagramme 256 message DNS 312 somme de contrle inhibe 403
[12/01/08]
DNS et Bind
592
Index
db.movie.edu.signed (exemple) 317 enregistrements appartenant une autre zone 152 de ressource 51 SOA 53 erreur de syntaxe 388390 espace de noms cach 296 exemple complet 57 mise jour 128134 ajout et suppression dhtes 128 crer des chiers de zone partir dune table dhte 132134 dynamique 217 enregistrements RP 131 TXT 131 indications sur la racine 134 nouveau numro de srie 130 numro de srie du SOA 129 mise en uvre, enregistrement A et alias 54 NS 53 PTR 57 nouveau sous-domaine dlgu 193 organisation 134138 inclusion de chiers 137 modication de lorigine 137 plusieurs rpertoires 135137 oubli dajout denregistrement PTR 387 oubli du point en n de nom de domaine 390 racine (chier db.root) 186 TTL (modication sur les enregistrements) 180182 vues interne et externe 234 zone racine (db.root) 292 zone (structure) 527 allow-query (sous-structure) 272 allow-transfer (sous-structure) 273 allow-update ou update-policy (sousstructures) 218 allow-update-forwarding (sousstructure) 218 also-notify (sous-structure) 225 BIND 8 537538 contrle des transferts de zone 273 dans une structure view 233 dialup (sous-structure) 466 inhibition de NOTIFY 224
W
warning (gravit) 139 whois 41 contact administratif et technique de zone 48 page web des RIR 47 recherche du bon serveur whois 41 WINCH (signal) 128 Windows (systme dexploitation) 480 485 mise jour dynamique scurise 482 problmes entre Active Directory et BIND 482 squence de n de ligne 250 utilisation de la mise jour dynamique 480482 Windows 2000 (livre blanc DNS) 115 Windows XP (resolver) 112117 algorithme de retransmission 115 cache 116 conguration avance 114 enregistrement automatique 116 gestion des rponses ngatives 115 priorit des sous-rseaux 117 sufxes DNS 115 WINS (Windows Internet Name Service) 10, 116, 478479 chec de transfert de zone sur enregistrement propritaire 401
X
X Windows et environnements drivs 170 X0.hosts (ajout du domaine aux noms dhte) 110
Y
ypcat (afchage base des htes) 372
Z
zone (chier de donnes) 25, 51 boucles entre serveurs esclaves 176 calcul IXFR partir des diffrences entre versions 226 commentaires et lignes vides 52
[12/01/08]
DNS et Bind
Index
ixfr-base 228 ixfr-from-differences (sous-structure) 227 masters (sous-structure) 224, 251 dnition de cl TSIG 269 dnition du port 253 max-refresh-time (sous-structure) 245 max-transfer-idle-in (sous-structure) 244 max-transfer-idle-out (sous-structure) 244 max-transfer-time-in (sous-structure) 244 max-transfer-time-out (sous-structure) 244 min-refresh-time (sous-structure) 245 multi-master (sous-structure) 251 notify-source (sous-structure) 255 transfer-source (sous-structure) 254 transfer-source-v6 (sous-structure) 255 update-policy (sous-structure) 219 zones normales avec sous-structure forwarders 231 zone (transferts) 24, 242246 la suite dannonce NOTIFY 222 la suite de requte AXFR 160 contrle de ladresse source 254 dclenchement par NOTIFY 175 dnition dune cl TSIG 269 dig, utiliser 351 chec sur enregistrement propritaire WINS 401 esclave incapable de contacter le matre 151 viter les transferts non autoriss 272 274 exemple complexe 223 format many-answers plus efcace 245 incrmental xiii, 37, 225229 interrogation par un esclave pour dterminer le besoin 221 limiter la dure dinactivit 244 la dure dun transfert sortant 244 la frquence 244 le nombre total de requtes 243 servies simultanment 243 les requtes par serveur 242
593
liste daccs 36 named-xfer, utiliser 372374 nslookup 330 utiliser 342 nslookup ou dig, utiliser 374 zone ca (Canada) 23 zone esclave (enregistrement des chiers de zone dans des rpertoires spars) 135 zone non signe et dlgation 312 zones xii, 7, 2125 annonce de modication (NOTIFY) 221225 arguments pour dlguer 191 comparaison domaine/zone 21 cration des donnes de zone 5162 adresse de bouclage 59 chiers de zone 51, 5359 indications sur la racine 5962 TTL par dfaut de la zone 52 dlgation 9 vers sous-domaine non sign 312 enregistrement 47 du nom de domaine 308 SOA (courriel du contact technique) 40 exemple (Universit du Cinma) 49 niveau suprieur (serveurs faisant autorit) 26 pointeurs vers serveurs faisant autorit pour dlgation de sousdomaine 24 serveur faisant autorit 21 signature 315322 cration de la paire de cls 316 envoi des cls pour signature 319 zone parente 320 types de cl 315 types de serveurs de noms 24 zone source 209 zones rediriges 231, 289 ZSK (Zone-Signing Key) 315, 317 re-signature de zone avec une nouvelle cl 327 signature de zone avec une nouvelle cl 326
[12/01/08]
DNS et Bind
[12/01/08]
DNS et Bind
propos du traducteur
Giles Carr est ignieur en informatique dans lenseignement suprieur. Il est joignable pour tout conseil giles.carre@carre.name.
[12/01/08]
DNS et Bind
Colophon
Linsecte en page de la couverture de DNS et BIND est une sauterelle. Les sauterelles peuplent toutes les rgions terrestres. Parmi les 5 000 espces que lon peut dnombrer, une centaine est prsente en Amrique du nord. Elles sont brun-verdtre et mesurent de un dix centimtres, pour une envergure pouvant atteindre quinze centimtres. Leur corps est form de trois parties : la tte, le thorax et labdomen. Elles ont trois paires de pattes et deux paires dailes. Les mles frottent les artes de leurs pattes postrieures le long dune nervure sur leurs ailes antrieures pour produire un grsillement caractristique, ressemblant au frottement dun archet sur une corde. Les invasions de sauterelles sont une calamit pour les cultures. Une sauterelle peut manger jusqu 30 mg par jour. Cinquante sauterelles au mtre carr peuvent consommer autant quune vache par demi-hectare. Les sauterelles ne se contentent pas de manger les feuilles mais abment galement les plantes en les attaquants en des points vitaux. Edie Freedman a conu la couverture partir dune gravure du Picturial Archive. Marcia Friedman a cre la couverture de la traduction franaise. Louvrage a t relu par Franois Cerbelle. La mise en page de la version franaise a t ralise par Style Informatique. Les fontes du texte sont Le Monde Livre, Le monde Sans et TheSansMono Condensed.
XIXe
sicle du Dover
[12/01/08]
DNS et Bind