Comment utiliser votre Raspberry Pi comme serveur DNS local ?


Aujourd’hui, vous allez installer un nouveau service sur votre Raspberry Pi : un serveur DNS.
Il vous aidera à accélérer votre navigation Web, à sécuriser vos requêtes et à en apprendre plus sur le fonctionnement du service DNS.
Il existe plusieurs options, mais aujourd’hui, je vais faire simple et vous expliquer comment installer DNSMasq.

DNSMasq est un service DNS qui peut être installé sur Raspberry Pi pour répondre aux requêtes du réseau local.
Il faudra ensuite configurer les ordinateurs du réseau pour utiliser ce serveur DNS plutôt que celui attribué automatiquement par le DHCP.

C’est parti !
Je vais commencer par un petit rappel théorique des serveurs DNS, ensuite nous en installerons un sur votre Raspberry Pi.

Rappel rapide

Si vous êtes ici, vous connaissez probablement les bases des services DNS.
Mais c’est une bonne idée de lire ce paragraphe pour vous assurer de tout comprendre pendant le processus d’installation.

Qu’est-ce qu’un DNS ?

DNS signifie « Domain Name System ».
C’est un service très important sur Internet.
Son rôle est de traduire les noms de domaines en adresses IP.

Sur un réseau, les appareils ne se parlent qu’avec des adresses IP et ont besoin d’un serveur DNS pour convertir les noms d’hôte en adresses IP.

Par exemple, une requête DNS peut être :

  • Votre ordinateur demande : quelle est l’adresse IP de raspberrytips.com?
  • Le serveur DNS répond : vous pouvez utiliser 35.180.0.215

Ce type de demande se produit en permanence sur un réseau local et sur Internet. 

Comment ça fonctionne ?

Votre serveur DNS est membre d’une hiérarchie.
Lorsque vous envoyez une demande, il existe deux cas :

  • Le serveur DNS connaît la réponse : vous obtenez l’adresse IP directement
  • Le serveur DNS ne connaît pas l’adresse IP correspondante : le serveur envoie la même requête à son propre serveur DNS et vous renvoie la réponse

Si son propre serveur DNS n’a pas non plus la réponse, il demandera au serveur supérieur, etc …

Schéma d’un arbre de serveurs DNS

Dans ce schéma, votre Raspberry Pi sera au bas de l’arbre, chaque cercle est un autre serveur DNS.
On appelle le nœud le plus haut un serveur racine, il a la réponse à toutes les demandes sur les noms de domaines existants.

Chaque requête commence en bas et grimpe à la branche suivante dans l’arbre chaque fois qu’un serveur DNS n’a pas la réponse.

Pourquoi avez-vous besoin d’installer un serveur DNS sur votre réseau local ?

Il peut y avoir quatre raisons pour lesquelles vous avez besoin d’un serveur DNS dans votre réseau : 

  • Accélérez votre navigation Internet : dans l’arborescence ci-dessus, chaque fois que la requête est envoyée au serveur DNS supérieur, cela ajoute un temps de latence supplémentaire. Avec un serveur DNS dans votre réseau et en utilisant un système de mise en cache, la plupart des requêtes peuvent être traitées directement.
  • Protégez votre navigation : lorsque vous utilisez les serveurs DNS de votre fournisseur, ou ceux de Google, vous leur permettez de connaître tous les sites Web que vous visitez sur Internet. En gardant le contrôle sur le service DNS, vous gardez cela privé (la plupart du temps)
  • Stabilité : même en utilisant des serveurs DNS bien connus, vous pouvez perdre votre connexion Internet si les serveurs que vous utilisez sont en panne ou trop lents. En ayant un serveur DNS sur votre réseau, vous gardez également le contrôle sur la stabilité.
  • Entrées personnalisées : Avec un serveur DNS chez vous, vous pouvez créer vos propres entrées. Par exemple, si je veux rediriger kodi.me.local vers l’adresse IP de mon centre multimédia Raspberry Pi, c’est possible.

Il y a probablement d’autres avantages, et peut-être quelques inconvénients.
Mais si vous êtes un expert Linux, vous pourrez gérer cela facilement 🙂

Maîtrisez Raspberry Pi en 30 jours
10% de remise aujourd'hui !
Téléchargez le livre numérique.
Découvrez les secrets du Raspberry Pi à travers un challenge de 30 jours.

Installer un serveur DNS sur un Raspberry Pi

