Discussion:BIND cache DNS

De Lea Linux
Aller à la navigation Aller à la recherche

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