mar
27
2014

Mettre en place un cache DNS avec UNSCD sur Ubuntu.

Dans certain cas il peut être intéressant de mettre en place un cache DNS sur vos serveurs. Soit afin de moins solliciter le serveur DNS soit pour avoir une tolérance de panne en cas de coupure de lien entre le serveur DNS et votre machine.
Actuellement Ubuntu et plus généralement l’ensemble des distributions Linux ne fournissent pas nativement un service de cache DNS.
Ce qui a pour conséquence que chaque appel d’une URL ou d’une ressources enregistrée dans le DNS  une requête est envoyer au serveur DNS.
Nous allons voir dans ce billet comment mettre en place un cache DNS simplement avec UNSCD c’est parti.

Dans un premier temps nous allons installer UNSCD pour cela rien de plus simple:

sudo apt-get install unscd
sudo service unscd stop

Une fois l’installation terminée  nous pouvons passer à la configuration.
La configuration de UNSCD est très simple de plus que dans notre cas nous souhaitons mettre en place uniquement le cache DNS.

Commencer par ouvrir le fichier nsswitch.conf pour vérifier si le cache DNS utilise bien la configuration DNS de la machine et non pas le fichier hosts.

sudo vi /etc/nsswitch.conf

nsswitch

Puis nous allons sauvegarder le fichier nscd.conf existant pour en recréer un à la place.

sudo mv /etc/nscd.conf /etc/nscd.conf.bak && sudo touch /etc/nscd.conf
sudo vi /etc/nscd.conf

Puis insérer la configuration suivante:

### General config for UNCD ### #

logfile /var/log/nscd.log
debug-level 0
reload-count unlimited
paranoia no

### DNS cache configuration ###

enable-cache hosts          yes 
positive-time-to-live hosts 3600 
negative-time-to-live hosts 20 
suggested-size hosts        211 
check-files hosts           no 
persistent hosts            yes 
shared hosts                no

Il ne reste plus qu’a redémarrer le service.

sudo service unscd start

Enfin pour valider que tous fonctionne bien nous allons effectuer quelques requêtes faisant appel au DNS par exemple un ping:

ping google.fr

Vous obtenez normalement une réponse positive avec une adresse ip de destination. Éditez maintenant le fichier /etc/resolv.conf et commentez toutes les lignes, sauvegardez le fichier et faites une nouvelle requête ping vers un autre domaine:

ping free.fr

Vous obtenez le message « Unknown host ». Maintenant faites le même test mais avec google.fr vous devriez avoir une réponse positive avec la même ip que lors de votre test précédent.

Conclusion vous avez correctement mis en place votre cache DNS sur votre machine.

Enfin pour finir en cas de besoin si vous souhaitez vider votre cache DNS entrez cette commande:

sudo service unscd restart

Voila vous êtes maintenant incollable sur le cache DNS avec UNSCD :D

5 Commentaires+ 1 Commentaire

  • Merci pour ce tuto très clair, ça m’a permis de me débarrasser des lenteurs auxquelles j’étais confronté sur certains site comme Facebook à certaines heures (apparemment les DNS ont du mal à gérer toutes les demandes pour le réseau social bleu) :)

  • Bonjour,

    Merci pour cet article intéressant. Juste une petite remarque : il serait peut-être préférable de préciser explicitement qu’il faut restaurer le contenu du fichier resolv.conf.

    Quelques typos :

    Vous obtene*z* le message « Unknown host »*.* *M*aintenant faite*s* le m*ê*me test mais avec google.fr

    Edite*z* mainten*a*nt le fichier /etc/resolv.conf et commente*z* toutes les lignes*,* sauvegarde*z* le fichier et faite*s* une nouvelle requête ping vers un autre domaine

    Voilà, n’hésitez pas à ne pas publier ce message et à me répondre plutôt par mail si effectivement vous ne me publiez pas ;-)

    • Je n’est aucun problème à vous publiez ;-)
      Merci pour les corrections, tous est rectifié

  • Bonjour Kevin,
    Merci pour cet article que je viens d’appliquer.
    Quelques remarques :
    Il manque un u à la seconde commande : sudo service unscd stop

    idem plus bas pour : sudo service unscd start
    et
    sudo service unscd restart

    Il manque un sudo : sudo vi /etc/nscd.conf

    Encore merci pour la présentation de ce service que je ne connaissais pas.

    • C’est modifié.
      Merci pour le retour :D

Laisser un commentaire

*