GNU/Linux >> Tutoriels Linux >  >> Debian

Configurez votre propre résolveur DNS sur Debian 10 Buster avec BIND9

Ce didacticiel vous montrera comment configurer un résolveur DNS local sur Debian 10 Buster, avec le logiciel DNS BIND9 largement utilisé. Il existe de nombreux synonymes de résolveur DNS, dont certains sont répertoriés ci-dessous. Ils font tous référence à la même chose.

  • résolveur complet (contrairement au résolveur stub)
  • Récurseur DNS
  • serveur DNS récursif
  • résolveur récursif

Sachez également qu'un serveur DNS peut également être appelé serveur de noms. Des exemples de résolveur DNS sont 8.8.8.8 (serveur DNS public Google) et 1.1.1.1 (serveur DNS public Cloudflare). Le système d'exploitation de votre PC dispose également d'un résolveur, bien qu'il soit appelé résolveur de stub en raison de sa capacité limitée. Un résolveur de stub est un petit client DNS sur l'ordinateur de l'utilisateur final qui reçoit les requêtes DNS d'applications telles que Firefox et transmet les requêtes à un résolveur récursif. Presque tous les résolveurs peuvent mettre en cache la réponse DNS pour améliorer les performances, ils sont donc également appelés serveur DNS de mise en cache.

Pourquoi exécuter votre propre résolveur DNS

Normalement, votre ordinateur ou votre routeur utilise le résolveur DNS de votre FAI pour interroger les noms de domaine afin d'obtenir une adresse IP. L'exécution de votre propre résolveur DNS local peut accélérer les recherches DNS, car

  1. Le résolveur DNS local n'écoute que vos requêtes DNS et ne répond pas aux requêtes DNS d'autres personnes. Vous avez donc beaucoup plus de chances d'obtenir une réponse DNS directement à partir du cache sur le résolveur.
  2. La latence du réseau entre votre ordinateur et le résolveur DNS est éliminée (presque nulle), de sorte que les requêtes DNS peuvent être envoyées plus rapidement aux serveurs DNS racine.

Si vous exécutez un serveur de messagerie et utilisez des listes noires DNS (DNSBL) pour bloquer le spam, il vous est conseillé d'exécuter un résolveur DNS local pour accélérer les recherches DNS. Si vous utilisez votre propre serveur VPN sur un VPS (Virtual Private Server), il est également recommandé d'installer un résolveur DNS sur le même VPS.

Vous pouvez également exécuter votre propre résolveur DNS si vous n'aimez pas que votre historique de navigation Internet soit stocké sur un serveur tiers.

Si vous possédez un site Web et que vous souhaitez que votre propre serveur DNS gère la résolution de nom pour votre nom de domaine au lieu d'utiliser le serveur DNS de votre registraire de domaine, vous devrez alors configurer un serveur DNS faisant autorité, qui est différent d'un résolveur DNS. BIND peut agir en même temps comme un serveur DNS faisant autorité et un résolveur DNS, mais c'est une bonne pratique de séparer les deux rôles sur des boîtes différentes . Ce didacticiel montre comment configurer un résolveur DNS local et, comme il sera utilisé sur un hôte local/réseau local, aucun cryptage (DNS sur TLS ou DNS sur HTTPS) n'est nécessaire. La configuration d'un serveur DoT ou DoH sera abordée dans un prochain article.

Veuillez noter que vous devez avoir le privilège root lors de l'installation de logiciels sur Debian. Vous pouvez ajouter sudo au début d'une commande, ou utilisez su - commande pour passer à l'utilisateur root.

Installer BIND9 sur Debian 10 Buster

BIND (Berkeley Internet Name Domain) est un logiciel de serveur DNS open source largement utilisé sur Unix/Linux en raison de sa stabilité et de sa haute qualité. Il a été développé à l'origine par UC Berkeley, et plus tard en 1994, son développement a été transféré à Internet Systems Consortium, Inc (ISC).

Exécutez la commande suivante pour installer BIND 9 sur Debian 10 Buster à partir du référentiel par défaut. BIND 9 est la version actuelle et BIND 10 est un projet mort.

sudo apt update
sudo apt install bind9 bind9utils bind9-doc bind9-host dnsutils

Vérifiez les informations de version.

