Geekflare est soutenu par notre public. Nous pouvons gagner des commissions d'affiliation en achetant des liens sur ce site.
Partager sur:

Comment configurer un serveur de mise en cache DNS local sur Linux?

mise en cache DNS local Linux
Scanner de sécurité des applications Web Invicti – la seule solution qui offre une vérification automatique des vulnérabilités avec Proof-Based Scanning™.

Les recherches DNS ne sont normalement pas quelque chose dont vous devez vous soucier. Parfois tu devrais!

Si le FAI de votre domicile ou de votre bureau a des serveurs de noms lents ou si votre serveur effectue de nombreuses recherches, vous avez besoin d'un serveur DNS de mise en cache local.

Comment un serveur DNS de mise en cache m'aidera-t-il?

A mise en cache DNS Le serveur fonctionne en effectuant toutes les requêtes DNS effectuées par votre système, puis en enregistrant ou en mettant en cache les résultats en mémoire. Une fois que les résultats sont mis en cache dans la mémoire chaque fois que vous faites une demande en double pour un domaine, le résultat sera servi presque instantanément à partir de la mémoire.

Cela peut ne pas sembler trop important, mais si les serveurs DNS de votre FAI prennent le temps de répondre, cela ralentira considérablement votre navigation sur Internet. Par exemple, la page d'accueil de la chaîne d'informations américaine MSNBC doit contacter plus de 100 noms de domaines uniques pour se charger correctement. Si les serveurs de noms de votre FAI prennent même un dixième de seconde de plus que la normale pour répondre, cela signifie que la page prendra 10 secondes de plus pour terminer le chargement.

Un serveur DNS de mise en cache local aidera non seulement votre maison ou votre bureau, mais également votre serveur. Si vous avez une application qui effectue de nombreuses recherches DNS, par exemple, un serveur de messagerie occupé exécutant un logiciel anti-spam, elle recevra une augmentation de vitesse d'un serveur DNS de mise en cache local.

Enfin, systemd-resolved prend en charge les toutes dernières normes DNS sécurisées DNSSEC et DNSoverTLS ou Point. Ceux-ci vous aident à assurer votre sécurité et à conserver votre confidentialité en ligne.

Quel DNS de cache local utiliserons-nous?

Le serveur DNS de mise en cache local que nous allons activer et configurer dans ce guide est résolu par systemd. Cet outil fait partie de la suite systemd d'outils de gestion de système. Si votre système utilise systemd, et que presque toutes les principales distributions Linux le sont, alors vous aurez déjà installé systemd-resolved mais pas en cours d'exécution. La plupart des distributions n'utilisent pas résolu par systemd même s'il est présent.

systemd-resolved fonctionne en exécutant un petit serveur DNS de mise en cache local que nous allons configurer pour démarrer au démarrage. Nous reconfigurerons ensuite le reste du système pour diriger leurs requêtes DNS vers le DNS résolu par le système de cache local.

How to check if you are already using systemd-resolved?

Certaines distributions Linux utilisent déjà la résolution systemd par défaut, comme Ubuntu 19.04.

Si vous utilisez déjà systemd-resolved alors vous n'avez pas besoin de l'activer ou de configurer votre système pour l'utiliser. Cependant, vous devrez peut-être vous assurer que les outils de gestion de réseau tels que NetworkManager sont correctement configurés car ils peuvent ignorer la configuration réseau du système.

Avant de passer à la section suivante, exécutez la commande suivante pour vérifier si vous exécutez déjà la résolution de système:

$ resolvectl status

Si vous recevez le message:

$ resolvectl status
Failed to get global data: Unit dbus-org.freedesktop.resolve1.service not found.

Vous êtes : pas exécutant systemd-résolu et devrait passer à la section suivante. Si, à la place, vous voyez une sortie qui commence par quelque chose comme ce qui suit:

Global
       LLMNR setting: yes
MulticastDNS setting: yes
  DNSOverTLS setting: opportunistic
      DNSSEC setting: allow-downgrade
    DNSSEC supported: no
  Current DNS Server: 1.1.1.1
         DNS Servers: 1.1.1.1
                      1.0.0.1

Ensuite, vous exécutez déjà résolu par systemd et vous n'avez pas besoin de l'activer.

Enabling and configuring systemd-resolved

Nous n'avons pas besoin d'installer systemd-résolu comme faisant déjà partie de systemd. Tout ce que nous devons faire est de le démarrer pour faire fonctionner le serveur de mise en cache DNS, puis de l'activer pour le démarrer au démarrage.

