GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Configurer un résolveur DNS non lié sur le serveur Ubuntu 20.04

Ce tutoriel vous montrera comment configurer un résolveur DNS local sur Ubuntu 20.04 avec Unbound . Un résolveur DNS est connu sous de nombreux noms, dont certains sont énumérés ci-dessous. Ils font tous référence à la même chose.

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

Des exemples de résolveur DNS sont 8.8.8.8 (serveur DNS public de Google) et 1.1.1.1 (serveur DNS public Cloudflare). Le système d'exploitation de votre ordinateur 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

Habituellement, votre ordinateur, routeur ou serveur utilise le résolveur DNS de votre FAI pour interroger les noms DNS, alors pourquoi utiliser un résolveur DNS local ?

  • Cela peut accélérer les recherches DNS, car 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 des réponses DNS directement à partir du cache sur le résolveur. 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 que vous utilisez des listes noires DNS (DNSBL) pour bloquer le spam, vous devez exécuter votre propre résolveur DNS, car certaines listes noires DNS telles que URIBL refusent les requêtes des résolveurs DNS publics.
  • Si vous exécutez 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.

Astuce :Local ne signifie pas votre ordinateur personnel. Cela signifie plutôt que le résolveur DNS s'exécute sur le même boîtier ou sur le même réseau que le client DNS. Vous pouvez installer le résolveur DNS non lié sur votre ordinateur personnel. Il est local sur votre ordinateur personnel. Vous pouvez également installer un résolveur DNS non lié sur un serveur cloud, et il est local sur le serveur cloud.

Résolveur DNS non lié

Unbound est un résolveur de validation DNS open source, ce qui signifie qu'il peut effectuer une validation DNSSEC pour garantir l'authenticité de la réponse DNS. Fonctionnalités non liées :

  • Léger et extrêmement rapide, car il ne fournit pas de fonctionnalité complète de serveur DNS faisant autorité. Sur l'un de mes serveurs, Unbound utilise un quart de la mémoire requise par BIND9.
  • Cache de réponse DNS
  • Prefetch :récupère les données qui sont sur le point d'expirer afin que le client ne subisse pas de pic de latence lorsque la recherche doit être refaite lorsque la durée de vie des données expire.
  • DNS sur TLS
  • DNS sur HTTPS
  • Minimisation du nom de la requête :envoyez un minimum d'informations aux serveurs en amont pour améliorer la confidentialité.
  • Utilisation agressive du cache validé DNSSEC
  • Zones d'autorité, pour une copie locale de la zone racine
  • DNS64
  • DNSCrypt
  • Validation DNSSEC :elle est activée par défaut sur Ubuntu 🙂
  • Sous-réseau client EDNS
  • Peut fonctionner en tant que redirecteur DNS.
  • Prend en charge les données locales et la zone de politique de réponse pour donner une réponse personnalisée pour certains noms de domaine.

Étape 1 :Installez le résolveur DNS non lié sur Ubuntu 20.04

Exécutez la commande suivante pour installer Unbound sur Ubuntu 20.04 à partir du référentiel par défaut.

sudo apt update
sudo apt install unbound

Vérifier la version.

unbound -V

Exemple de sortie :

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

systemctl status unbound

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

sudo systemctl start unbound

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

sudo systemctl enable unbound

Remarque :Si un autre service écoute sur le port UDP 53, alors unbound peut ne pas être en mesure de démarrer. Vous devez arrêter ce service avant de commencer non lié. Pour savoir quel service utilise déjà le port UDP 53, exécutez la commande suivante.

sudo ss -lnptu | grep 53

Si vous avez déjà installé le résolveur BIND9, vous devez exécuter la commande suivante pour l'arrêter et le désactiver, afin qu'Unbound puisse écouter le port UDP 53. Par défaut, Unbound écoute sur 127.0.0.1:53 et [::1]:53

sudo systemctl disable named --now

Étape 2 : Configurer le non-lié

Le fichier de configuration principal pour Unbound est /etc/unbound/unbound.conf . Prêt à l'emploi, le serveur Unbound sur Ubuntu fournit un service récursif pour localhost uniquement. Les requêtes externes seront refusées.

Modifiez le fichier de configuration.

sudo nano /etc/unbound/unbound.conf

Par défaut, il n'y a qu'une seule ligne de configuration dans ce fichier.

include: "/etc/unbound/unbound.conf.d/*.conf"