Le choix du logiciel

La première chose à faire est de choisir le logiciel que vous utiliserez pour votre service DNS
Je vous ai déjà donné mon choix, mais en gros, vous en avez deux :

  • Bind : le service DNS le plus utilisé sous Linux, puissant mais compliqué à mettre en place
  • DNSMasq : un serveur DNS léger et facile à utiliser

Pour ce projet, vous utiliserez probablement votre Raspberry Pi chez vous dans un petit réseau.
DNSMasq est la meilleure option, il ne prendra pas beaucoup de ressources et sera facile à configurer.

Installez Raspberry Pi OS

J’ai déjà écrit un article entier sur la façon d’installer Raspberry Pi OS sur un Raspberry Pi, je vous laisse le consulter si besoin plutôt que de me répéter. Cliquez sur le lien pour lire le tutoriel étape par étape.

La version Lite sera parfaite pour cela.
Activez le réseau, le service SSH et passez au paragraphe suivant.

Installez DNSMasq sur votre Raspberry Pi

Le processus d’installation de DNSMasq est simple :

  • Connectez-vous à votre Raspberry Pi via SSH (ou tapez directement les commandes ci-dessous dans le terminal du Raspberry Pi)
  • Mettez à jour votre système
    sudo apt update
    sudo apt upgrade
  • Installez le paquet DNSMasq
    sudo apt install dnsmasq

Ça y est, DNSMasq est maintenant installé !

Configuration DNSMasq

Le fichier de configuration DNSMasq est /etc/dnsmasq.conf.
Je vais vous montrer une configuration basique, mais chaque paramètre est bien commenté, vous permettant de trouver facilement celui que vous cherchez.

  • Ouvrez le fichier de configuration avec nano
    sudo nano /etc/dnsmasq.conf
  • Dé-commentez ces trois lignes :
    domain-needed bogus-priv expand-hosts
    La ligne « domain-needed » permet d’envoyer des requêtes DNS au serveur DNS principal uniquement pour des noms de domaine.
    « bogus-priv » évite d’envoyer des requêtes DNS au serveur DNS principal s’il s’agit d’une adresse IP locale.
    Et enfin, « expand-hosts » sera utile plus tard pour ajouter un faux nom de domaine à nos appareils locaux.
  • Ajoutez ensuite cette ligne :
    domain=me.local
    Pour ce nom, vous pouvez définir tout ce que vous voulez
    Dans mon cas, me.local sera mon nom de domaine local
    Si j’ai un hôte nommé « kodi », je pourrais y accéder avec « kodi.me.local »
    Mais on verra ça plus tard
  • Enregistrez et quittez (CTRL+O, CTRL+X)
  • Redémarrez DNSMasq pour appliquer les modifications :
    sudo service dnsmasq restart

Ajouter un hôte local

Pour créer un hôte local (comme kodi.me.local), vous devez l’ajouter dans le fichier hosts

  • Ouvrez le fichier hosts avec nano
    sudo nano/etc/hosts
  • Ajoutez une ligne comme celle-ci à la fin
    192.168.1.17 kodi
    Cette ligne permet au Raspberry Pi d’utiliser « kodi » comme nom pour atteindre 192.168.1.17.
    Après l’enregistrement, vous pouvez envoyer un ping à kodi à partir du Raspberry Pi.
  • Enregistrez et quittez (CTRL+O, CTRL+X)

Le Raspberry Pi peut désormais utiliser kodi comme nom d’hôte
Et tout ordinateur utilisant le Raspberry Pi comme serveur DNS peut utiliser kodi.me.local

Tests

Avant de modifier la configuration de l’ordinateur, nous devons nous assurer que le serveur DNS fonctionne correctement.
Vous pouvez utiliser nslookup pour effectuer des requêtes DNS.
C’est un outil gratuit disponible sur n’importe quel système d’exploitation.

  • Ouvez un terminal sur votre ordinateur (interface en lignes de commande sous Windows)
  • Lancez nslookup:
    nslookup
  • Par défaut, nslookup utilise votre serveur DNS actuel.
    Vous devez le changer comme ceci : 
    server A.B.C.D
    Remplacez A.B.C.D par l’adresse IP du Raspberry Pi.
    Si vous ne la connaissez pas, vous pouvez lire mon article sur la façon d’obtenir l’adresse IP du Raspberry Pi
  • Entrez ensuite n’importe quel nom de domaine pour vérifier que le Raspberry Pi résout correctement les noms :
    raspberrytips.fr
  • Il vous montrera une adresse IP correspondant au nom de domaine.
    Votre serveur DNS fonctionne.
    Vous pouvez également essayer de résoudre un hôte local (ex : kodi.local.me) pour vérifier que cela fonctionne aussi.
