• Assurez la sécurité des applications de la bonne manière! Détectez, protégez, surveillez, accélérez et plus encore…
  • 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?

    Un serveur DNS de mise en cache fonctionne en exécutant 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 en mémoire à chaque fois que vous effectuez une demande de duplication 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 activerons et configurerons dans ce guide est résolu par systemd. Cet outil fait partie du systemd suite 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à résolu par systemd installé mais pas en cours d'exécution. La plupart des distributions n'utilisent pas de résolution systemd même si elle est présente.

    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.

    Comment vérifier si vous utilisez déjà systemd-résolu?

    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 : n' 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.

    Activation et configuration de la résolution système

    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.

    Débogage résolu par le système

    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.

    Utilisation de requêtes DNS sécurisées

    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.