[Résolu] Précisions sur le fonctionnement de Bind9

Bonjour à tous,
Je suis toujours le même étudiant français en stage dans une université à Madagascar, je refais un peu le réseau informatique. J’ai réinstallé le routeur/serveur DNS-DHCP et j’aimerais avoir quelques précisions à propos de Bind9 …

Est-ce que par défaut il fait “serveur tampon”, c’est à dire qu’une fois qu’il connait l’ip de google.mg par exemple, il répond directement aux clients sans aller demander à chaque fois au serveur autoritaire sur la zone .mg ? Tout en vérifiant régulièrement que c’est toujours la bonne adresse, évidemment.
Sinon comment le mettre en place ?

L’intérêt ici est que ça peut faire gagner 10s pour charger une page web, et ça économise le peu de bande passante disponible … (3-4ko/s généralement !)

Merci d’avance !
(C’est pas spécifique Debian, mais c’est accepté quand même comme question ?!)

Oui par défaut, il fait tampon (« cache » serait plus approprié, si on veut chipotter). Quand il demande l’adresse d’un hôte ou d’un serveur ayant l’autorité sur le domaine, il reçoit en plus des réponses des valeurs dont une, le TTL (Time To Live) lui indique combien de temps il peut garder l’adresse en mémoire avant de considérer l’information « périmée ».

Mais je ne suis pas sûr que ça te fasse gagner un temps non négligeable sur tes requêtes, j’aurais même peur d’en perdre : si tu intérroges un DNS extérieur qui lui a une bonne connexion (celui de ton FAI par ex), tu n’as qu’une requête à faire, et lui se chargera de faire des requêtes récursives (et gardera en cache aussi). M’enfin, après ça doit dépendre d’autres paramètres (tu joins plus facilement ton DNS local, si l’autre n’est pas plus performant alors…). Donc faudrait essayer, et voir ce que ça donne en pratique…

salut,

si tu as besoin de configurer ton seveur DNS à la mano j’ai toutes les infos nécessaires, n’hésite pas à revenir sur le forum je t’indiquerais les démarches, mais je pense su’il ya de très bon spécialiste ici

salut bon courage

Là j’ai un serveur DHCP/DNS très simple.
Chaque client reçoit 3 adresses de DNS : d’abord le DNS local, puis 2 DNS publics.
Le DNS fait autorité sur le réseau local (local-antsiranana.mg.). Il est aussi configuré pour relayé les requêtes vers les 2 DNS publics, lorsque c’est nécessaire.
Sur le réseau local il y a un site local, enregistré dans le DNS, ça fonctionne, ça va !

Donc tout fonctionne bien, rien de compliqué, d’après vous il y a amélioration à apporter ?

Bind fait effectivement “cache” (pour être précis, oui maître :wink: !), je n’arrivais pas à en être sûr, mais maintenant je m’en rend compte.
A voir ce que tu dis Kna, c’est pas forcément faux. A savoir qu’un ping vers les DNS public prend environ 3s …
Quand on fait une requête, mon DNS local fait suivre au premier DNS public enregistré. C’est ensuite ce DNS public qui va “monter dans la hiérarchie” auprès des autres DNS, et qui va ensuite renvoyer la réponse à mon DNS local (qui fera suivre au client). J’ai juste ?
Dans ce cas mon serveur DNS qui fait “cache” est bien que du bonus non ?

Merci pour vos précisions !

Et là je me demande si je fais bien de donner les adresses des serveurs publics aux hôtes du réseau …

Si je ne leur donne que l’adresse de mon DNS local (qui est sur la même machine physique qui fait routeur serveur DHCP/DNS), pas de problème, ils s’adressent à lui et lui, il fait suivre. Comme ça je suis sûr que mon DNS local enregistre bien les réponses pour les donner ensuite directement aux hôtes.
Par ce que sinon, j’ai observé avec wireshark que les hôtes envoient directement une requête DNS aux 3 serveurs DNS qu’ils connaissent (soit mon DNS local + les 2 DNS public). Ils retiennent ensuite celui qui répond le plus vite je suppose … Utile ??