sudo named -v

Exemple de sortie :

BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c>

Pour vérifier le numéro de version et les options de compilation, exécutez

sudo named -V

Par défaut, BIND démarre automatiquement après l'installation. Vous pouvez vérifier son statut avec :

systemctl status bind9

Astuce :si la commande ci-dessus ne se ferme pas immédiatement, appuyez sur Q.

S'il ne fonctionne pas, démarrez-le avec :

sudo systemctl start bind9

Et activez le démarrage automatique au démarrage :

sudo systemctl enable bind9

Le serveur BIND fonctionnera en tant que bind user, qui est créé lors de l'installation, et écoute sur le port TCP et UDP 53, comme on peut le voir en exécutant la commande suivante :

sudo netstat -lnptu | grep named

Habituellement, les requêtes DNS sont envoyées au port UDP 53. Le port TCP 53 est pour les réponses dont la taille est supérieure à 512 octets.

Le démon BIND est appelé named . (Un démon est un logiciel qui s'exécute en arrière-plan.) Le named le binaire est installé par le bind9 package et il y a un autre binaire important :rndc , le contrôleur de démon de nom distant, qui est installé par bind9utils emballer. Le rndc binaire est utilisé pour recharger/arrêter et contrôler d'autres aspects du démon BIND. La communication s'effectue via le port TCP 953.

Par exemple, nous pouvons vérifier l'état du serveur de noms BIND.

sudo rndc status

Configurations pour un résolveur DNS local

/etc/bind/ est le répertoire qui contient les configurations pour BIND.

  • named.conf  :le fichier de configuration principal qui inclut les configurations de trois autres fichiers.
  • db.127 :fichier de zone de mappage inverse localhost IPv4.
  • db.local :fichier de zone de mappage localhost IPv4 et IPv6.
  • db.empty :un fichier de zone vide

Le paquet bind9 sur Debian 10 n'est pas livré avec un db.root fichier, il utilise maintenant le fichier d'indications de racine à /usr/share/dns/root.hints . Les indices de racine Le fichier est utilisé par les résolveurs DNS pour interroger les serveurs DNS racine. Il existe 13 groupes de serveurs DNS racine, à partir de a.root-servers.net à m.root-servers.net .

Prêt à l'emploi, le serveur BIND9 sur Debian fournit un service récursif pour les clients localhost et réseau local uniquement. Les requêtes extérieures seront refusées. Vous n'avez donc pas à modifier les fichiers de configuration. Pour vous familiariser avec les configurations de BIND 9, je vais vous montrer comment activer le service de récursivité quand même.

Le fichier de configuration principal de BIND /etc/bind/named.conf source les paramètres de 3 autres fichiers.

  • /etc/bind/named.conf.options
  • /etc/bind/named.conf.local
  • /etc/bind/named.conf.default-zones

Pour activer le service de récursivité, modifiez le premier fichier.

sudo nano /etc/bind/named.conf.options

Dans les options clause, ajoutez les lignes suivantes. Remplacez les adresses IP dans le allow-recursion déclaration avec vos propres adresses de réseau local.

 // hide version number from clients for security reasons.
 version "not currently available";

 // optional - BIND default behavior is recursion
 recursion yes;

 // provide recursion service to trusted clients only
 allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; };

 // enable the query log
 querylog yes;

Enregistrez et fermez le fichier. Testez ensuite la syntaxe du fichier de configuration.

sudo named-checkconf

Si le test réussit (indiqué par une sortie silencieuse), redémarrez BIND9.

sudo systemctl restart bind9

Si vous avez un pare-feu en cours d'exécution sur le serveur BIND, vous devez ouvrir le port 53 pour permettre aux clients LAN d'envoyer des requêtes DNS. Si vous utilisez un pare-feu UFW, vous pouvez exécuter la commande suivante.

sudo ufw allow in from 192.168.0.0/24 to any port 53

Cela ouvrira les ports TCP et UDP 53 au réseau privé 192.168.0.0/24. Ensuite, à partir d'un autre ordinateur du même réseau local, nous pouvons exécuter la commande suivante pour interroger l'enregistrement A de google.com. Remplacez 192.168.0.102 par l'adresse IP de votre résolveur BIND.

dig A google.com @192.168.0.102

