« BIND » : différence entre les versions
m (→Avertissement) |
|||
Ligne 29 : | Ligne 29 : | ||
Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine "réel" qui se trouve sur Internet, vous seriez automatiquement re-dirigé vers votre serveur local. | Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un [[Glossaire#TLD|TLD]]) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine "réel" qui se trouve sur Internet, vous seriez automatiquement re-dirigé vers votre serveur local. | ||
Si jamais vous décidiez de le faire, voici ce qu'une recherche avec nslookup donnerais : | |||
$ nslookup | |||
> chezmoi.ici | |||
Server: 192.168.0.254 | |||
Address: 192.168.0.254#53 | |||
Name: chezmoi.ici | |||
Address: 192.168.0.254 | |||
> | |||
Changeons de DNS, utilisons celui de notre FAI : | |||
> server xxx.xxx.xxx.xxx | |||
Default server: xxx.xxx.xxx.xxx | |||
Address: xxx.xxx.xxx.xxx#53 | |||
> www.chezmoi.ici | |||
Server: xxx.xxx.xxx.xxx | |||
Address: xxx.xxx.xxx.xxx#53 | |||
Non-authoritative answer: | |||
Name: www.chezmoi.ici | |||
Address: yyy.yyy.yyy.yyy | |||
> | |||
== Installation == | == Installation == |
Version du 16 décembre 2010 à 14:59
Cet article est une ébauche. N'hésitez pas à contribuer ou à en discuter.
Créer un serveur DNS pour votre réseau local
Qu'est-ce que c'est ?
Un Domain Name System (ou DNS, système de noms de domaine) est un service permettant d'établir une correspondance entre une adresse IP et un nom de domaine et, plus généralement, de trouver une information à partir d'un nom de domaine.
Tous les ordinateurs pour communiquer entre eux doivent posséder une adresse IP. Ces adresses sont numériques, elles sont sous cette forme pour les adresses IPV4 : www.xxx.yyy.zzz; et de cette forme pour les adresses IPV6 : aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh.
Ces adresses sont associées à des noms, plus simples à retenir pour les humains, appelés noms de domaines. Résoudre un nom de domaine consiste à trouver l'adresse IP qui lui est associée.
Vous préférez taper google.com ou 72.14.204.103 dans votre navigateur ?
Pourquoi faire ?
- Simple curiosité, pour comprendre son fonctionnement;
- Être autonome des DNS de son FAI (Fournisseur d'accès Internet) en cas d'arrêt de ceux-ci ou par souci de confidentialité;
- Résoudre les adresses de son réseau interne (Intranet) simplement, sans être obligé de remplir le fichier hosts de toutes vos machines;
- Résoudre les "adresses inverses": obtenir un nom de domaine ou de machine avec une IP.
Cela fait suffisamment de raisons ? Alors continuons!
Avertissement
Nous n'aborderons pas ici les problèmes de sécurité, qui peuvent être nombreux sur un serveur DNS. Le DNS que nous allons construire est destiné UNIQUEMENT à notre réseau local, il n'est pas accessible depuis Internet.
Mais ça ne l'empêchera pas d'être pleinement opérationnel et de faire la résolution de nom dont vous avez besoin, y compris pour les domaines extérieurs.
Je préciserais aussi ici qu'il vaut mieux ne pas utiliser un domaine (un TLD) existant sur Internet. Vous pouvez le faire, mais vous ne pourrez jamais joindre le domaine "réel" qui se trouve sur Internet, vous seriez automatiquement re-dirigé vers votre serveur local.
Si jamais vous décidiez de le faire, voici ce qu'une recherche avec nslookup donnerais :
$ nslookup > chezmoi.ici Server: 192.168.0.254 Address: 192.168.0.254#53 Name: chezmoi.ici Address: 192.168.0.254 >
Changeons de DNS, utilisons celui de notre FAI :
> server xxx.xxx.xxx.xxx Default server: xxx.xxx.xxx.xxx Address: xxx.xxx.xxx.xxx#53 > www.chezmoi.ici Server: xxx.xxx.xxx.xxx Address: xxx.xxx.xxx.xxx#53 Non-authoritative answer: Name: www.chezmoi.ici Address: yyy.yyy.yyy.yyy >
Installation
# apt-get install bind9 bind9-host bind9utils host
Pour information, trois bogues sur bind9... Vous pouvez tout de même installer sans soucis
Récupération des rapports de bogue... Fait Analyse des informations Trouvé/Corrigé... Fait Bogues de gravité grave sur bind9 ( -> 1:9.6.ESV.R1+dfsg-0+lenny2) <done> #516616 - bind9 locks up on start on mipsel and mips (Corrigé : bind9/1:9.7.0.dfsg.1-1) Réuni avec : 520688 Bogues de gravité critical sur bind9 ( -> 1:9.6.ESV.R1+dfsg-0+lenny2) <pending> #575916 - bind9: assertion fails in name.c:1699 INSIST(offset <= length) Bogues de gravité serious sur bind9 ( -> 1:9.6.ESV.R1+dfsg-0+lenny2) <pending> #584585 - file conflict with libisc50 (Corrigé : 1:9.7.0.dsfg~b3-1) Résumé : bind9 (3 bogues)
Vérifions que bind écoute bien sur toutes nos adresses :
# netstat -ntulp | grep named tcp 0 0 192.168.0.1:53 0.0.0.0:* LISTEN 2832/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2832/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2832/named tcp6 0 0 :::53 :::* LISTEN 2832/named tcp6 0 0 ::1:953 :::* LISTEN 2832/named udp 0 0 192.168.0.1:53 0.0.0.0:* 2832/named udp 0 0 127.0.0.1:53 0.0.0.0:* 2832/named udp6 0 0 :::53 :::* 2832/named
Premiers contact
Ça y est, notre DNS est déjà fonctionnel... Il remplit son rôle de DNS récursif et répond à nos demandes de résolution! Vous ne me croyez pas ?
$ host forum.debian-fr.org 127.0.0.1 Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: forum.debian-fr.org is an alias for www.zehome.com. www.zehome.com has address 88.165.116.107
Cette commande simple nous donne déjà des renseignements :
- forum.debian-fr.org est un alias pour www.zehome.com.
- Son IP (IPV4 est 88.165.116.107)
Plus d'information ? Passons la même commande avec l'option -v (verbose)
$ host -v forum.debian-fr.org localhost Trying "forum.debian-fr.org" Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11492 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 3, ADDITIONAL: 1 ;; QUESTION SECTION: ;forum.debian-fr.org. IN A ;; ANSWER SECTION: forum.debian-fr.org. 37939 IN CNAME www.zehome.com. www.zehome.com. 37941 IN A 88.165.116.107 ;; AUTHORITY SECTION: zehome.com. 37941 IN NS ns.kimsufi.com. zehome.com. 37941 IN NS ns0.zehome.com. zehome.com. 37941 IN NS daboog.zehome.com. ;; ADDITIONAL SECTION: ns.kimsufi.com. 85955 IN A 213.186.33.199 Received 161 bytes from 127.0.0.1#53 in 1 ms Trying "www.zehome.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62379 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.zehome.com. IN AAAA ;; AUTHORITY SECTION: zehome.com. 10355 IN SOA ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400 Received 75 bytes from 127.0.0.1#53 in 0 ms Trying "www.zehome.com" ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7678 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;www.zehome.com. IN MX ;; AUTHORITY SECTION: zehome.com. 10377 IN SOA ns0.zehome.com. ed.zehome.com. 2010072702 21600 3600 2592000 86400 Received 75 bytes from 127.0.0.1#53 in 0 ms
Avec l'option -v (verbose) c'est tout de suite plus compliqué...
Quelques remarques sur ce résultat :
- forum.debian-fr.org est un alias pour www.zehome.com;
- Son IP est 88.165.116.107;
- Ce domaine est géré par les serveurs DNS daboog.zehome.com, ns.kimsufi.com et ns0.zehome.com;
- Il ne dispose pas d'IPV6 (pas de réponse à la question IN AAAA);
- Le SOA pour ce domaine est ns0.zehome.com
- Le mail de l'administrateur est ed@zehome.com (ed.zehome.com - ici le point vaut un arobase)
La même chose, sur un domaine plus important
$ host www.google.fr 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: www.google.fr is an alias for www.google.com. www.google.com is an alias for www.l.google.com. www.l.google.com has address 72.14.204.104 www.l.google.com has address 72.14.204.147 www.l.google.com has address 72.14.204.99 www.l.google.com has address 72.14.204.103
- www.google.fr est un alias pour www.google.com
- www.google.com possède plusieurs adresses IP
Plusieurs IP pour un même domaine ? C'est possible, et cela s'appelle le "round-robin"... Tourniquet en Français, cet algorithme d'ordonnancement permet d'attribuer des temps aux processus, ici, il s'agit de faire tourner les IP, afin que tous les serveurs reçoivent leur part de charge...
La Configuration
L'installation de Bind9 à générée les fichiers suivants :
# cd /etc/bind lol:/etc/bind# vdir total 52 -rw-r--r-- 1 root root 237 jun 10 22:58 db.0 -rw-r--r-- 1 root root 271 jun 10 22:58 db.127 -rw-r--r-- 1 root root 237 jun 10 22:58 db.255 -rw-r--r-- 1 root root 353 jun 10 22:58 db.empty -rw-r--r-- 1 root root 270 jun 10 22:58 db.local -rw-r--r-- 1 root root 2994 aoû 3 21:30 db.root -rw-r--r-- 1 root bind 1125 jui 21 22:19 named.conf -rw-r--r-- 1 root bind 278 aoû 3 10:37 named.conf.local -rw-r--r-- 1 root bind 572 jun 10 22:58 named.conf.options -rw-r----- 1 bind bind 77 jui 20 17:25 rndc.key -rw-r--r-- 1 root root 1317 jun 10 22:58 zones.rfc1918
Le fichier principal (épuré des commentaires) :
# cat /etc/bind/named.conf include "/etc/bind/named.conf.options"; zone "." { type hint; file "/etc/bind/db.root"; }; zone "localhost" { type master; file "/etc/bind/db.local"; }; zone "127.in-addr.arpa" { type master; file "/etc/bind/db.127"; }; zone "0.in-addr.arpa" { type master; file "/etc/bind/db.0"; }; zone "255.in-addr.arpa" { type master; file "/etc/bind/db.255"; }; include "/etc/bind/named.conf.local"; server xxx.xxx.xxx.xxx { };
Ce fichier renvoie vers deux fichiers de configurations : named.conf.options et named.conf.local
C'est dans ces deux fichiers qu'il faudra mettre vos configurations personnelles, le fichier named.conf ne devant en principe pas être modifié.
Le fichier named.conf déclare plusieurs zones, presque toutes destinées à la résolution inverse
A la fin du fichier, nous avons ajouté le NDS de notre FAI, au cas ou... Il est indispensable de pouvoir, quoi qu'il arrive, faire de la résolution de nom... Ce sera donc notre DNS de secours.
La zone "."
La zone root est primordiale. Ce fichier contient toutes les informations sur les root-servers sans lesquels notre DNS ne peut fonctionner. Ce fichier évolue peu.
lol:/etc/bind# cat db.root ; This file holds the information on root name servers needed to ; initialize cache of Internet domain name servers ; (e.g. reference this file in the "cache . <file>" ; configuration file of BIND domain name servers). ; ; This file is made available by InterNIC ; under anonymous FTP as ; file /domain/named.root ; on server FTP.INTERNIC.NET ; -OR- RS.INTERNIC.NET ; ; last update: Feb 04, 2008 ; related version of root zone: 2008020400 ; ; formerly NS.INTERNIC.NET ; . 3600000 IN NS A.ROOT-SERVERS.NET. A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:BA3E::2:30 ; ; formerly NS1.ISI.EDU ; . 3600000 NS B.ROOT-SERVERS.NET. B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 ; ; formerly C.PSI.NET ; . 3600000 NS C.ROOT-SERVERS.NET. C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 ; ; formerly TERP.UMD.EDU ; . 3600000 NS D.ROOT-SERVERS.NET. D.ROOT-SERVERS.NET. 3600000 A 128.8.10.90 ; ; formerly NS.NASA.GOV ; . 3600000 NS E.ROOT-SERVERS.NET. E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 ; ; formerly NS.ISC.ORG ; . 3600000 NS F.ROOT-SERVERS.NET. F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f ; ; formerly NS.NIC.DDN.MIL ; . 3600000 NS G.ROOT-SERVERS.NET. G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 ; ; formerly AOS.ARL.ARMY.MIL ; . 3600000 NS H.ROOT-SERVERS.NET. H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803f:235 ; ; formerly NIC.NORDU.NET ; . 3600000 NS I.ROOT-SERVERS.NET. I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 ; ; operated by VeriSign, Inc. ; . 3600000 NS J.ROOT-SERVERS.NET. J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:C27::2:30 ; ; operated by RIPE NCC ; . 3600000 NS K.ROOT-SERVERS.NET. K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1 ; ; operated by ICANN ; . 3600000 NS L.ROOT-SERVERS.NET. L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 ; ; operated by WIDEaimer ; . 3600000 NS M.ROOT-SERVERS.NET. M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35 ; End of File
La zone "localhost"
# cat db.local ; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. @ IN A 127.0.0.1 @ IN AAAA ::1
Peu utilisée en général, elle permet de résoudre localhost :
La structure de ce dernier fichier est un peu déroutante au début, emplie de @ . A AAAA SOA et autres IN que nous détaillerons plus loin. Nous remarquons que localhost possède deux IP : 127.0.0.1 (IPV4) et ::1 (IPV6) vous le saviez probablement déjà!
Les zones in-addr.arpa
Nous venons de voir les fichiers qui permettent de résoudre l'adresse d'une machine à partir de son nom. Or, il arrive que certains mécanismes réclament l'inverse, c'est à dire trouver le (les) noms associés à des IP.
Les zones in-addr.arpa servent à ça.
Voici la zone inverse pour localhost :
# cat db.127 ; ; BIND reverse data file for local loopback interface ; $TTL 604800 @ IN SOA localhost. root.localhost. ( 1 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS localhost. 1.0.0 IN PTR localhost.
La notation est ici inversée. Si nous cherchons dans la zone 127 l'adresse 0.0.1 nous tomberons sur localhost => 1.0.0 IN PTR localhost.
Par exemple, Pour l'adresse 192.1.2.3, nous obtenons le nom de domaine 3.2.1.192.in-addr.arpa.
Contenu d'une Zone
Une zone contient deux enregistrements obligatoires :
- SOA
- NS
SOA
SOA (Start Of Authority). Le champ SOA indique quel est le serveur « maitre ». Ce serveur peut-avoir plusieurs serveurs esclaves
$ host -t soa google.fr google.fr has SOA record ns1.google.com. dns-admin.google.com. 1423257 21600 3600 1209600 300
Nous savons donc que le serveur ns1.google.com est le serveur maître du domaine google.com. Et nous avons l'adresse email du responsable : dns-admin@google.com (l'arobase est remplacé par un point dans le fichier de zone)
L'enregistrement SOA contient un certain nombre d'enregistrements et de paramètres:
Le nom du primaire
@ IN SOA tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici.
C'est le nom du serveur primaire pour la zone. L'adresse de courrier électronique du responsable technique de la zone (zone-contact). Il faut l'écrire en replaçant le @ par un point. On a alors par exemple: root@inria.fr qui devient root.inria.fr
A, AAAA, MX, CNAME, etc.
Les types d'enregistrements sont: A, AAAA, MX, CNAME, NS, SOA, PTR, TXT, HINFO, WKS, RP, MA, MB.
A (Address)
C'est l'enregistrement le plus courant. Le DNS a été créé en grande partie pour ça... Le champ A (Address) fait correspondre un nom à une adresse IPv4.
nom IN A 193.10.20.30
Dans le cas d'une machine qui dispose de plus d'une adresse IP (un routeur ou une machine avec plusieurs cartes), il faut indiquer un enregistrement A par adresse, mais il faut alors que tous les enregistrements PTR pointent vers ce nom là.
AAAA (Address IPV6)
Idem au champ A, mais correspond à une adresse de type IPV6
NS (Name Server)
Le champ NS (Name Server) indique le nom d'un serveur de noms. Il peut y avoir plusieurs champs NS s'il y a plusieurs serveurs de noms...
CNAME (Common Name)
Le champ CNAME (Common Name) est utilisé pour créer des alias. Un "vrai" nom doit être préalablement déclaré avec la variable A, un alias peut ensuite être créé qui pointera vers celui-ci.
MX (Mail eXchanger)
Le champ MX (Mail eXchanger), est utile pour le protocole SMTP ou TXT.
Il indique pour un nom de domaine quelle est la machine à laquelle il faut envoyer le courrier pour ce domaine.
Si plusieurs enregistrements MX sont présents, il faut leur attribuer un poids... Le MTA (Mail transfert agent) tentera d'envoyer le courrier en premier à la machine ayant le poids associé le plus faible, puis ensuite dans l'ordre croissant des poids.
Si la machine qui relaie le courrier est dans la liste des MX pour le domaine, elle envoie le courrier aux machines de poids inférieur au sien.
nom IN MX 10 premier.relais.
IN MX 20 second.relais.
Le numéro de série de la zone
Il permet aux serveurs secondaires qui interrogent régulièrement le serveur primaire de chaque zone de déterminer quand la zone a été mise à jour.
L'intervalle entre les rafraichissements (refresh)
Temps, en seconde, au bout duquel les serveurs « esclaves » devront demander à rafraichir leur données pour cette zone. 3600 secondes dans l'exemple ci-dessous, soit une heure.
3600 ; Refresh
La valeur conseillée est 24 heures, soit 86400 secondes.
L'intervalle entre les rafraichissements (retry)
Durée, en secondes, à partir de laquelle un serveur esclave doit ré-essayer de se synchroniser en cas d'échec du rafraichissement. Ici toutes les 300 secondes, soit toutes les 5 minutes.
300 ; Retry
La valeur conseillée est 6 heures, soit 21600 secondes.
La durée d'expiration des enregistrements d'un secondaire
En cas d'échec des tentatives de synchronisation, indique le temps (en secondes) au bout duquel les serveurs secondaires devront considérer qu'ils ne savent plus répondre aux requêtes concernant cette zone.
2419200 ; Expire
La valeur conseillée est de 41 jours, soit 3600000 secondes.
La durée de vie par défaut des enregistrements (default TTL)
Durée de vie de l'information fournie. Les serveurs DNS récursifs conserveront en cache les informations récoltées pendant la durée indiquée dans ce paramètre. 0 indique que les valeurs ne doivent pas être conservées en cache.
1600 ) ; Negative Cache TTL
La valeur conseillée est de 24 heures, soit 86400 secondes.
Le symbole « @ »
Dans un fichier de configuration de zone, ce symbole représente exactement le nom de domaine de la zone. Par exemple, lorsque nous allons créer notre zone maison.mrs, écrire :
maison.mrs. IN SOA ...
Nous pourrons écrire :
@ IN SOA ...
NS (Name Server)
Cet enregistrement indique une délégation pour la gestion du nom donné. C'est à dire que le nom donné devient une zone, dont la gestion est déléguée au serveur indiqué en partie droite.
L'enregistrement donne le nom d'un des serveurs de noms autoritaire pour la zone, comme il y a toujours plus d'un serveur de noms pour une zone, on répète l'enregistrement NS autant de fois qu'il y a de serveurs pour la zone.
Quand pour un nom, on a des enregistrements NS, il est interdit de faire figurer dans la zone parente (celle là) d'autres enregistrements. S'il y a à faire figurer des enregistrements, il faut les mettre dans la zone fille.
zone IN NS serveur.nom.de.domaine.
IN NS autreServeur.nom.de.domaine.
IN NS encoreUn.autreNom.de.domaine.
Créons notre première zone
Maintenant que les explications indigestes sont faites... La meilleure façon de comprendre, est d'appliquer à son réseau local sa propre zone!
La zone chezmoi.ici
Pour cet exemple j'ai pris un nom de domaine bidon, c'est tout a fait possible, vous pouvez donner n'importe quel nom à votre Intranet!
Notre serveur s'appelle tebilepas il dispose de l'IP 192.168.1.254
Le domaine est chezmoi.ici
Nous disposons d'assez d'informations pour créer la zone chezmoi.ici
Créons d'abord dans /etc/bind/ un fichier nommé : db.chezmoi.ici qui contiendrai ceci :
$TTL 1600 @ IN SOA tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. ( 2009012907 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 1600 ) ; Negative Cache TTL chezmoi.ici. IN NS tebilepas.chezmoi.ici. chezmoi.ici. IN A 192.168.1.254 tebilepas IN A 192.168.1.254 coucou IN A 192.168.1.1 pourquoi IN CNAME coucou tespascheztoi IN CNAME forum.debian-fr.org.
Nous aurions pu écrire :
@ IN NS tebilepas.chezmoi.ici.
à la place de (cela revient au même)
chezmoi.ici. IN NS tebilepas.chezmoi.ici.
Nous aurions aussi pu éviter les commentaires (par exemple : ;Serial) mais pour les explications ce sera plus facile.
Ce sera suffisant pour commencer!
Pour que cette zone soit prise en compte, nous devons maintenant l'inclure dans le fichier /etc/bind/named.conf.local
Ceci devrait permettre de répondre aux requêtes de type NS pour le domaine maison.mrs, de répondre aussi aux requêtes de type A pour debvirt.maison.mrs et pour test1.maison.mrs, constater aussi que les alias fonctionnent dans et hors du domaine.
Il nous faut maintenant indiquer à bind que cette zone existe. Nous allons le faire dans le fichier /etc/bind/named.conf.local :
zone "chezmoi.ici" { type master; file "/etc/bind/db.chezmoi.ici"; };
Nous redémarrons notre serveur bind
# service bind9 restart Stopping domain name service...: bind9 waiting for pid 1353 to die. Starting domain name service...: bind9.
Tests
Maintenant que notre serveur de nom est configuré, il faut le tester...
Avec la commande host
$ host -a chezmoi.ici localhost Trying "chezmoi.ici" Using domain server: Name: localhost Address: ::1#53 Aliases: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46986 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; QUESTION SECTION: ;chezmoi.ici. IN ANY ;; ANSWER SECTION: chezmoi.ici. 1600 IN SOA tebilepas.chezmoi.ici. root.tebilepas.chezmoi.ici. 2009012907 604800 86400 2419200 1600 chezmoi.ici. 1600 IN NS tebilepas.chezmoi.ici. chezmoi.ici. 1600 IN A 192.168.1.254 ;; ADDITIONAL SECTION: tebilepas.chezmoi.ici. 1600 IN A 192.168.1.254 Received 126 bytes from ::1#53 in 5 ms
$ host coucou.chezmoi.ici localhost Using domain server: Name: localhost Address: ::1#53 Aliases: coucou.chezmoi.ici has address 192.168.1.1
$ host pourquoi.chezmoi.ici localhost Using domain server: Name: localhost Address: ::1#53 Aliases: pourquoi.chezmoi.ici is an alias for coucou.chezmoi.ici. coucou.chezmoi.ici has address 192.168.1.1
$ host ailleurs.chezmoi.ici localhost Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: ailleurs.chezmoi.ici is an alias for forum.debian-fr.org. forum.debian-fr.org is an alias for www.zehome.com. www.zehome.com has address 88.165.116.107
Comme vous avez pu le constater, votre DNS fonctionne parfaitement, il renseigne nos machines sur le réseau local, et il pourvoit à nos demandes d'IP Internet !
Avec la commande nslookup
$ nslookup
> server
Default server: 192.168.0.254
Address: 192.168.0.254#53
Default server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
> localhost
Server: 192.168.0.254
Address: 192.168.0.254#53
Name: localhost
Address: 127.0.0.1
> www.chezmoi.ici
Server: 192.168.0.254
Address: 192.168.0.254#53
www.chezmoi.ici canonical name = chezmoi.ici.
Name: chezmoi.ici
Address: 192.168.0.254
> tebilepas
Server: 192.168.0.254
Address: 192.168.0.254#53
Name: tebilepas.chezmoi.ici
Address: 192.168.0.254
> www.google.com
Server: 192.168.0.254
Address: 192.168.0.254#53
Non-authoritative answer:
www.google.com canonical name = www.l.google.com.
Name: www.l.google.com
Address: 209.85.148.105
Name: www.l.google.com
Address: 209.85.148.106
Name: www.l.google.com
Address: 209.85.148.147
Name: www.l.google.com
Address: 209.85.148.99
Name: www.l.google.com
Address: 209.85.148.103
Name: www.l.google.com
Address: 209.85.148.104
> exit
$
Explication. Lorsque nous tapons la commande nslookup, apparait l'invite suivante :
$ nslookup >
Il suffit de connaître très peu de commandes
server > donne la liste des serveurs DNS qui seront interrogés, dans l'ordre;
nslookup précise à chaque demande quel serveur à répondu :
Server: 192.168.0.254 Address: 192.168.0.254#53
192.168.0.254, c'est nous! :)
Nom de machine ou de domaine > donne la résolution du nom demandé;
exit > sortir de nslookup.
Le fichier resolv.conf
Je n'en ai pas parlé jusqu'ici, mais il faut vérifier que votre fichier /etc/resolv.conf reflète bien votre configuration. Dans l'exemple pris dans cette page, celui-ci doit contenir :
$ cat /etc/resolv.conf domain chezmoi.ici search chezmoi.ici nameserver 192.168.0.254 nameserver xxx.xxx.xxx.xxx
C'est bon, le domaine est bien chezmoi.ici, et les DNS, sont dans l'ordre, le votre, puis celui de votre FAI.
Deux cas se présentent :
vous avez resolvconf installé
apt-cache policy resolvconf
resolvconf:
Installé : 1.46
Candidat : 1.46
Table de version :
1.46 0
500 http://nas.isalo.org/debian/ squeeze/main amd64 Packages
500 http://ftp.fr.debian.org/debian/ squeeze/main amd64 Packages
Soit vous obtenez votre ip par dhcp auquel cas, rien à faire Soit vous fixez votre ip par le fichier /etc/network/interfaces auquel cas il faut ajouter les lignes suivantes dans celui-ci :
dns-nameservers 192.168.0.254 xxx.xxx.xxx.xxx dns-search chezmoi.ici
vous n'avez pas resolvconf installé
Il faut modifier vous même le fichier /etc/resolv.conf pour qu'il reflète votre configuration :
$ cat /etc/resolv.conf domain chezmoi.ici search chezmoi.ici nameserver 192.168.0.254 nameserver xxx.xxx.xxx.xxx
Le Round-robin
Le Round-robin est une répartition de charge (load balancing) équitable entre serveurs d'une ferme informatique (cluster). Chaque serveur doit traiter le même nombre de requêtes. Cela nécessite une ferme de serveurs homogènes en capacité de traitement. Cette répartition de charge peut être effectuée par le serveur DNS (Domain Name System) qui associe plusieurs adresses IP à un nom de domaine.
Exemple d'un round-robin fonctionnel :
jeu. août 05 02:46:56 /home/laurent> host www.google.mg www.google.mg is an alias for www.google.com. www.google.com is an alias for www.l.google.com. www.l.google.com has address 72.14.204.103 www.l.google.com has address 72.14.204.104 www.l.google.com has address 72.14.204.147 www.l.google.com has address 72.14.204.99
jeu. août 05 02:46:57 /home/laurent> host www.google.mg www.google.mg is an alias for www.google.com. www.google.com is an alias for www.l.google.com. www.l.google.com has address 72.14.204.99 www.l.google.com has address 72.14.204.103 www.l.google.com has address 72.14.204.104 www.l.google.com has address 72.14.204.147
jeu. août 05 02:46:59 /home/laurent> host www.google.mg www.google.mg is an alias for www.google.com. www.google.com is an alias for www.l.google.com. www.l.google.com has address 72.14.204.147 www.l.google.com has address 72.14.204.99 www.l.google.com has address 72.14.204.103 www.l.google.com has address 72.14.204.104
jeu. août 05 02:47:01 /home/laurent> host www.google.mg www.google.mg is an alias for www.google.com. www.google.com is an alias for www.l.google.com. www.l.google.com has address 72.14.204.104 www.l.google.com has address 72.14.204.147 www.l.google.com has address 72.14.204.99 www.l.google.com has address 72.14.204.103
Le premier serveur de la liste n'est jamais le même, il y a une rotation...
ToDo : Conclusion