[quote=“Gi0”]Quand on fait une requête, mon DNS local fait suivre au premier DNS public enregistré. C’est ensuite ce DNS public qui va “monter dans la hiérarchie” auprès des autres DNS, et qui va ensuite renvoyer la réponse à mon DNS local (qui fera suivre au client). J’ai juste ?
Dans ce cas mon serveur DNS qui fait “cache” est bien que du bonus non ?[/quote]
En fait par défaut, bind interroge les serveurs racines pour savoir qui a autorité sur domaine, interroge le serveur en question pour savoir qui a autorité sur le sous-domaine, etc. puis descend ainsi dans la hiérarchie jusqu’au nom d’hôte (et garde tout en cache). Mais tu peux le paramétrer pour qu’il utilise un autre serveur DNS qui fera tout ce boulot là, et lui donne directement la réponse. Sous debian, il suffit de décommenter les lignes dans /etc/bind/named.options (je ne me souviens plus précisément du chemin du fichier, mais c’est quelque chose dans ce goût là), et d’y mettre l’adresse du DNS que tu veux intérroger. Dans ce cas le cache n’est que du bonus en effet, et ça te permet de gérer ton réseau local, tout en laissant faire le boulot à un DNS extérieur pour les autres domaines.

Étrange, normalement ils ne devraient intérroger les autres que si le premier ne répond pas. Peut-être n’attendent-ils pas assez longtemps avant de juger qu’il ne répond pas ? Ça donne la même chose avec une adresse que ton DNS local a en cache ?

PS : Un peu de lecture : irp.nain-t.net/doku.php/160dns:start

Huum … On parle bien de ça ? Donc ça va, c’est déjà configuré comme il le faut !

[code] // If your ISP provided one or more IP addresses for stable
// nameservers, you probably want to use them as forwarders.
// Uncomment the following block, and insert the addresses replacing
// the all-0’s placeholder.

     forwarders {
            209.244.0.3;
            209.244.0.4;
     };[/code]

Les 3 requêtes DNS partent bien simultanément, et les 3 réponses reviennent bien, que l’adresse soit en cache ou non (client windows ou linux : pareil).
Peut-être ai-je loupé un truc, où les 2 autres serveurs DNS doivent être configurés en tant que DNS “secondaires” ? Ils sont peut-être tout les 3 retenus comme principaux ?

dans mon dhcpd.conf, ça donne ça :

## Adresse IP du serveur DNS option domain-name-servers 192.168.0.1,209.244.0.3,209.244.0.4;
Good or not good ?

Merci, et je vais voir ton lien

[quote=“Gi0”]dans mon dhcpd.conf, ça donne ça :
ode:

Adresse IP du serveur DNS

option domain-name-servers 192.168.0.1,209.244.0.3,209.244.0.4;[/quote]
Mmmh, je me demande s’il ne faut pas mettre des espaces à la place des virgules, ou une erreur bête dans le genre. Ça donne quoi dans les /etc/resolv.conf des clients :

ou

nameserver 192.168.0.1
nameserver 209.244.0.3
nameserver 209.244.0.4

:question:

EDIT : dans le man, c’est virgule + espace. Soit c’est ça, soit je suis à côté de la plaque…

Salut,

Oui, c’est virgule ET espace.

option domain-name-servers 192.168.0.1, 195.99.65.220, 195.99.66.220;

Pour Bind, avoir le sien apporte quand même de la rapidité…

[code]~/ dig @217.70.179.40 forum.debian-fr.org ANY

; <<>> DiG 9.7.0-P1 <<>> @217.70.179.40 forum.debian-fr.org ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 62106
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;forum.debian-fr.org. IN ANY

;; Query time: 894 msec
;; SERVER: 217.70.179.40#53(217.70.179.40)
;; WHEN: Sat May 8 07:30:00 2010
;; MSG SIZE rcvd: 37

~/ dig @192.168.0.1 forum.debian-fr.org ANY

; <<>> DiG 9.7.0-P1 <<>> @192.168.0.1 forum.debian-fr.org ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36392
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;forum.debian-fr.org. IN ANY

;; ANSWER SECTION:
forum.debian-fr.org. 33506 IN CNAME www.zehome.com.

;; AUTHORITY SECTION:
debian-fr.org. 81505 IN NS ns0.asyd.net.
debian-fr.org. 81505 IN NS ns1.asyd.net.

;; ADDITIONAL SECTION:
ns0.asyd.net. 13106 IN A 81.93.247.137
ns1.asyd.net. 13106 IN A 88.191.25.81

;; Query time: 0 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Sat May 8 07:30:07 2010
;; MSG SIZE rcvd: 141

~/ dig @41.188.9.130 forum.debian-fr.org ANY

; <<>> DiG 9.7.0-P1 <<>> @41.188.9.130 forum.debian-fr.org ANY
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached[/code]

Le mien : ;; Query time: 0 msec
Celui de mon FAI : ; connection timed out; no servers could be reached :mrgreen:
Celui de Gandi : ;; Query time: 894 msec