Maintenant, sur le résolveur BIND, vérifiez le journal des requêtes avec la commande suivante.

sudo journalctl -eu bind9

Cela affichera le dernier message de journal de l'unité de service bind9. Je peux trouver la ligne suivante dans le journal, qui indique qu'une requête DNS pour l'enregistrement A de google.com a été reçue du port 57806 de l'adresse IP 192.168.0.103.

named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)

Configuration du résolveur DNS par défaut sur le serveur Debian 10 Buster

Sur le serveur BIND, nous devons définir 127.0.0.1 comme résolveur DNS par défaut. Vous pouvez vérifier le résolveur DNS actuel sur Debian 10 avec la commande suivante.

cat /etc/resolv.conf

Exemple de sortie :

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#      DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 2001:19f0:300:1704::6
nameserver 108.61.10.10

Le paquet bind9 sur Debian 10 est livré avec une unité de service Systemd bind9-resolvconf.service , ce qui nous aidera à définir BIND comme résolveur DNS par défaut sur le serveur Debian. Par défaut, ce service est désactivé, nous devons le démarrer et activer le démarrage automatique au démarrage.

sudo systemctl start bind9-resolvconf

sudo systemctl enable bind9-resolvconf

Vous pouvez maintenant vérifier le contenu de /etc/resolv.conf de nouveau. Comme vous pouvez le constater, 127.0.0.1 (BIND) est désormais le résolveur DNS par défaut sur Debian 10 Buster.

Si votre résolveur DNS n'est pas 127.0.0.1, il se peut que votre système n'ait pas le resolvconf binaire, ce qui provoque le bind9-resolvconf service échouer. Vous devez installer le resolvconf package et redémarrez le service.

sudo apt install resolvconf

sudo systemctl restart bind9-resolvconf

Configuration du résolveur DNS par défaut sur les ordinateurs clients

Vous pouvez maintenant configurer d'autres calculs sur le réseau local pour utiliser le serveur BIND comme résolveur DNS. Pour les ordinateurs Windows et MacOS, vous pouvez effectuer une recherche sur Google pour savoir comment définir les résolveurs DNS par défaut. Ici, je vais vous montrer comment configurer le résolveur DNS sur les ordinateurs de bureau Linux. La méthode suivante fonctionne sur n'importe quelle distribution Linux qui utilise NetworkManager.

Cliquez sur l'icône Network Manager sur votre bureau Linux pour trouver les Edit connections . (Sur certaines distributions Linux, vous devez cliquer avec le bouton droit sur le gestionnaire de réseau.)

Sélectionnez ensuite la connexion actuelle et cliquez sur l'icône en forme de rouage pour modifier cette connexion.

Sélectionnez l'onglet Paramètres IPv4, changez la méthode de Automatic(DHCP) vers Automatic(DHCP) addresses only , ce qui empêchera votre système Ubuntu d'obtenir l'adresse du serveur DNS de votre routeur. Spécifiez ensuite un serveur DNS. Ici, je saisis l'adresse IP du serveur BIND dans mon réseau local.

Enregistrez vos modifications. Redémarrez ensuite NetworkManager pour que les modifications prennent effet.

sudo systemctl restart NetworkManager

Une fois reconnecté, cliquez à nouveau sur l'icône Network Manager et sélectionnez connection information . Vous pouvez voir que votre ordinateur de bureau Linux utilise maintenant votre serveur DNS BIND.

Comment désactiver IPv6 dans BIND

Si vous n'utilisez pas IPv6 sur votre réseau, c'est une bonne idée de désactiver IPv6 dans BIND, sinon il y aura beaucoup d'erreurs concernant IPv6 dans le journal BIND comme ci-dessous.

network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53

Pour désactiver IPv6 dans BIND sur Ubuntu, ouvrez simplement le /etc/default/bind9 fichier

sudo nano /etc/default/bind9

Ajouter -4 aux OPTIONS.

OPTIONS="-u bind -4"

Enregistrez et fermez le fichier. Redémarrez ensuite BIND et vous avez terminé.

sudo systemctl restart bind9

ÉCHEC DU SERVEUR DE LIAISON

Si votre résolveur BIND ne peut pas répondre aux requêtes DNS (SERVFAIL) et que vous voyez la ligne suivante dans le journal BIND.

