Comment exécuter votre propre serveur DNS sur votre réseau local

0
148
jivacore/Shutterstock.com

Exécution de votre Votre propre serveur DNS est un excellent moyen d'accélérer la réactivité de votre réseau, de réduire votre dépendance à l'infrastructure publique et de bénéficier de fonctionnalités supplémentaires telles que le routage du nom d'hôte. Voici comment configurer un serveur DNS sur une machine Linux à l'aide de Dnsmasq.

Qu'est-ce que le DNS ?

Le DNS est le système qui traduit un nom de domaine comme example.com en l'adresse IP numérique de son serveur. Cela pourrait ressembler à 127.0.0.1. Chaque fois que vous effectuez une demande de réseau en utilisant un nom de domaine, votre système effectue une recherche DNS pour déterminer l'adresse du serveur qu'il doit contacter.

Cela ajoute une surcharge à chaque demande que vous faites. Bien que votre appareil mette en cache les réponses DNS, les visites vers de nouveaux domaines entraîneront un aller-retour DNS avant le début de la demande réelle. Cela se produit au niveau de la pile réseau du système d'exploitation, invisible pour vous en tant qu'utilisateur.

Les FAI exécutent généralement des serveurs DNS. Vous comptez probablement sur le serveur de votre FAI si vous utilisez les paramètres par défaut de votre routeur et de vos appareils. D'autres serveurs DNS publics sont disponibles auprès de fournisseurs tels que Cloudflare et Google.

Pourquoi exécuter votre propre DNS ?

L'exécution de votre propre serveur DNS vous donne plus de contrôle sur votre réseau. Une motivation commune est de pouvoir configurer des mappages de domaine au niveau du réseau, tels que le serveur Web vers 192.168.0.101. La configuration de votre routeur pour utiliser votre DNS permettrait à n'importe lequel de vos appareils connectés d'accéder à 192.168.0.101 via http://web-server.

Publicité

Avoir votre propre serveur DNS vous permet de centraliser les paramètres dans un seul emplacement au lieu de les appliquer individuellement dans /etc/hosts sur chaque appareil. Ils s'appliqueront à tout ce que vous connectez à votre réseau, y compris le matériel embarqué qui ne fournit aucun autre moyen de personnaliser sa pile de routage.

Un serveur DNS interne peut également améliorer les performances et fournir une couche supplémentaire de résilience. Les pannes DNS à grande échelle ne sont pas inconnues ; l'utilisation d'un serveur personnalisé avec un cache de longue durée pour les services critiques avec lesquels vous interagissez pourrait vous aider à éviter les temps d'arrêt chez votre fournisseur en amont sélectionné.

DNS avec Dnsmasq

Dnsmasq est un serveur DNS léger qui est inclus avec la plupart des distributions Linux. Il est également d'une simplicité rafraîchissante à configurer.

Avant de commencer, cela vaut la peine de réfléchir aux fonctionnalités que votre serveur DNS doit fournir. Dans ce guide, nous examinerons la configuration de Dnsmasq avec une mise en cache locale, des routes de domaine personnalisées et la version 8.8.8.8 de Google en tant que fournisseur DNS en amont.

Le flux de routage ressemblera à comme ceci :

  • Le routeur réseau reçoit une requête de l'un de vos appareils connectés. Le routeur sera configuré pour utiliser l'hôte Dnsmasq comme serveur DNS.
  • Dnsmasq vérifiera s'il a une route définie pour le nom de domaine, comme le serveur Web vers 192.168.0.101. Si la demande concernait http://web-server/example-page, il renverra 192.168.0.101 au routeur.
  • Lorsque Dnsmasq n'a pas de route correspondante, il transmet la requête DNS à Google 8.8.8.8, permettant la résolution sur l'Internet public. Cela garantit que vous pouvez toujours accéder au Web plus large lorsque vous utilisez votre propre DNS.

Vous n'aurez pas besoin de modifier la configuration de vos appareils clients. Tout ce qui se trouve derrière votre routeur finira par effectuer des requêtes DNS via Dnsmasq. Cependant, il convient de noter que tous les systèmes d'exploitation de bureau et mobiles populaires prennent en charge la configuration d'un serveur DNS, vous pouvez donc configurer des appareils individuels pour utiliser Dnsmasq sans l'activer au niveau du routeur.

Mise en route

Nous supposerons que vous avez déjà une machine Linux fonctionnelle prête à héberger Dnsmasq. Dnsmasq n'est pas particulièrement gourmand en ressources – si vous avez peu de périphériques clients, il fonctionnera facilement sur un Raspberry Pi.

Publicité

Votre hôte doit avoir une adresse IP statique attribuée. A partir de là, l'IP 192.168.0.1 fait référence au serveur Dnsmasq.

Assurez-vous que Dnsmasq est installé :

# En supposant un système Debian apt update apt install dnsmasq

Le fichier de configuration de Dnsmasq se trouve généralement dans /etc/dnsmasq.conf. Celui-ci est pré-rempli avec les paramètres initiaux. Certaines modifications doivent être apportées pour que Dnsmasq fonctionne efficacement dans un scénario de réseau local. Exécutez sudo nano /etc/dnsmasq.conf pour ouvrir le fichier, puis utilisez le raccourci clavier Ctrl+W pour rechercher et décommenter les lignes suivantes :

