|
|
S'il n'y a pas de solution c'est qu'il n'y a pas de problème! |
|
|
En guise d'introduction
Lors du passage chez Nerim, Linux-sottises a obtenu un ip fixe, et de fil en aiguille, j'ai décidé d'acheter le nom de domaine linux-sottises.net chez Gandi, et comme Gandi ne proposait que d'héberger un DNS secondaire, je me suis lancé dans l'installation de bind8 pour gérer directement le DNS primaire. Je n'ai pas trouvé ça "immédiat" (la syntaxe des fichiers de configuration de bind fait quand même un peu "âge de pierre"), d'autre part le fonctionnement des DNS semble finalement "assez peu connu", enfin quelques copains de Linux-sottises m'ont "mis la pression" pour écrire un mode d'emploi de bind dans le style du "reste" de Linux-sottises, et bien je m'y suis mis, et voilà le résultat.
Ce document s'inspire naturellement largement du DNS-HOWTO, qui est
utile mais que je trouve un peu aride et obscur par endroits. J'ai aussi utilisé le livre DNS et Bind de Paul Albitz & Cricket Liu chez O'Reilly. Cette page n'a évidemment
pas l'ambition de remplacer ce bouquin, mais devrait faciliter la mise en place d'un DNS primaire "en comprenant à peu près ce qu'on fait". Arriverai-je à faire mieux que le
Howto, c'est à vous de le dire!
Quelques mots sur le fonctionnement des DNS Quelques mots pour expliquer brièvement (et donc nécessairement de manière incomplète, voire un peu erronée...) le fonctionnement de la résolution de noms: que se passe-t-il quand vous rentrez www.domain.com dans votre navigateur préféré? Et bien votre navigateur doit trouver quelle est l'adresse IP qui correspond au nom www.domain.com, car vous savez bien que l'ensemble des machines sur Internet sont repérées par leur adresse IP. Un programme qui cherche à trouver l'adresse IP à partir d'un nom (ou l'inverse, un nom à partir d'un IP) s'appelle un resolver. L'ensemble de ces informations "nom-adresse" est "distribué" sur Internet sur des serveurs DNS (Domain Name Server). Il n'existe nulle part regroupé l'ensemble de ces informations. Commence alors une sorte de chasse aux trésors dans laquelle plusieurs machines font donner des indices au resolver pour trouver l'adresse de www.domain.com Le resolver va d'abord s'adresser au "bon dieu" pour une première indication, il lui pose la question: qui gère les noms qui se terminent par .com? Le "bon dieu" en question, ce sont les serveurs DNS "root" dont les adresses figurent dans /var/named/root.hint (jetez un coup d'oeil à ce fichier, j'indiquerai plus loin comment le tenir à jour) L'un des serveurs root va indiquer au resolver quels sont les DNS qui gèrent les domaines qui se terminent en .com; Ces serveurs là s'appellent des GTLD (Generic Top Level Domains). Le resolver va ensuite s'adresser à l'un d'eux pour lui demander: qui gère les domaines qui se terminent en domain.com? Une fois les adresses de ces serveurs connues, le resolver va s'adresser à l'un d'eux pour lui demander: quelle est l'adresse de www.domain.com? Et là, le resolver a fini son travail, il a obtenu l'adresse qu'il cherchait. Naturellement, il est facile d'imaginer le traffic monstrueux qui serait généré si chaque clic sur votre navigateur déclenchait toutes ces opérations!! Pour pallier cette question de traffic, chaque serveur DNS a un système de cache dans lequel il pioche les adresses qu'il a déjà cherchées... Oui mais si l'adresse a changé?? Et bien chaque DNS, en même temps qu'il donne ses informations (que cela soit un serveur root, gtld ou DNS "final") donne une durée de validité de ces informations. Quand la durée est dépassée, une nouvelle requête n'est pas prise dans le cache, mais provoque une réintérrogation sur les données dont la validité est périmée. Chaque responsable de DNS doit choisir la durée de validité (TTL=Time To Live) des données qu'il envoie: plus elle est courte, plus son serveur sera sollicité et plus le traffic généré sera grand, plus elle est longue, plus longue sera la mise à jour "effective" de ses données.
Exemple pratique
puis
(on va utiliser le serveur root a.root-servers.net). Entrez:
(avec le . à la fin, cela signifie qui gère la branche .net?) . Arrive la liste des serveurs GTLD qui gèrent les domaines en .net; Choississez en un, par exemple entrez:
Demandez lui qui gère linux-sottises.net, entrez (n'oubliez pas le . à la fin):
vous allez avoir l'info des serveurs qui gèrent linux-sottises.net. Vous devriez avoir 3 serveurs: yoda.linux-sottises.net, ns6.gandi.net et metroid.nerim.net. Choississez en un, par exemple entrez:
demandez lui maintenant quelle est l'adresse de www.linux-sottises.net (avec ou sans point à la fin, à ce niveau c'est identique):
Vous obtenez l'adresse 62.4.22.49 Configuration Tout d'abord, tout ce qui suit concerne la version 8.2.3 de bind. Installer le soit à partir des paquetages de votre distribution favorite soit depuis le site d'Internet Software Consortium.
Vous êtes propriétaire d'un nom de domaine, vous avez un IP fixe ,
et vous avez choisi un nom pour votre serveur DNS. Vous connaissez aussi le nom de la machine qui vous servira de DNS secondaire.
Il y a deux types de fichiers de configuration: le fichier de configuration générale de bind (en général /etc/named.conf) et les fichiers de description de "zones" (placés dans /var/named) . Quand vous installez bind, vous avez aussi un fichier /var/named/root.hint (ou /var/named.root si vous utilisez un paquetage d'une distribution) qui contient les adresses des serveurs root (ou vous le récupérez par ftp à ftp.rs.internic.net, répertoire /domain, fichier named.root) Le fichier /etc/named.conf comporte des sections qui décrivent les options utilisées, le logging et la déclaration des zones dont on est maitre. Un exemple étant plus parlant, téléchargez ou visualisez celui que j'utilise, et commentons le. La partie entre { }; contient toutes les options.
Voilà pour les options. Faites man named.conf pour plus d'options et plus d'informations. La partie logging que j'utilise est simple et standard, reportez vous aussi à man named.conf pour plus d'informations. Figurent ensuite les caractéristiques générales des zones de votre serveur. Le premier ordre "zone" concerne la racine des serveurs de nom "." et fait appel au fichier root.hint (tous les fichiers se trouvent par défaut dans le répertoire indiqué dans l'ordre "directory"). IN indique une classe Internet (en fait c'est la seule classe réellement utilisée). Vous pouvez voir ici mon fichier root.hint Viennent ensuite les caractéristiques de la zone "linux-sottises.net" dont bind est maître
La zone suivante est une zone "reverse" (ip vers nom) et concerne la boucle locale (relation de la machine avec elle même). La partie du nom xxx.xxx avant .in-addr.arpa pourra être utilisée dans le fichier de la zone lui même. Ainsi 0.0.127.in-addr.arpa permettra de décrire les adresses de la forme 127.0.0.x Remarque. Si vous enlevez la zone master du fichier de configuration et gardez la partie 0.0.127.in-addr.arpa et le fichier correspondant (voir plus loin), vous disposez d'un serveur de nom sur votre machine qui vous rendra bien service si les dns de votre FAI sont en rade! J'ai ensuite configuré la zone reverse pour mon réseau local. 0.168.192.in-addr.arpa permet de décrire les adresses locales de la forme 192.168.0.x. Passons aux fichiers de zone. Téléchargez ou visualisez ici le fichier linux-sottises.net que je stocke dans /var/named/zone comme indiqué dans le fichier de configuration de bind.
Enfin pour terminer les fichiers de configuration, il reste le fichier reverse de la boucle locale zone/127.0.0 et le fichier reverse de réseau local (non obligatoire!!) zone/192.168.0 Un nouveau type d'enregistrement y apparait, C'est PTR pour pointeur. Le 1 en début de ligne dans le reverse de la boucle locale indique que l'on fait référence à 127.0.0."1", mais vous aviez saisi. SI vous souhaitez voir ce que donne ces enregistrements "en ligne", lancez:
sans oublier le dernier point Pour votre propre serveur, il ne vous reste plus qu'à lancer le daemon named depuis votre script d'initialisation (ou en suivant les "règles" de votre distribution)
Si vous voulez vérifier la configuration de votre DNS, plusieurs outils
en ligne existent,
ils m'ont été suggérés par Jérôme Alet.
Maintenance du fichier root.hint Il vous est possible de maintenir à jour le fichier root.hint (qui ne varie quand même pas tant que ça au cours de l'année!) par le script hintupdate que vous lancerez dans un cron tous les mois (ou toutes les semaines si vous êtes autant parano que moi!). Lisez les commentaires au début de ce script. Vous avez besoin de:
Naturellement, les commentaires ou suggestions sur cette page sont les bienvenus à tnka at linux-sottises.net |
|