Exécutez la commande suivante à partir d'une invite du shell en tant que sudo a permis à un utilisateur non root de démarrer résolu par systemd:

$ sudo systemctl start systemd-resolved.service

Ensuite, exécutez la commande suivante pour démarrer la résolution de systemd au démarrage du système:

$ sudo systemctl enable systemd-resolved.service

Le dernier élément de configuration restant est de définir les serveurs DNS que systemd-résolu interrogera sur les domaines résolus. Il existe de nombreuses options ici, mais l'une des paires suivantes est gratuite, rapide et prend en charge DNSSEC et DoT:

Google Public DNS

  • 8.8.8.8
  • 8.8.4.4

DNS public Cloudflare

  • 1.1.1.1
  • 1.0.0.1

Ouvrez le fichier de configuration principal résolu par systemd avec votre éditeur de texte préféré, ici j'ai utilisé nano:

$ sudo nano /etc/systemd/resolved.conf

Modifier la ligne commence

#DNS=

Pour qu'une paire d'adresses IP soit répertoriée. Ici, les serveurs DNS Cloudflare sont affichés:

DNS=1.1.1.1 1.0.0.1

Enregistrez et quittez l'éditeur de texte. Nous devons maintenant redémarrer systemd-résolu pour qu'il commence à utiliser les serveurs de noms:

$ sudo systemctl restart systemd-resolved.service

systemd-résolu est maintenant en cours d'exécution et prêt à commencer à accélérer et à sécuriser les requêtes DNS dès que nous configurons le système pour commencer à l'utiliser.

Configuration du système pour utiliser la résolution systemd

Votre système peut être configuré de plusieurs manières pour utiliser la résolution de système, mais nous examinerons deux configurations qui couvrent la plupart des cas d'utilisation. La première est la configuration recommandée et la seconde est la configuration de compatibilité. La différence entre les deux est de savoir comment le /etc/resolv.conf le fichier est géré.

Le fichier /etc/resolv.conf contient les adresses IP des serveurs de noms que les programmes du système doivent interroger. Les programmes qui doivent effectuer des requêtes DNS consulteront ce fichier pour savoir quels serveurs ils doivent contacter pour effectuer ces requêtes.

Les deux modes de résolution systemd sont centrés sur la gestion du contenu de ce fichier. Dans le mode recommandé, /etc/resolv.conf est un lien symbolique vers /run/systemd/resolve/stub-resolv.conf. Ce fichier est géré par systemd-résolu et donc systemd-résolu gère les informations de configuration DNS pour tous les autres programmes du système.

Cela peut poser des problèmes lorsque d'autres programmes essaient de gérer le contenu de /etc/resolv.conf. Le mode de compatibilité laisse /etc/resolv.conf en place, ce qui permet à d'autres programmes de le gérer pendant que systemd-résolu utilise ces informations DNS. Dans ce mode, les autres programmes gérant /etc/resolv.conf doivent être configurés pour définir 127.0.0.53 comme serveur de noms système dans /etc/resolv.conf.

Configuration du mode recommandé

Lorsque nous configurons ce mode systemd-resolved va gérer /etc/resolv.conf en en faisant un lien symbolique vers /run/systemd/resolve/stub-resolv.conf. Nous devrons le faire à la main car il n'est pas configuré automatiquement.

Tout d'abord, supprimez ou renommez le fichier /etc/resolv.conf existant. Renommer est une meilleure option pour le supprimer car il aura le même effet, mais vous pouvez toujours vous référer à l'original si vous avez besoin des informations qu'il contient. Ici, nous renommons /etc/resolv.conf en utilisant la commande mv:

$ sudo mv /etc/resolv.conf /etc/resolv.conf.original

Ensuite, créez le lien symbolique:

$ sudo ln -s /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

Enfin, redémarrez systemd-résolu:

$ sudo systemctl restart systemd-resolved.service

Configurer le mode de compatibilité

Dans ce mode, vous devez vous assurer que le serveur de noms local démarré par systemd-résolu est interrogé par les services système. Ouvrez /etc/resolv.conf dans un éditeur de texte, ici l'éditeur nano est utilisé:

$ sudo nano /etc/resolv.conf

Supprimez toutes les lignes que vous rencontrez qui commencent par «nameserver» et ajoutez cette ligne:

nameserver 127.0.0.53

Cette modification peut être modifiée par tout autre programme qui gère /etc/resolv.conf. Si tel est le cas, vous devrez configurer ces programmes pour utiliser ce serveur de noms afin de rendre l'édition permanente.