dnssec: warning: managed-keys-zone: Unable to fetch DNSKEY set '.': timed out

C'est probablement parce que votre serveur ne dispose pas d'une connectivité IPv6 fonctionnelle. C'est arrivé à l'un de mes serveurs. Je pensais que la connectivité IPv6 fonctionnait comme d'habitude, mais elle est soudainement interrompue pour des raisons que je ne connaissais pas. Une fois que j'ai désactivé IPv6 dans BIND, la résolution DNS fonctionne à nouveau.

Redémarrage automatique BIND

Si pour une raison quelconque votre processus Bind est tué, vous devez exécuter la commande suivante pour le redémarrer.

sudo systemctl restart bind9

Au lieu de taper manuellement cette commande, nous pouvons faire en sorte que bind redémarre automatiquement en modifiant le named.service unité de service systemd. Pour remplacer la configuration par défaut du service systemd, nous créons un répertoire séparé.

sudo mkdir -p /etc/systemd/system/bind9.service.d/

Créez ensuite un fichier sous ce répertoire.

sudo nano /etc/systemd/system/bind9.service.d/restart.conf

Ajoutez les lignes suivantes dans le fichier, ce qui fera redémarrer automatiquement Bind 5 secondes après la détection d'un échec.

[Service]
Restart=always
RestartSec=5s

Enregistrez et fermez le fichier. Rechargez ensuite systemd.

sudo systemctl daemon-reload

Pour vérifier si cela fonctionnerait, tuez Bind avec :

sudo pkill named

Vérifiez ensuite l'état de la liaison. Vous trouverez Bind redémarré automatiquement.

systemctl status bind9

BIND max-cache-taille

BIND peut mettre en cache les résultats DNS sur le serveur pour accélérer la recherche DNS pour les clients. BIND suppose que vous exécutez un résolveur DNS dédié, c'est-à-dire qu'aucun autre service Web ne s'exécute sur le même hôte, donc la taille de cache par défaut (définie par max-cache-size ) est défini sur 90 % de la RAM totale pour obtenir les meilleures performances. Vous pouvez voir une ligne comme ci-dessous dans le journal BIND (sudo journalctl -eu bind9 ) lorsque BIND démarre.

none:100: 'max-cache-size 90%' - setting to 7165MB (out of 7961MB)

Notez que BIND n'utilisera pas 90% de votre RAM immédiatement. S'il n'y a que quelques requêtes DNS, BIND n'utilise qu'une petite quantité de RAM, car il n'y a pas beaucoup de résultats DNS à mettre en cache. S'il y a beaucoup de requêtes DNS, il utilisera beaucoup de RAM pour stocker le cache DNS.

Si votre RAM est limitée, vous ne voudrez peut-être pas que BIND utilise 90 % de votre RAM pour le cache. Editez le fichier de configuration BIND /etc/bind/named.conf.options .

sudo nano /etc/bind/named.conf.options

Ajoutez la directive suivante dans les options clause. Remplacez 50 % par votre valeur préférée.

max-cache-size 50%;

Redémarrez BIND pour que la modification prenne effet.

sudo systemctl restart bind9

Conclusion

J'espère que ce tutoriel vous a aidé à configurer un résolveur DNS local sur Debian 10 Buster avec BIND9. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces. Prenez soin de vous 🙂


Debian
  1. Comment définir une adresse IP statique sur Debian 10 Buster

  2. Comment configurer un serveur Samba sur Debian 10 Buster

  3. Comment configurer un serveur NFS sur Debian 10 Buster

  4. Comment installer Steam avec Steam Play sur Debian 10 Buster

  5. Configurer un serveur de messagerie avec PostfixAdmin sur Debian 9

Comment configurer facilement un serveur de messagerie sur Debian 10 Buster avec iRedMail

Exécutez votre propre site Web de partage de vidéos avec YouPHPTube sur Debian 10 Buster

Configurer le serveur DNS faisant autorité BIND sur Debian 10 Buster

Configurer le résolveur DNS sur HTTPS (DoH) sur Ubuntu avec DNSdist

Configurer un résolveur DNS local sur Ubuntu 18.04, 16.04 avec BIND9

Configurer le résolveur DNS local sur Ubuntu 20.04 avec BIND9