Il s'agit d'inclure les fichiers de configuration sous /etc/unbound/unbound.conf.d/ répertoire, qui contient deux fichiers de configuration.

  • qname-minimisation.conf  :active la minimisation de QNAME.
  • root-auto-trust-anchor-file.conf  :Active la validation DNSSEC.

Vous n'avez pas à toucher à ces deux fichiers. Sachez simplement qu'ils feront du bien à votre résolution DNS. Nous devons maintenant ajouter nos configurations personnalisées. Vous pouvez consulter l'exemple de fichier de configuration /usr/share/doc/unbound/examples/unbound.conf pour savoir comment configurer Unbound. Pour votre commodité, j'ai compilé une configuration minimale pour vous. Ajoutez les lignes suivantes dans le /etc/unbound/unbound.conf fichier.

server:
      # the working directory.
      directory: "/etc/unbound"
 
      # run as the unbound user
      username: unbound

      verbosity: 2      # uncomment and increase to get more logging.

      # listen on all interfaces, answer queries from the local subnet.
      interface: 0.0.0.0
      # comment out the following line if your system doesn't have IPv6.
      interface: ::0

      # perform prefetching of almost expired DNS cache entries.
      prefetch: yes

      access-control: 10.0.0.0/8 allow
      access-control: 127.0.0.1/24 allow
      access-control: 2001:DB8::/64 allow

      # hide server info from clients
      hide-identity: yes
      hide-version: yes

remote-control:
      # Enable remote control with unbound-control(8) here.
      control-enable: no

      # what interfaces are listened to for remote control.
      # give 0.0.0.0 and ::0 to listen to all interfaces.
      # set to an absolute path to use a unix local name pipe, certificates
      # are not used for that, so key and cert files need not be present.
      control-interface: 127.0.0.1
      # control-interface: ::1

      # port number for remote control operations.
      control-port: 8953

Les configurations ci-dessus sont explicites. Il y a deux choses que vous devrez peut-être considérer.

(1) Par défaut, Ubuntu exécute le résolveur de stub résolu par systemd qui écoute sur 127.0.0.53:53 . Vous devez l'arrêter, donc unbound peut se lier à 0.0.0.0:53 .

sudo systemctl disable systemd-resolved --now

(2) Si la plage de votre réseau local n'est pas 10.0.0.0/8 , vous devez changer cela, par exemple,

access-control: 192.168.0.0/24 allow

donc unbound acceptera les requêtes DNS du réseau 192.168.0.0/24.

Enregistrez et fermez le fichier. Redémarrez ensuite Unbound.

sudo systemctl restart unbound

Vérifiez l'état. Assurez-vous qu'il est en cours d'exécution.

systemctl status unbound

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

sudo ufw allow in from 10.0.0.0/8 to any port 53

Cela ouvrira les ports TCP et UDP 53 au réseau privé 10.0.0.0/8.

Étape 3 :Définir le résolveur DNS par défaut sur le serveur Ubuntu 20.04

Nous devons faire en sorte que le serveur Ubuntu 20.04 utilise 127.0.0.1 comme résolveur DNS, donc unbound répondra aux requêtes DNS. Le paquet non lié sur Ubuntu est livré avec un service systemd unbound-resolvconf.service qui est censé nous aider à accomplir cela. Cependant, j'ai trouvé que cela ne fonctionnerait pas.

Au lieu de cela, vous pouvez créer un unbound-resolvconf.service personnalisé fichier.

sudo nano /etc/systemd/system/unbound-resolvconf.service

Ajoutez les lignes suivantes dans ce fichier.

[Unit]
Description=local unbound via resolvconf
After=unbound.service
ConditionFileIsExecutable=/sbin/resolvconf

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a lo.unbound'
ExecStop=/sbin/resolvconf -d lo.unbound

[Install]
WantedBy=unbound.service

Enregistrez et fermez ce fichier. Rechargez ensuite systemd.

sudo systemctl daemon-reload

Assurez-vous que votre système dispose du resolvconf binaire.

sudo apt install openresolv

Ensuite, redémarrez ce service.

sudo systemctl restart unbound-resolvconf.service

Vérifiez maintenant le contenu de /etc/resolv.conf .

cat /etc/resolv.conf

Comme vous pouvez le voir, 127.0.0.1 (Unbound) est le résolveur DNS par défaut.

Dépannage

Si vous voyez une valeur différente dans le /etc/resolv.conf fichier, cela signifie que Unbound n'est toujours pas votre résolveur DNS par défaut. Notez que certains hébergeurs comme Linode peuvent utiliser un assistant réseau pour générer automatiquement le /etc/resolv.conf dossier. Pour changer le résolveur DNS par défaut, vous devez désactiver cet assistant réseau dans le panneau de contrôle de l'hébergement.

