Optimiser mon cache DNS avec dnsmasq sous Debian

Guillaume Kulakowski par Guillaume Kulakowski dans Jeedom 26 avril 2024 0
Jeedom

Étape 1 : le constat

Depuis que j’ai mis en place AdGuard Home, je constate beaucoup de requêtes DNS venant de Jeedom. J’avais déjà constaté cela la dernière fois, mais la solution précédente ne peut plus marcher. En effet, maintenant AdGuard Home gère tous mes DNS à la place d’OpenWRT.

AdGuard Home : liste des meilleurs clients avec 33,6k de requêtes pour Jeedom.

De plus, je constate une différence dans les TTL de mes DNS locaux et distants :

$ dig +nocmd +noall +answer +ttlid a google.fr                       
google.fr.              300     IN      A       142.251.220.19
$ dig +nocmd +noall +answer +ttlid a tv.starfleet
tv.starfleet.           0       IN      A       192.168.1.69

Étape 2 : optimisation d’AdGuard Home

La raison de cette différence entre les DNS locaux et distants est que les DNS locaux sont marqués comme « réécrit« . Ils ont alors la même TTL que les DNS « bloqués« . De ce que je comprends, AdGuard Home a une notion de DNS « filtrés » qui correspondent aux DNS « réécrits » (locaux) et « bloqués » (anti-pub). Pour corriger ça, il suffit d’éditer, à la main, la configuration suivante dans le fichier /etc/adguardhome.yaml :

dns:
  ... 
  blocked_response_ttl: 300
  ...

Malheureusement, pour le moment, cette configuration n’est pas disponible via l’IHM et affecte indistinctement les DNS locaux et bloqués.

Désormais, j’ai une TTL de 300 secondes (5 minutes) pour mes DNS locaux comme mes DNS distants (et mes DNS bloqués).

$ dig +nocmd +noall +answer +ttlid a tv.starfleet
tv.starfleet.           300     IN      A       192.168.1.69

Mais malgré ça, Jeedom continu d’exploser le nombre de requêtes DNS… La faute à un manque de cache local au sein de Debian. C’est donc à ce point que nous allons remédier dans la troisième partie.

Étape 3 installations et configuration du plugin dnsmasq sous Debian 11 (Jeedom)

Tout d’abord, installer dnsmasq en version basique (sans le service) :

# apt install dnsmasq-base

Ensuite créer un fichier /etc/NetworkManager/dnsmasq.d/cache.conf avec les informations de cache :

# Taille du cache.
cache-size=1000

# Domaine local.
local=/starfleet/

# Définition de la TTL locale.
local-ttl=300

Pour finir, on va indiquer à Network Manager, via le fichier /etc/NetworkManager/NetworkManager.conf, d’utiliser dnsmasq pour la résolution des DNS :

...
[main]
...
dns=dnsmasq
...

Et on relance Network Manager :

# systemctl restart NetworkManager.service

Et à présent, j’ai un nombre de requêtes qui est plus satisfaisant :

AdGuard Home : liste des meilleurs clients avec 11,6k de requêtes pour Jeedom, soit 3x moins.

Commentaires

Il n'y a pas encore de commentaire, soyez le premier.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Réseaux sociaux