Aller au contenu

Accélérez la résolution DNS avec le firmware Tomato et DNSmasq

Logo DnsmasqLes serveurs DNS (Domain Name System) constituent un des piliers essentiels  des réseaux informatiques. Sans serveur DNS, impossible pour une requête vers un nom de domaine d’aboutir. En effet, le rôle du serveur DNS  (une sorte d’annuaire du réseau) est d’effectuer la correspondance entre  le nom d’une machine sur le réseau et son adresse IP. On parle de résolution DNS ( résolveur DNS). Ainsi, lorsque vous tapez une adresse internet, c’est votre Box qui traite cette requête réseau en interrogeant les serveurs DNS de votre fournisseur d’accès (FAI) et ces derniers font la relation entre le nom de domaine demandé et l’adresse IP de la machine qui l’héberge.

On voit donc bien quelle est l’importance de ces serveurs pour le bon fonctionnement des réseaux. (Notamment si un adresse IP vient à changer). Chaque fournisseur d’accès possède ses propres serveurs DNS, (liste des DNS des principaux FAI) mais, il en existent d’autres indépendants des FAI, gratuits,  sécurisés, privés ou publics (ouverts). Et bien évidement, comme les serveurs DNS traitent les demandes vers les noms de domaines, il est possible de faire en sorte qu’ils répondent à la demande ou pas… :mrgreen: (On peut même les faire mentir en renvoyant la requête vers une fausse adresse IP…) C’est ainsi que certains FAI interdisent l’accès à des sites internet (filtrage par nom de domaine). D’autre part, si les serveurs DNS dysfonctionnent ou tombent en panne, votre navigation sur le net peut être ralentie et l’accès aux sites demandés impossible. Voilà pourquoi, lorsque vous en avez la possibilité, il est idiot de ne pas profiter de certaines options embarquées dans votre routeur qui optimisent la résolution et accélèrent la navigation.

Pour les utilisateurs de routeurs avec le firmware open source Tomato, nous allons voir comment accélérer les requêtes DNS de sa connexion internet grâce à Dnsmasq.

Dnsmasq est un serveur de cache DNS et un serveur DHCP intégré au firmware Tomato. Il a été crée pour Linux sous licence GNU GPL en 2001 dans le but de simplifier l’administration d’un réseau local et d’accélérer les requêtes DNS en réduisant les temps de latence. Le firmware Tomato tire pleinement partie de Dnsmasq pour tout ce qui est serveur DHCP (qui assure la configuration automatique des adresses IP sur votre réseau local) mais la partie cache DNS n’est pas active par défaut. En effet, de base, le firmware Tomato vous invite à utiliser directement des serveurs DNS externes (normalement, ceux de votre FAI, DNS primaire et DNS secondaire).

Tomato firmware DNS

Dans cette configuration basique, aucune mise en cache des requêtes n’est effectuée. Tout fonctionne, mais si vous avez 4 machines qui demandent un accès au même site (ex: www.google.com), 4 demandes seront envoyées aux serveurs DNS. A l’opposé, si vous activez la fonctionnalité de cache DNS de Dnsmaq, ce dernier agit comme un serveur DNS local et lorsque qu’une machine demande un adresse internet qui a déjà été demandée par une autre machine du réseau, la requête est traitée sans que les serveurs DNS externes soient de nouveau requis. Votre connexion internet est donc grandement accélérée. D’autant plus que vous avez la possibilité de renseigner plusieurs serveurs DNS externes dans les options de configuration. Ainsi, si les serveurs DNS de votre FAI sont hors service, d’autres sont utilisés et votre navigation n’est pas impactée.

Voyons donc dans la pratique comment procéder. Je précise qu’il est aussi possible d’installer le paquet Dnsmasq sur une machine Linux pour se créer son petit serveur DNS maison (ex : avec un Raspberry Pi). Les valeurs renseignées dans l’interface de configuration du firmware Tomato correspondent aux valeurs à saisir dans le fichier de configuration de Dnsmaq (/etc/dnsmasq.conf).