Si cette méthode ne fonctionne toujours pas, c'est peut-être dû au fait que /etc/resolv.conf Le fichier sur votre serveur Ubuntu n'est pas un lien symbolique vers /run/resolvconf/resolv.conf . Vous devez supprimer le /etc/resolv.conf fichier et créez un lien symbolique.

sudo rm /etc/resolv.conf

sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf

Si le client VPN WireGuard s'exécute sur le serveur Ubuntu, vous devez utiliser le paramètre DNS suivant dans le fichier de configuration du client WireGuard.

DNS = 127.0.0.1

Redémarrez ensuite le client VPN WireGuard.

Étape 4 :Définition du résolveur DNS par défaut sur les ordinateurs clients

Sur le bureau Ubuntu, vous pouvez suivre les instructions ci-dessus pour définir le résolveur DNS par défaut, mais n'oubliez pas de remplacer 127.0.0.1 par l'adresse IP du serveur Unbound. Les étapes de configuration du résolveur DNS par défaut sur MacOS et Windows sont disponibles sur Internet.

Comment désactiver IPv6 dans Unbound

Si votre serveur n'a pas de connectivité IPv6, c'est une bonne idée de désactiver IPv6 dans Unbound pour réduire les recherches DNS inutiles sur IPv6. Pour désactiver IPv6 dans Unbound sur Ubuntu, ajoutez simplement la ligne suivante dans le server: clause dans /etc/unbound/unbound.conf fichier.

do-ip6: no

Enregistrez et fermez le fichier. Redémarrez ensuite Unbound.

sudo systemctl restart unbound

DNSSEC non lié

DNSSEC est un moyen de valider que la réponse DNS n'est pas falsifiée. Il est activé par défaut si vous installez Unbound à partir du référentiel Ubuntu par défaut. Faisons une requête DNS rapide sur le serveur Ubuntu 20.04.

dig A linuxbabe.com

Vous pouvez voir l'ad drapeau dans la réponse DNS. AD signifie données authentiques.

Notez que le nom de domaine doit activer DNSSEC pour que la validation fonctionne. Si vous ne voyez pas l'indicateur d'annonce, cela peut signifier que le nom de domaine n'a pas activé DNSSEC.

Données locales

Vous pouvez utiliser la fonctionnalité de données locales dans Unbound pour servir les noms d'hôte internes locaux ou remplacer les enregistrements DNS publics.

Par exemple, si j'installe unbound sur le serveur Web de mon blog, je peux ajouter les quatre lignes suivantes dans le server: clause dans les fichiers de configuration Unbound, de sorte que le domaine soit toujours résolu en localhost.

local-data: "linuxbabe.com      A   127.0.0.1"
local-data: "www.linuxbabe.com  A   127.0.0.1"
local-data: "linuxbabe.com      AAAA   ::1"
local-data: "www.linuxbabe.com  AAAA   ::1"

Aucun serveur n'a pu être atteint

Si vous voyez l'erreur suivante lors de l'utilisation de dig commande sur les ordinateurs clients

;; connection timed out; no servers could be reached

Il se peut que votre règle de pare-feu soit erronée ou que le résolveur Unbound ne fonctionne pas.

Conclusion

J'espère que ce tutoriel vous a aidé à configurer un résolveur DNS local sur Ubuntu 20.04 avec Unbound. 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. Pour configurer un résolveur DoT ou un résolveur DoH, veuillez lire les tutoriels suivants.

  • Comment configurer facilement un résolveur DNS sur TLS avec Nginx sur Ubuntu
  • Configurer le résolveur DNS sur HTTPS (DoH) sur Ubuntu avec DNSdist

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 🙂


Ubuntu
  1. Comment configurer et installer le serveur proxy Squid sur Ubuntu 18.04

  2. Comment configurer WireGuard sur Ubuntu 22.04

  3. Comment installer le résolveur DNS non lié sur Ubuntu 22.04

  4. Comment configurer un serveur TeamSpeak sur Ubuntu 16.04

  5. Comment configurer un résolveur DNS non lié sur Ubuntu 20.04

Comment configurer facilement un résolveur DNS sur TLS avec Nginx sur Ubuntu

Comment configurer Quad 9 DNS sur Ubuntu 16.04 et Ubuntu 17.10 Desktop

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

Comment installer le serveur DNS sur Ubuntu 20.04 LTS

Configurer le serveur Ubuntu avec EHCP (LAMP, DNS, FTP, Mail)