Problèmes de dns ...

Deux fois en deux semaines mon serveur a subi une charge importante due à une innondation des logs par le service named
graphe charge systèmegraphe utilisation processeur

BIND ne trouvait pas les adresses des serveurs racine et balançait sans arrêt les lignes suivantes dans syslog qui mettait du coup lui aussi la machine à genoux ! Voici quelques lignes en exemple :

Feb 22 17:46:15 fly named[121]: sysquery: no addrs found for root NS (L.ROOT-SERVERS.NET)
Feb 22 17:46:15 fly named[121]: sysquery: no addrs found for root NS (M.ROOT-SERVERS.NET)
Feb 22 17:46:15 fly named[121]: sysquery: no addrs found for root NS (I.ROOT-SERVERS.NET)
Feb 22 17:46:15 fly named[121]: sysquery: no addrs found for root NS (E.ROOT-SERVERS.NET)
Feb 22 17:46:15 fly named[121]: sysquery: no addrs found for root NS (D.ROOT-SERVERS.NET)
Feb 22 17:46:15 fly named[121]: sysquery: no addrs found for root NS (C.ROOT-SERVERS.NET)
Feb 22 17:46:15 fly named[121]: sysquery: no addrs found for root NS (C.ROOT-SERVERS.NET)

Après quelques recherches, j'ai trouvé ce post sur la ml freebsd-questions qui dit en gros qu'il faut éviter de BIND à la fois des forwarders et les serveurs racine.
Il semblerait que si le(s) forwarder(s) fonctionnent bien, BIND n'utilise jamais les serveurs racine pour faire ses résolutions. Au bout d'un certain temps, le cache des adresses de ces serveurs expire et BIND ne va pas relire ses informations sur le disque ... Au final, si BIND a finallement besoin de contacter ces serveurs racine, les données pour ces serveurs ne sont plus disponibles et BOUM!

La solution est donc d'utiliser uniquement les forwarders en configurant une zone "." avec les options

zone "." in {
type forward;
forward only;
forwarders {...};
};

Soit utiliser uniquement les serveurs racine :

zone "." in {
type hint;
file "named.root";
}

et de récupérer un fichier named.root à jour

Pour le moment ça semble fonctionner, wait & see !