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.

À propos, si vous êtes novice sur Raspberry Pi et que vous souhaitez accélérer vos premiers pas (tout en vous amusant), n’hésitez pas à télécharger mon e-book « Maitrisez Raspberry Pi en 30 jours« . Il s’agit d’un défi de 30 jours au cours duquel vous apprendrez une nouvelle compétence chaque jour. Vous économiserez du temps et de l’argent et pourrez enfin apprécier cet appareil passionnant qu’est le Raspberry Pi. Je vous offre d’ailleurs 10% de remise aujourd’hui en utilisant ce lien !

Rappel rapide

Téléchargez mon antisèche !
Format PDF pratique, avec 74 commandes à retenir pour maîtriser son Raspberry Pi.

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.fr?
  • 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é !

Si les commandes Linux ce n’est pas trop votre truc, n’hésitez pas à jeter un œil à cet article qui vous explique les commandes qu’il faut absolument connaître. Je vous donne aussi une antisèche à télécharger pour les avoir toujours sous la main !

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.

Téléchargez mon antisèche !
Format PDF pratique, avec 74 commandes à retenir pour maîtriser son Raspberry Pi.

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.

Maîtrisez Python sur Raspberry Pi
10% de remise aujourd'hui !
Téléchargez le livre numérique.
Envie d'aller un peu plus loin que faire clignoter une LED ? Vous avez besoin de ce livre pour passer à des projets plus avancés.

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 🙂

Ressources supplémentaires pour votre Raspberry Pi

Initiation au Raspberry Pi en vidéo
Si vous débutez et voulez passer rapidement à la vitesse supérieure, j’ai exactement ce qu’il vous faut.
Regardez ma formation vidéo qui vous aidera à démarrer du bon bien, choisir votre matériel, installer les meilleures applications et vous lancer directement dans vos premiers projets avec mon aide.
Regarder les vidéos dès maintenant

Maîtrisez votre Raspberry Pi en 30 jours
Vous avez besoin de plus ? Si vous êtes à la recherche des meilleures astuces pour devenir expert sur Raspberry Pi, ce livre est fait pour vous. Développez vos compétences sous Linux et pratiquez via de nombreux projets en suivant mes guides étape par étape. 10% de remise aujourd’hui !
Télécharger le livre au format PDF ici

Maîtrisez Python sur Raspberry Pi
Pas besoin d’être un génie pour coder quelques lignes pour votre Raspberry Pi.
Je vous apprends juste ce qu’il faut sur Python afin de réaliser n’importe quel projet. La seconde partie du livre est d’ailleurs consacrée à des exemples de projets ou je vous guide pas à pas.
Ne perdez pas de temps, apprenez le strict nécessaire et économisez 10% avec ce lien :
Télécharger maintenant

Autres ressources pour profiter de votre Raspberry Pi
J’ai regroupé toutes mes recommandations de logiciels, sites utiles et de matériel sur cette page de ressources. Je vous invite à la consulter régulièrement pour faire les bons choix et rester à jour.
Visiter les pages ressources


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

"Maitrisez Python sur Raspberry Pi" est enfin disponible en français (10% de réduction cette semaine)

X