Tomato firmware internal DNSLa première de choses à faire est d’activer le cache DNS de Dnsmasq. Pour ce faire, une fois connecté à l’interface de votre routeur, il faut vous rendre à la section “Advanced Settings” puis “DHCP/DNS“. Là, il vous faut, comme sur la capture d’écran ci-contre, cocher les cases “Use internal DNS” et “Prevent DNS-rebind attacks” puis sauvegarder les modifications. Maintenant, le service de mise en cache DNS est actif.

Passons maintenant aux options de configuration. Sur la même page, un peu plus bas, vous avez une fenêtre extensible (dnsmaq / cutom configuration) au sein de laquelle il est possible de renseigner des directives. (taille du cache, adresses des serveurs DNS à utliser, ordre d’utilisation, sécurité, confidentialité, nom du réseau local….).

C’est l’exacte réplique des valeurs contenues dans le fichier de configuration dnsmaq.conf (vous pouvez si vous le désirez éditer ce fichier à la main sans passer par l’interface web du routeur en établissant une connexion ssh avec votre routeur dans une fenêtre de commandes).

Pour un cache DNS fonctionnel et performant, voici les valeurs à renseigner :

no-resolv # ne tient pas compte du fichier /etc/resolv.conf

domain-needed # ne traite que les requêtes vers des noms de domaine complets

expand-hosts # ajoute le nom de domaine complet à vos machines (ex : pc1.domaine.local)

domain=monreseau.local # à adapter selon le nom de votre réseau local (ex : maboxsfr.local)

bogus-priv # les requêtes vers les IP privées ne sont pas transmises aux DNS externes

strict-order # interroge les serveurs DNS dans l'ordre où il sont renseignés

filterwin2k # bloque les requêtes DNS SOA et SRV (inutiles dans notre cas)

dns-loop-detect # détecte et élimine les boucles

log-async=5 # limite le nombres de lignes dans le journal (syslog)

cache-size=2048 # nombre de requêtes mises en cache (150 par défaut)

clear-on-reload # le cache est nettoyé à chaque redémarrage de dnsmasq 

# SERVEURS DNS du FAI
server=212.27.40.241 # (renseigner l'adresse du DNS primaire de votre FAI)
server=212.27.40.240 # (renseigner l'adresse du DNS secondaire de votre FAI)

# SERVEURS DNS additionnels de secours
server=80.67.169.12 # (serveur DNS primaire ouvert et gratuit de FDN)
server=80.67.169.40 # (serveur DNS secondaire de FDN)

# SERVEURS DNS PUBLICS DE GOOGLE
# server=8.8.8.8 # (serveur DNS primaire de Google... attention au pistage des requêtes)
# server=8.8.4.4 # (serveur DNS secondaire de Goole..."")

Une fois ces valeurs saisies, sauvegardez à nouveau et tout est oparationnel un fois le service Dnsmaq relancé.

Comme vous pouvez le voir ci-dessus, vous avez la possibilité d’utiliser les serveurs DNS de votre choix. Personnellement, je définis en priorité les DNS de mon fournisseur d’accès et, si ces derniers sont momentanément indisponibles, dnsmaq interroge alors les résolveurs DNS ouverts de FDN (un fournisseur d’accès internet associatif français militant pour un internet libre, ouvert et sans censure).  Vous noterez également que j’ai spécifié une valeur de cache de 2048 (ce qui est immense) et qui veut dire qu’un maximum de 2048 requêtes DNS sont en mémoire. Il vous faudra peut être ajuster cette valeur en fonction de la mémoire disponible dans votre routeur.

Vous pouvez aussi utiliser d’autres serveurs DNS ouverts et gratuits tels que ceux d’Open DNS (appatenant maintenant à Cisco) ou ceux de Google  ou encore ceux de CloudFlare qui vous garantissent “une navigation plus rapide et plus sûre”. Ensuite, tout est une affaire ce choix  et de confiance en matière de pistage et de confidentialité.

J’espère que ce petit tutoriel et cette présentation de Dnsmaq vous sera utile. Bonne navigation à toutes et tous. 😉