Une résolution faisant intervenir un serveur DNS distant est de l'ordre de la vingtaine de millisecondes. Avec un cache DNS sur le réseau local ou s’exécutant sur la machine on descend autour de la milliseconde dès la deuxième demande de résolution.
Le plus simple naturellement c'est d'utiliser le gestionnaire de paquets:
sudo apt-get install dnsmasq
Dans l'exemple ci-dessus la distribution intègre la version 2.85 de dnsmasq:
dnsmasq --version Version de Dnsmasq 2.85 Copyright (c) 2000-2021 Simon Kelley
Il peut être utile d'installer une version plus récente notamment pour bénéficier de certaines fonctionnalités comme le peuplement des ensembles nft) disponible à partir de la version 2.87.
Après toute modification des fichiers de configuration, il faut redémarrer le service pour les prendre en compte.
Le signal SIGUSR1 fait un dump des statistiques du cache dans le fichier log:
kill -USR1 $(cat /var/run/dnsmasq/dnsmasq.pid) journalctl --unit dnsmasq.service
Dans l'exemple ci-dessous, on retrouve bien dans les journaux système les statistiques du cache:
mars 26 14:48:36 debian11vm dnsmasq[10251]: time 1679834916 mars 26 14:48:36 debian11vm dnsmasq[10251]: cache size 150, 0/1 cache insertions re-used unexpired cache entries. mars 26 14:48:36 debian11vm dnsmasq[10251]: queries forwarded 5, queries answered locally 4 mars 26 14:48:36 debian11vm dnsmasq[10251]: queries for authoritative zones 0 mars 26 14:48:36 debian11vm dnsmasq[10251]: pool memory in use 48, max 48, allocated 2400 mars 26 14:48:36 debian11vm dnsmasq[10251]: server 192.168.122.1#53: queries sent 5, retried or failed 0
A la réception du signal HUP, dnsmasq vide le cache DNS :
killall -HUP dnsmasq # Equivalent kill -HUP $(cat /var/run/dnsmasq/dnsmasq.pid)
Il est possible de redéfinir l'adresse IP associée à un domaine (fake DNS):
# IP originale associée au FQDN www.example.com dig +short www.example.com 93.184.216.34
On modifie le fichier de configuration /etc/dnsmasq.d/local.conf
address=/www.example.com/192.168.33.11