BIND

De Le Wiki du Forum-Debian.fr
Aller à la navigation Aller à la recherche

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 (sauf à connaître son adresse IP), vous seriez automatiquement re-dirigé vers votre serveur local.

Installation

# apt-get install bind9 bind9-host bind9utils host

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

A noter que dans la dernière version sous squeeze la configuration est légèrement différente de celle présentée ici. Le fichier principal (named.conf) ne contient plus que des liens vers les trois fichiers secondaires dans lesquels vous mettrez vos directives (named.conf.options, named.conf.local et named.conf.default-zones).

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