Debugging systemd-resolved

Il peut être difficile de découvrir exactement comment votre système effectue des requêtes DNS après avoir effectué ces modifications. La méthode la plus efficace pour observer ce qui se passe est de mettre le système résolu en mode débogage et de regarder le fichier journal.

systemd-résolu est un service systemd, ce qui signifie qu'il peut être facilement mis en mode débogage en créant un fichier de service drop-in contenant le paramètre de débogage. La commande suivante créera le fichier correct au bon emplacement:

$ sudo systemctl edit systemd-resolved.service

Collez les lignes suivantes dans l'éditeur puis enregistrez et quittez:

[Service]
Environment=SYSTEMD_LOG_LEVEL=debug

Le service résolu par systemd sera automatiquement rechargé lors d'une sauvegarde et d'une sortie réussies.

Ouvrez un deuxième terminal sur le même serveur et suivez le journal journald pour le service résolu par systemd:

$ sudo journalctl -f -u systemd-resolved

Une ligne qui commence «Utilisation du serveur DNS», par exemple:

Using DNS server 1.1.1.1 for transaction 19995.

Vous indique exactement quel serveur DNS est utilisé pour les requêtes DNS. Dans ce cas, le serveur DNS Cloudflare au 1.1.1.1 a été interrogé.

Les lignes «Cache miss» indiquent que le nom de domaine n'a pas été mis en cache. Par exemple:

Cache miss for example.com IN SOA

Lignes qui commencent «Positive cache hit», par exemple:

Positive cache hit for example.com IN A

Indiquez que systemd-resolu a interrogé ce domaine auparavant et que la réponse a été servie à partir du cache de la mémoire locale.

Vous devez désactiver le mode de débogage lorsque vous avez terminé de travailler avec la résolution de système car cela créera un très gros fichier journal sur un système occupé. Vous pouvez désactiver la journalisation du débogage en exécutant:

$ sudo systemctl edit systemd-resolved.service

et en supprimant les deux lignes, vous avez ajouté puis en enregistrant et en quittant l'éditeur.

Using secure DNS queries

systemd-résolu est l'un des rares serveurs DNS actuellement disponibles qui prennent en charge DNSSEC et DNSoverTLS. Ces deux éléments permettent de garantir que vous recevez des informations DNS authentiques (DNSSEC) et que personne ne peut espionner votre trafic DNS comme il passe sur Internet. (Point).

Ces options sont facilement activées en ouvrant le fichier de configuration principal de systemd-résolu avec un éditeur de texte:

$ sudo nano /etc/systemd/resolved.conf

Et éditez le fichier pour que les deux lignes suivantes soient définies:

DNSSEC=allow-downgrade
DNSOverTLS=opportunistic

Enregistrez et quittez l'éditeur puis rechargez systemd-résolu:

$ sudo systemctl restart systemd-resolved.service

Tant que le serveur DNS que vous avez défini prend en charge DNSSEC et DoT, vos requêtes DNS seront protégées. Les serveurs DNS publics Google et Cloudflare prennent tous deux en charge ces protocoles.

Conclusion

Votre système est désormais configuré pour effectuer rapidement et efficacement des requêtes DNS même lorsque le serveur DNS de votre FAI ne répond pas aussi rapidement qu'il le devrait. De plus, votre vie numérique est plus sécurisée car vous utilisez les derniers protocoles DNS sécurisés pour protéger vos requêtes DNS.

Si vous êtes un passionné de Linux et que vous souhaitez en savoir plus, jetez un œil à ce fantastique Cours en ligne.

Merci à nos commanditaires
Plus de bonnes lectures sur Linux
Alimentez votre entreprise
Certains des outils et services pour aider votre entreprise à se développer.
  • Invicti utilise Proof-Based Scanning™ pour vérifier automatiquement les vulnérabilités identifiées et générer des résultats exploitables en quelques heures seulement.
    Essayez Invicti
  • Web scraping, proxy résidentiel, proxy manager, web unlocker, moteur de recherche et tout ce dont vous avez besoin pour collecter des données Web.
    Essayez Brightdata
  • Semrush est une solution de marketing numérique tout-en-un avec plus de 50 outils de référencement, de médias sociaux et de marketing de contenu.
    Essayez Semrush
  • Intruder est un scanner de vulnérabilités en ligne qui détecte les failles de cybersécurité de votre infrastructure, afin d'éviter des violations de données coûteuses.
    Essayez Intruder