Pour les espaces après les virgules, c’est apparemment sans importance, le resolv.conf est le même :

[code]domain local-antsirana.mg

search local-antsirana.mg

nameserver 192.168.0.1
nameserver 209.244.0.3
nameserver 209.244.0.4
[/code]

Donc … ? Je leur laisse les 3 adresses, temps pis pour les requêtes inutiles (bof) ou je ne leur donne que l’adresse de mon DNS perso (qui lui, fait suivre).
Sachant que si la machine DNS tombe, de toute façon il n’y a plus d’accès à Internet, c’est la même machine physique que le routeur, donc ça n’apporte pas de sécurité en plus de leur indiquer ces autres serveurs.

D’accord avec moi ?

Mercii :023 !

[quote=“kna”]
PS : Un peu de lecture : irp.nain-t.net/doku.php/160dns:start[/quote]
C’est dommage, ça a l’air super bien, pleins d’infos pas que sur le DNS, mais pas moyen de charger la page ici … Je n’ai vu que le sommaire !

Hum … Une autre chose : comment faire en sorte que les clients puissent se pinguer directement sur leur nom ? Pouvoir faire un “ping PC1”. J’essaye pas mal de choses mais je ne trouve pas comment faire.

Pouvez m’aider ?
:023

[quote=“Gi0”]Sachant que si la machine DNS tombe, de toute façon il n’y a plus d’accès à Internet, c’est la même machine physique que le routeur, donc ça n’apporte pas de sécurité en plus de leur indiquer ces autres serveurs.

D’accord avec moi ?[/quote]
D’autant plus d’accord, que je n’ai pas de meilleure idée… :083

Ben, logiquement, en ayant search local-antsirana.mg dans le resolv.conf. Si tu fais ping PC1, il cherchera PC1.local-antsirana.mg. Donc ça ne devrait pas poser de problème s’il est bien enregistré dans ton DNS. Sauf les majuscules dans ce cas précis…

Vérifie aussi qu’il ne reste pas d’entrées dans /etc/hosts, qui a priorité sur le DNS…

[quote=“kna”]
Ben, logiquement, en ayant search local-antsirana.mg dans le resolv.conf. Si tu fais ping PC1, il cherchera PC1.local-antsirana.mg. Donc ça ne devrait pas poser de problème s’il est bien enregistré dans ton DNS. Sauf les majuscules dans ce cas précis…

Vérifie aussi qu’il ne reste pas d’entrées dans /etc/hosts, qui a priorité sur le DNS…[/quote]
Oui, c’est bien ce que j’ai cru comprendre. Mais le problème semble être que les clients ne s’enregistre pas dans le DNS.
J’ai un client debian500 :

debian500:/home/deb# hostname -f debian500.local-antsiranana.mg

Son /etc/hosts :

127.0.0.1 localhost 127.0.1.1 debian500.local-antsiranana.mg debian500

Son /etc/resolv.conf :

domain local-antsiranana.mg search local-antsiranana.mg nameserver 192.168.0.1

Apparemment tout est bon, non ?
Et bien un ping debian500 depuis un autre client (ou même depuis le serveur) ne trouve pas l’hôte …
J’observe que la requête DNS est bien “qui est debian500.local-antsiranana.mg ?”, mais pas de réponse du serveur.

J’ai dû louper une option dans la configuration de Bind ?

Ha ben zut … Pas de réponse ? :083

Euh, les clients ne s’enregistrent pas tout seuls sur le serveur DNS, il faut que tu te fasses un fichier de zone .local-antsiranana.mg. dans ton bind, dans lequel tu indiques l’adresse des tes machines…

En procédant ainsi, ça impose un adressage fixe de chaque machine, ce n’est pas ce qu’il me faut là. Normalement il est possible de faire ça dynamiquement, lorsque le client fait une requête DHCP il s’enregistre dans le serveur DNS. Si à la prochaine connexion il change d’adresse IP, la correspondance est mise à jour.
à moins que ce n’est pas possible avec Bind9 ?! Je serais étonné !

Mais bon, ce n’est pas très grave sinon. Mais je pensais que c’était effectif nativement.

Merci !

Salut,
Je suis loin (très loin) d’être un spécialiste de bind… Mais je n’ai jamais vu cette option…
Au pire, fixe des IP en fonction des adresses MAC des demandeurs dans DHCP. Indirectement, tu règle ton problème…

Yes, j’ai déjà quelques IPs fixée par rapport à l’adresse MAC pour le serveur d’un site interne par exemple, donc ça suffit en fait.
Je croyais mal, donc !