Initiation au Raspberry Pi
10% de remise aujourd'hui !
Visionnez ma formation vidéo pour démarrer du bon pied.
Découvrez le Raspberry Pi, le matériel, ses logiciels particuliers et créez vos 5 premiers projets avec moi.

Configuration d’un ordinateur

La dernière étape consiste à configurer votre ordinateur pour utiliser le Raspberry Pi comme serveur DNS.
Pour ce faire, vous avez deux options.

Configuration manuelle

La première méthode consiste à configurer manuellement le serveur DNS sur votre ordinateur.

En fonction de votre système d’exploitation, vous devez accéder à vos paramètres réseau et définir le serveur DNS principal sur l’adresse IP du Raspberry Pi.

Sous Windows, c’est dans le Panneau de configuration> Réseau et Internet> Centre Réseau et partage> Modifier les paramètres de l’adaptateur.
Cliquez avec le bouton droit sur l’interface réseau que vous utilisez et allez dans Propriétés.
Double-cliquez sur Protocole Internet Version 4 et définissez le serveur DNS préféré avec l’adresse IP du Raspberry Pi.

Sur Ubuntu/Debian, vous pouvez le modifier directement dans le fichier /etc/resolv.conf ou dans le gestionnaire réseau si vous avez un bureau graphique.

Configuration DHCP

L’autre option consiste à changer le serveur DNS de votre serveur DHCP.

Dans la configuration DHCP, vous pouvez choisir la plage IP et le serveur DNS envoyés aux clients.

Si vous y avez accès, c’est probablement la meilleure option.
Cela fonctionnera directement avec tous vos appareils, y compris les smartphones.

Si vous choisissez cette option, n’oubliez pas de définir manuellement un serveur DNS externe sur votre Raspberry Pi.

Questions liées

Comment activer la mise en cache des demandes sur DNSMasq? DNSMasq utilise la mise en cache par défaut. Si nécessaire, vous pouvez augmenter la valeur de la taille du cache dans le fichier /etc/dnsmasq.conf. Pour un petit réseau, une valeur de 3000 devrait suffir.

Comment mesurer la vitesse réelle d’Internet avec DNSMasq? La meilleure option consiste à utiliser la commande dig à partir de votre ordinateur. Avec une requête dig (dig google.com), vous obtenez l’adresse IP correspondante, mais aussi le temps écoulé pour traiter la requête. En utilisant un serveur DNS d’Internet, la durée de la requête sera d’au moins 30 ms en moyenne. Avec un serveur local, la première requête prendra 30 ms, mais toutes les suivantes, moins 5 ms.

Conclusion

Ça y est, vous savez maintenant comment installer un serveur DNS sur Raspberry Pi, et comment le configurer.

Le but de ce tutoriel était de vous montrer les bases d’un service DNS
Si vous souhaitez aller plus loin, je vous recommande de lire le site officiel pour plus de détails et d’options.

Je n’ai pas parlé de la fonction DHCP ici car ce n’était pas le but de cet article, mais vous pouvez également utiliser DNSMasq comme serveur DHCP.
Pour utiliser votre Raspberry Pi en tant que serveur réseau tout-en-un, vous pouvez également consulter mon article sur la façon de l’utiliser comme point d’accès sans fil, routeur et pare-feu
La combinaison des deux tutoriels devrait être parfaite 🙂

Restez connectés!

Tenez vous informés des dernières nouveautés en vous inscrivant ici. Pas de panique, il s'agit seulement d'un mail par mois histoire de rester à jour :)


Ce tutoriel ne marche plus à 100%? Prévenez-moi pour que je le mette à jour!

Patrick Fromaget

Je suis l'auteur principal et le créateur de RaspberryTips. Mon but est de vous aider sur tous vos problèmes qui concernent Raspberry Pi en publiant des guides détaillés et des tutoriels rapides. Dans la vraie vie, je suis administrateur système (Linux principalement) avec une solide expérience dans le développement web.

Recent Posts

Promo: -10% sur "Maitrisez Raspberry Pi en 30 jours"

X