Qu'est-ce qu'un cache DNS ?
La mise en cache DNS est le stockage temporaire des résultats des requêtes DNS par les résolveurs, les systèmes d'exploitation, les navigateurs et les applications. Lorsqu'une recherche DNS est effectuée, le résultat est mis en cache pour une période définie par la valeur TTL (Time To Live) du registre, permettant aux requêtes suivantes du même domaine d'être répondues instantanément sans interroger les serveurs faisant autorité.
Pourquoi la mise en cache DNS est importante
Sans mise en cache, chaque requête web nécessiterait une recherche DNS complète, ajoutant de la latence et générant un trafic DNS massif. La mise en cache DNS offre :
- Temps de réponse plus rapides : Les réponses mises en cache reviennent en microsecondes vs millisecondes pour les recherches complètes
- Trafic réseau réduit : Moins de requêtes aux serveurs faisant autorité
- Résilience améliorée : Le cache local fournit des réponses même si les serveurs DNS sont temporairement inaccessibles
- Charge serveur réduite : Les serveurs faisant autorité traitent moins de requêtes
Comment fonctionne la mise en cache DNS
La hiérarchie de mise en cache
La mise en cache DNS se produit à plusieurs niveaux :
Cache navigateur (secondes à minutes)
↓
Cache du système d'exploitation (secondes à minutes)
↓
Cache du résolveur local (minutes à heures)
↓
Cache du résolveur ISP (minutes à heures)
↓
Serveur de noms faisant autorité (source de vérité)
Processus de recherche en cache
1. L'utilisateur demande example.com
2. Le navigateur vérifie son cache
3. Si échec, le système d'exploitation vérifie son cache
4. Si échec, le résolveur vérifie son cache
5. Si échec, requête récursive aux serveurs faisant autorité
6. Résultat mis en cache à chaque niveau basé sur TTL
7. Réponse renvoyée à l'utilisateur
Expiration basée sur TTL
Chaque registre DNS inclut une valeur TTL :
example.com. 300 IN A 203.0.113.50
^^^
TTL en secondes (5 minutes)
Les caches stockent ce registre pendant 300 secondes, puis le rejettent. La requête suivante déclenche une nouvelle recherche.
Couches de cache DNS
Cache navigateur
Les navigateurs modernes cachent les résultats DNS indépendamment :
Chrome : Utilise son propre cache DNS (chrome://net-internals/#dns) Firefox : Maintient un cache interne (about:networking#dns) Safari : Utilise le résolveur systèmeTTL typique du cache navigateur : 60 secondes (indépendamment du TTL DNS)
Cache du système d'exploitation
Windows : Le service client DNS met en cache les résultats# Afficher le cache
ipconfig /displaydns
# Vider le cache
ipconfig /flushdns
macOS : mDNSResponder gère la mise en cache
# Vider le cache (macOS 10.15+)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux : Varie selon le système, souvent systemd-resolved
# Vider le cache systemd-resolved
sudo systemd-resolve --flush-caches
# Vérifier les statistiques
sudo systemd-resolve --statistics
Cache du résolveur
Les résolveurs DNS récursifs (DNS ISP, 8.8.8.8, 1.1.1.1) maintiennent de grands caches servant des millions d'utilisateurs :
| Résolveur | Stratégie de cache |
|---|---|
| Google (8.8.8.8) | Respecte TTL, cache global |
| Cloudflare (1.1.1.1) | Respecte TTL, distribué |
| Résolveurs ISP | Peuvent ignorer les TTL bas |
Exemples de comportement en cache
Opération normale
Requête 1 : example.com
→ Recherche complète : 50ms
→ Mis en cache pour 300s (TTL)
Requête 2 : example.com (1 minute après)
→ Succès du cache : 1ms
Requête 3 : example.com (10 minutes après)
→ Cache expiré, recherche complète : 50ms
→ Re-mis en cache pour 300s
Mise à jour du registre DNS
Original : example.com → 203.0.113.50 (TTL: 300s)
Heure : 10:00 - DNS mise à jour à 203.0.113.51
Client interroge à 10:02
→ Toujours en cache : 203.0.113.50 (expire 10:05)
Client interroge à 10:06
→ Cache expiré, nouvelle recherche : 203.0.113.51
→ Mis en cache jusqu'à 10:11
Stratégie TTL et mise en cache
Choix des valeurs TTL
| Cas d'utilisation | TTL recommandé | Justification |
|---|---|---|
| Infrastructure statique | 3600-86400s (1-24 heures) | Rarement changé, réduire la charge DNS |
| Site web de production | 300-1800s (5-30 minutes) | Équilibrer la performance et la flexibilité |
| Migration active | 60-300s (1-5 minutes) | Propagation plus rapide lors des changements |
| Équilibrage de charge | 60-120s | Basculement rapide lors du changement de serveurs |
Réduction TTL avant migration
Meilleure pratique lors de la planification de changements DNS :
Jour -7 : example.com TTL 3600s (1 heure)
Jour -2 : Réduire à 300s (5 minutes)
Jour 0 : Faire le changement DNS
→ Conservation maximale en cache 5 minutes
Jour +1 : Restaurer TTL à 3600s
Empoisonnement du cache et sécurité
Attaque par empoisonnement du cache DNS
Les attaquants tentent d'injecter de faux registres DNS dans les caches :
1. L'attaquant inonde le résolveur avec de fausses réponses
2. Si l'une correspond à une requête en attente, elle est mise en cache
3. Les utilisateurs reçoivent une IP malveillante pour un domaine légitime
4. L'empoisonnement en cache est servi à de nombreux utilisateurs
Atténuations de sécurité
DNSSEC : Les registres signés cryptographiquement empêchent l'empoisonnementexample.com. IN A 203.0.113.50
IN RRSIG A 8 2 300 ...
Randomisation du port source : Rend les réponses plus difficiles à contrefaire
Encodage 0x20 : Casse aléatoire dans les requêtes aide à la validation
Sécurité du résolveur : Utiliser des résolveurs réputés (Cloudflare, Google, Quad9)
Vérification du cache DNS
Afficher le contenu du cache
Windows :ipconfig /displaydns | more
macOS (informations limitées) :
sudo killall -INFO mDNSResponder
# Vérifier Console.app pour les journaux
Linux (systemd-resolved) :
sudo systemd-resolve --statistics
Tester le comportement du cache
# Première requête (échec du cache)
time dig example.com
# Répétition immédiate (succès du cache)
time dig example.com
# Comparer les temps
Problèmes liés au cache
Cache périmé après changement DNS
Problème : Les registres DNS mis à jour ne sont pas reflétés pour les utilisateurs Solution :1. Attendre l'expiration du TTL
2. Réduire TTL avant les changements futurs
3. Demander aux utilisateurs de vider le cache local
Mise en cache trop agressive
Certains FAI ignorent TTL et cachent plus longtemps :
Problème : Les changements prennent des heures/jours à se propager Solution :- Utiliser des TTL bas (les FAI respectent généralement 300s minimum)
- Considérer anycast DNS pour les services critiques
- Documenter les FAI problématiques connus
Mise en cache négatif
Les recherches échouées (NXDOMAIN) sont également mises en cache :
Requête : newsubdomain.example.com
Réponse : NXDOMAIN (n'existe pas)
Mis en cache : 3600s (TTL minimum SOA)
Résultat : Le nouveau sous-domaine ne se résoudra pas pendant 1 heure
Solution : Réduire SOA minimum TTL avant d'ajouter de nouveaux registres
Vidage du cache DNS
Quand vider
- Tester les changements DNS immédiatement
- Dépannage des problèmes de résolution
- Après migration du fournisseur DNS
- Empoisonnement du cache suspecté
Comment vider
Windows :ipconfig /flushdns
macOS :
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux (systemd-resolved) :
sudo systemd-resolve --flush-caches
Chrome :
Naviguer vers : chrome://net-internals/#dns
Clic : "Clear host cache"
Firefox :
Bascule network.dnsCacheExpiration dans about:config
Ou redémarrer le navigateur
Meilleures pratiques
1. Définir les TTL appropriés : Équilibrer la performance et la vitesse de changement
2. Réduire le TTL avant les changements : Réduire le TTL 24-48 heures avant les mises à jour DNS
3. Surveiller la propagation : Utiliser les outils pour vérifier la résolution DNS globale
4. Documenter le comportement du cache : Comprendre les couches de mise en cache de votre infrastructure
5. Utiliser DNSSEC : Protéger contre l'empoisonnement du cache
6. Tester complètement : Vérifier que les changements DNS fonctionnent comme prévu avant de déclarer le succès
7. Éduquer les utilisateurs : Fournir des instructions claires pour le vidage du cache si nécessaire
Concepts avancés de mise en cache
Prélecture
Les navigateurs et les résolveurs peuvent prélire les DNS pour les liens sur une page :
<!-- Conseil au navigateur -->
<link rel="dns-prefetch" href="//cdn.example.com">
Préchauffage du cache
Les équilibreurs de charge et les réseaux de distribution de contenu peuvent pré-remplir les caches pour les registres critiques.
Anycast et mise en cache
Anycast DNS achemine les requêtes vers le serveur le plus proche, créant des caches géographiquement distribués pour des performances optimales.
La mise en cache DNS est fondamentale pour les performances d'Internet. Comprendre et configurer correctement les TTL garantit que vos changements DNS se propagent efficacement tout en maintenant des temps de résolution rapides.