Linux propose d’innombrables fonctionnalités réseau faisant de lui un OS performant en la matière.
Pour améliorer les temps de réponse de chargement sur internet, vous pouvez mettre en place un cache DNS.
Cela permet de stocker temporairement les résolutions DNS afin de ne pas devoir contacter à nouveau le résolveur DNS.
Dans ce tutoriel, je vous propose de configurer un cache DNS sur Linux avec systemd-resolved, dnsmasq ou BIND.
Table des matières
Pour mettre en place un cache DNS
Un cache DNS est comme une base de données temporaire des recherches DNS récentes auxquelles notre ordinateur peut se référer rapidement lorsqu’il essaie de comprendre comment charger un site Web sur Internet. Il stocke tous les enregistrements des visites récentes et tentatives.
Le cache DNS est utile car il intercepte les demandes de nom d’hôte des sites Web récemment visités avant d’être envoyés sur Internet et les réfère à sa base de données locale. Cela réduit considérablement le temps pris pour charger des sites Web déjà visités car leur adresse IP respective a déjà été mise en cache.
Configurer un cache DNS sur Linux avec systemd-resolved
systemd-resolved est un outil disponible localement qui fait partie de la suite SystemD des outils de gestion du système. SystemD est facilement disponible dans presque toutes les principales distributions Linux.
La plupart des distributions Linux ont installé SystemD, mais elle n’est généralement pas active.
Utilisons systemd-resolved pour créer et exécuter un serveur DNS de mise en cache local que nous allons configurer pour démarrer sur le démarrage. De plus, nous allons configurer le reste de notre système pour rediriger ses requêtes DNS vers le serveur de mise en cache que nous avons créé.
La plupart des distributions Linux embarquent déjà ce service.
Pour vérifier si le démon est actif dans le système :
sudo resolvectl status
Si cela retourne une entrée du type alors systemd-resolved est déjà actif dans le système :
Global
LLMNR setting: no
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Si nous recevons un message d’échec, nous devons activer et configurer systemd-resolved.
- Pour cela éditez le fichier de configuration :
vim /etc/systemd/resolved.conf
Puis modifiez l’entrée DNS en indiquant les serveurs DNS publics et itératives que vous souhaitez utiliser.
Par exemple pour configurer les serveurs DNS Google :
DNS=8.8.8.8 8.8.4.4
Voici une liste de services DNS résolveurs :
Fournisseurs | Adresses IP des serveurs DNS | Adresses DNS Over HTTPS |
AdGuard DNS | 94.140.14.14 94.140.15.15 2a10:50c0::ad1:ff 2a10:50c0::ad2:ff | https://dns.adguard-dns.com/dns-query https://family.adguard-dns.com/dns-query (Contrôle parental) |
Cloudflare | 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001 | https://1.1.1.1/dns-query https://1.0.0.1/dns-query |
FutureDNS | 52.56.224.201 | https://dns.futuredns.me/dns-query |
8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844 | https://dns.google/dns-query | |
Quad9 | 9.9.9.9 149.112.112.112 2620:fe::fe 2620:fe::fe:9 | https://dns.quad9.net/dns-query (Recommandé) https://dns9.quad9.net/dns-query (Sécurisé) https://dns11.quad9.net/dns-query (ECS support) |
OpenDNS | Standard DNS: 208.67.222.222 208.67.220.220 2620:119:35::35 2620:119:53::53 FamilyShield (blocage des sites pour adultes : 208.67.222.123 208.67.220.123 2620:119:35::123 2620:119:53::123 | Standard DNS: https://doh.opendns.com/dns-query FamilyShield (blocage des sites pour adultes : https://doh.familyshield.opendns.com/dns-query |
SWITCH DNS | 130.59.31.248 2001:620:0:ff::2 | https://dns.switch.ch/dns-query |
Puis activez le service systemd-resolve :
sudo systemctl enable systemd-resolved.service
sudo systemctl start systemd-resolved.service
Enfin pour activer le cache DNS et la résolution DNS par systemd-resolved, il faut modifier la configuration DNS de Linux dans le fichier /etc/resolv.conf.
Pour cela éditez ce dernier :
sudo vim /etc/resolv.conf
Puis modifiez l’entrée DNS par :
nameserver 127.0.0.53
Validez la modification en enregistrant les modifications du fichier.
Configurer un cache DNS sur Linux avec dnsmasq
dnsmasq est un serveur à faible empreinte mémoire faisant DNS, TFTP, PXE, annonces de routeurs et DHCP. Il offre à la fois les services DNS et DHCP pour un réseau local (LAN).
Il est disponible dans la plupart des distributions Linux et peut être installé via le gestionnaire de packages.
Pour installer dnsmasq depuis une distribution Linux de type Debian, Ubuntu avec APT :
sudo apt-get install dnsmasq
Pour installer dnsmasq sur Fedora avec dnf :
sudo dnf install dnsmasq
Modifierez le fichier de configuration :
sudo vim /etc/dnsmasq.conf
Configurer le fichier qui stockera la configuration DNS :
resolv-file=/etc/dnsmasq-dns.conf
Augmentez la taille du cache si vous le souhaitez grâce à l’option cache-size :
cache-size=512
Créez le fichier /etc/dnsmasq-dns.conf :
sudo vim /etc/dnsmasq-dns.conf
Et configurez les serveurs DNS. Par exemple pour mettre Google comme serveur DNS :
nameserver 8.8.8.8
Modifier la configuration DNS de Linux pour utiliser Bind comme résolveur.
Pour cela, éditez le fichier /etc/resolv.conf :
sudo vim /etc/resolv.conf
Indiquez localhost comme adresse de serveur DNS :
nameserver 127.0.0.1
Puis pour activer le service DNS :
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq
Configurer un cache DNS sur Linux avec BIND
Bind (Berkely Internet Name Domain) est un serveur DNS puissant que nous pouvons utiliser pour configurer un cache DNS local. C’est l’un des programmes de serveur de noms les plus populaires et les plus utilisés.
Pour installer bind depuis une distribution Linux de type Debian, Ubuntu avec APT :
sudo apt update
sudo apt install bind9 bind9utils -y
Pour installer bind sur Fedora avec dnf :
sudo dnf update
sudo dnf install bind9 bind9utils -y
Editez le fichier de configuration de bind :
sudo vim /etc/bind/named.conf.options
Assurez vous en haut que seules les clients locaux peuvent envoyer des demandes de résolutions DNS :
acl goodclients { localhost; };
Puis modifiez l’entrée forwarders afin de spécifier le résolveurs DNS vers lequel envoyer les requêtes DNS :
forwarders { 213.186.33.99; 0.0.0.0; };
Puis pour que bind n’écoute que sur l’interface localhost et que le serveur DNS ne soit pas exposé sur internet, réglez comme ceci :
listen-on { locahost; };
listen-on-v6 { localhost; };
Et enfin pour n’autoriser que les clients sur localhost :
allow-query { goodclients; };
Puis pour prendre en compte les modifications de la configuration et activez le service :
sudo systemctl start --now named
sudo systemctl enable --now named
sudo systemctl stop --now named
sudo systemctl restart --now named
Modifier la configuration DNS de Linux pour utiliser Bind comme résolveur.
Pour cela, éditez le fichier /etc/resolv.conf :
sudo vim /etc/resolv.conf
Indiquez localhost comme adresse de serveur DNS :
nameserver 127.0.0.1
Pour tester la résolution DNS, nous allons utiliser dig :
dig +noall +stats www.malekal.com
L’adresse du serveur doit être 127.0.0.1:53
;; Query time: 4 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sun Jul 24 10:24:10 UTC 2022 ;; MSG SIZE rcvd: 120
Sur Debian, le fichier de cache se trouve par défaut dans /var/cache/bind/named_dump.db
La commande suivante vous permet de le visualiser :
rndc dumpdb -cache
Liens
- DNS et serveurs de noms : comment ça marche
- La hiérarchie DNS : serveurs DNS racines, d’autorité et DNS récursifs et itératives
- Choisir le meilleur DNS rapide : le comparatif
- Quel est le meilleur DNS pour les jeux et gaming ?
- Les meilleurs DNS : la liste COMPLÈTE
- DNS Benchmark : trouver le meilleur DNS et le plus rapide
- 7 logiciels pour changer les DNS sur Windows
- Liste des serveurs DNS des principaux FAI
- Comment changer les DNS de Windows 10
- Comment changer les DNS de Windows 11
- DNS Jumper : gérer les DNS de Windows facilement
- Comment changer les serveurs DNS d’Ubuntu
- Comment changer la configuration des serveurs DNS sur Linux
- Comment activer DNS over HTTPS (DoH) dans Windows 10
- Comment activer DNS sur HTTPS (DoH) dans Windows 11
- Comment connaître ses DNS (Windows, Linux et Android)
- Comment connaître le DNS d’une adresse IP (DNS inversé)
- Comment tester les DNS (fuites DNS, Sécurité DNS)
- DNS Google : accélérer votre connexion internet
- Chiffrement DNS : DNS over HTTPS et over TLS
- Comment activer les DNS Over HTTPS (DoH) sur Firefox, Chrome, Edge, Brave ou Opera
- Comment changer les DNS de Windows vers 1.1.1.1 CloudFlare
- RethinkDNS : Bloqueur de publicité, Firewall, DoH, DNSCrypt pour Android
- NextDNS : Bloquer les publicités et les traqueurs
- YogaDNS : Client DNS avancé
- DNS public européen : Utiliser dns0.eu (Zero, Kids)
- DNS FDN : changer de serveurs DNS
- Comment installer DNSCrypt sur Linux pour sécuriser les DNS
- Comment anonymiser ses DNS (Anonymous DNS)
- Le serveur DNS ne répond pas
- Configurer les paramètres de partages avancés de Windows 10
- Résoudre les erreurs (ERR_) sur Google Chrome ou Edge