Discussion:BIND cache DNS
Je prends l'exemple d'architecture suivante dans laquelle je crée mon serveur DNS qui sert de relais
| Client | <~> [ Mon srv DNS ] <~> [ srv DNS du FAI ou root DNS d'@ ]
à partir de BIND 9.1 (version à préciser au besoin) les requêtes DNS émisent par [ Mon srv DNS ] à destination de ces pairs [ srv DNS du FAI ou root DNS d'@ ] utilisent l'option edns (Extended DNS).
Ce flag n'est compris aujourd'hui que par BIND lui même (à niveau de version suffisante).
Cela peut induire des performances catastrophiques car [ Mon srv DNS ] va effectuer 2 requêtes avec l'option activée avant de tenter ( à tout hasard ;o)) une requête sans cette option. Le temps requis pour cette dynamique d'échange comprend donc 2 timeout's qui représentent 2 * 5 secondes par défaut ....
donc chaque requêtes DNS de | Client | prends environ 10s + 40 à 1000 ms soit près de 11 secondes !!!
Pour éviter ce comportement il est nécessaire d'ajouter dans le fichier de configuration : /etc/named.conf l'option suivante : server [adr_ip_du_serveur] { edns no;};
cette ligne est à ajouter pour chaque serveur posant problème.
ex :
server 195.68.0.2 {edns no;};
server 195.68.0.3 {edns no;};
voilà j'espère que cette remarque sauvera du temps de recherche et diagnostic à certains d'entre vous (euh là y'a un peu de vécu ;o) ).
rmq : En toute rigueur le [ srv DNS du FAI ou root DNS d'@ ] doit répondre avec un rejet à la première requête comportant le flag edns mais ce rejet n'est soit jamais émis soit filtré par des firewalls
Sous debian
# aptitude install bind
(...)
# vi /etc/resolv.conf
On modifie search
par search domain.tld
et on rajoute nameserver 127.0.0.1
.
# /etc/init.d/bind restart