#domain-needed #bogus-priv

Supprimez le caractère # de le début de chaque ligne. Voici ce que ces paramètres permettent :

  • domaine requis– Cela empêche Dnsmasq de transférer les noms locaux sans partie de domaine vers le serveur DNS en amont. Dans notre installation, cela signifie que example.com sera éligible pour une résolution via Google, mais pas example ou le serveur Web. Il réserve des noms sans point pour votre réseau local.
  • bogus-priv– Empêche le transfert des requêtes de recherche inversée DNS vers le serveur DNS en amont. Cela signifie que les adresses IP internes telles que 192.168.0.101 ne seront jamais exposées à Google. Ne pas activer cela pourrait involontairement divulguer l'architecture de votre réseau interne à votre fournisseur en amont.

Pour définir votre serveur DNS en amont, ajoutez une nouvelle ligne à votre fichier de configuration :

server= 8.8.8.8 server=4.4.4.4

Ceci indique à Dnsmasq de transférer les requêtes non résolues vers 8.8.8.8. Si ce serveur n'est pas disponible, 4.4.4.4 sera utilisé à la place. Ces adresses sont les résolveurs principaux et secondaires du service DNS de Google.

Ajustez ensuite la taille du cache. La valeur par défaut est une valeur relativement faible de 150 requêtes mises en cache. Augmenter cela permettra à Dnsmasq de servir plus de recherches à partir du cache, réduisant ainsi la latence du réseau. Recherchez la ligne cache-size, décommentez-la et modifiez sa valeur :

cache-size=1000

Enregistrez et fermez le fichier maintenant.

Mappage des noms d'hôtes sur les adresses IP

Il existe différentes manières de mapper les noms d'hôtes à leurs adresses IP. Le plus simple est d'ajouter des entrées au fichier /etc/hosts existant de votre serveur. Dnsmasq charge automatiquement les règles de ce fichier dans le cadre de sa configuration par défaut.

Publicité

Ouvrez /etc/hosts et ajoutez vos routes au bas du fichier. L'adresse IP vient en premier, suivie du nom à attribuer :

192.168.0.101 web-server 192.168.0.105 gateway.lan

Ces lignes signifient que toute demande à http://web-server sera dirigée vers 192.168 .0.101 tandis que http://gateway.lan aboutira à 192.168.0.5. Enregistrez et fermez le fichier lorsque vous avez fini de mapper vos appareils.

Test de votre serveur

Redémarrez Dnsmasq pour appliquer toutes vos modifications :

sudo service dnsmasq restart

Vérifiez que le serveur fonctionne correctement :

sudo service dnsmasq status

Vous devriez voir actif (en cours d'exécution) affiché en vert. Si vous ne le faites pas, vérifiez les lignes de journal au bas des informations d'état pour déterminer ce qui ne va pas.

Vous êtes maintenant prêt à tester votre serveur. Vous pouvez effectuer des tentatives de recherche DNS manuelles avec l'outil dig. Vous devrez peut-être d'abord installer le package dnsutils.

dig google.com @localhost dig gateway.lan @localhost

Ces deux commandes doivent afficher une adresse IP dans la SECTION RÉPONSE. Dans le cas de gateway.lan, le résultat doit être 192.168.0.5 selon la règle de routage configurée dans /etc/hosts. La partie @localhost des commandes indique à dig d'interroger votre serveur DNS local.

Configuration de votre réseau

La dernière étape consiste à configurer votre routeur réseau pour effectuer des recherches DNS via votre serveur Dnsmasq. Les étapes pour cela varient en fonction de l'équipement de routage que vous utilisez.

Publicité

Une fois que vous avez trouvé la bonne page de paramètres, définissez l'IP de votre serveur (192.168.0.1 dans ce guide) comme serveur DNS principal du routeur. C'est une bonne idée de configurer un fournisseur DNS public, tel que Google 8.8.8.8, comme serveur secondaire. Cela garantit que vous aurez toujours accès à Internet si votre serveur DNS tombe en panne et se déconnecte.

Maintenant, tous les appareils connectés à votre routeur effectueront des requêtes DNS via votre instance Dnsmasq. Ils seront en mesure d'atteindre vos appareils par leurs noms attribués, tels que web-server et gateway.lan, et bénéficieront de la mise en cache DNS au niveau du réseau.

Conclusion

Le DNS est un sujet complexe, mais Dnsmasq facilite la mise en service d'un serveur de base. Il existe de nombreux autres paramètres que vous pouvez explorer une fois que les fonctionnalités de base fonctionnent. Ceux-ci vous permettent de filtrer les requêtes, de gérer les relais et les proxy, d'exécuter des scripts lorsque des événements se produisent et de configurer d'autres types d'enregistrement DNS tels que les résultats MX pour les serveurs de messagerie.

Dnsmasq n'a généralement pas besoin de beaucoup de manuel intervention une fois qu'il est en direct. Vous pouvez surveiller les journaux à l'aide de service dnsmasq status ou systemctl status dnsmasq. Vous êtes maintenant prêt à profiter de votre serveur DNS auto-hébergé, en maximisant les performances et en vous permettant d'utiliser des noms de domaine internes pour atteindre les périphériques du réseau local.