Comment vider le cache DNS dans OS X Yosemite avec discoveryutil
Certains utilisateurs de Mac peuvent rencontrer des situations où ils doivent vider le cache DNS dans OS X pour qu'un serveur de noms se résolve correctement, ou pour qu'un changement d'adresse DNS soit remarqué par leur ordinateur individuel. Ceci est particulièrement important pour les administrateurs système, les administrateurs réseau et les développeurs web, mais il y a certainement des situations où d'autres utilisateurs peuvent avoir besoin de vider et de réinitialiser les caches DNS également, comme par exemple si un utilisateur a modifié le fichier /etc/hosts et qu'il a besoin que les changements prennent effet sans redémarrer le Mac.
Les utilisateurs de Mac de longue date savent que la réinitialisation du cache DNS a changé dans presque toutes les versions de Mac OS X, et OS X Yosemite n'est pas différent, probablement en raison de la découverte du remplacement de mDNSResponder, puis du retour à mDNSResponder une fois de plus. Quoi qu'il en soit, la vidange du cache DNS dans Yosemite reste une commande terminale, mais elle diffère légèrement selon la version exacte de l'OS que vous utilisez, et elle vous permet en fait de vider soit le DNS Multicast, soit le DNS Unicast, ou les deux. Vous voudrez probablement effacer les deux pour faire bonne mesure si vous essayez de réinitialiser tous les caches DNS sur le Mac.
Effacer le cache DNS dans OS X Yosemite 10.10.4 & OS X 10.10.5
De OS X 10.10.4 à 10.10.5, en passant par 10.11, Apple a abandonné discoveryd et l'a remplacé (ou plutôt, est revenu à mDNSResponder). Ainsi, pour vider les caches DNS dans OS X Yosemite 10.10.4, et 10.11 El Capitan, et vraisemblablement plus loin, la chaîne de commande est la suivante :
sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;say cache flushed
Cette commande permet de vider tous les caches DNS pour OS X 10.10.4+.
Les utilisateurs de Mac de longue date peuvent se rappeler que la chaîne de commande est essentiellement ce qui fonctionnait dans la version antérieure à Yosemite. Cela dit, les versions antérieures d'OS X Yosemite antérieures à la version 10.10.4 utiliseront une chaîne de commande différente dont il est question ci-dessous.
Nettoyage des caches DNS dans OS X Yosemite (10.10, 10.10.1, 10.10.2, 10.10.3)
Vous devrez utiliser le Terminal pour réinitialiser le cache, vous pouvez trouver l'application Terminal dans /Applications/Utilitaires/ ou la lancer avec Spotlight. Pour vider complètement tous les caches DNS dans la dernière version d'OS X, ciblez à la fois MDNS (Multicast DNS) et UDNS (Unicast DNS) avec deux commandes différentes.
Effacer le cache MDNS
sudo discoveryutil mdnsflushcache
Appuyez sur "Retour" et entrez le mot de passe admin lorsque vous le demandez.
Effacer le cache UDNS
sudo discoveryutil udnsflushcaches
Là encore, appuyez sur "Retour" et entrez le mot de passe admin lorsque vous le demandez. Notez que cache est au pluriel avec cette dernière commande, une différence de syntaxe subtile mais importante.
Vider et réinitialiser tous les caches DNS dans OS X Yosemite
Vous pouvez également enchaîner les deux commandes ci-dessus si vous le souhaitez, les suivantes annonceront même verbalement lorsque les caches auront été vidées :
sudo discoveryutil mdnsflushcache;sudo discoveryutil udnsflushcaches;say flushed
En effet, les caches MDNS et UDNS sont différents, mais j'ai constaté que pour que le cache DNS fonctionnel soit réellement effacé dans OS X Yosemite, les deux commandes sont nécessaires. Il est tout à fait possible que vous n'ayez besoin de vider l'un ou l'autre que pour vos propres besoins.
Pour ceux qui se demandent, OS X Yosemite a supprimé mDNSResponder, il n'est donc pas nécessaire de tuer ce processus mDNSResponder pour rafraîchir les caches DNS comme dans les versions précédentes de Mac OS X.
Vérification des détails du cache DNS dans OS X Yosemite
Si vous changez ou allez changer de DNS, et que vous voulez voir quelques détails sur ce qui est actuellement mis en cache, vous pouvez utiliser les commandes suivantes :
Obtenez les statistiques du cache de l'UDNS :
sudo discoveryutil udnscachestats
Vous pouvez également obtenir des informations spécifiques sur le cache DNS de multidiffusion grâce à ce qui suit :
sudo discoveryutil mdnscachestats
Ces deux documents fourniront des détails sur le nombre d'entrées DNS mises en cache, et offriront un rapport qui devrait ressembler à celui-ci :
UDNS Cache Stats : Mise en cache 962 de 1750
Si vous exécutez ces commandes avant et après les variantes de flushcache, vous constaterez qu'elles doivent être réinitialisées à 0 entrée de cache, comme cela :
MDNS Cache Stats : lo0 : Cached 0 of 2000
Comment savoir si elle a changé ?
Après avoir vidé le cache, si vous voulez déterminer si un serveur de nom ou une adresse IP a réellement changé, vous pouvez utiliser la commande "dig" avec l'URL comme ceci :
dig iphonologie.fr
dig est similaire à nslookup, sauf qu'il offre un meilleur rendement et quelques détails supplémentaires, notamment le temps de requête, le serveur DNS utilisé pour accéder au domaine et un horodatage, qui peuvent tous être utiles pour résoudre les problèmes de serveur de noms. Au fait, si le temps d'interrogation est trop long, vous devriez utiliser un outil comme namebench pour trouver un serveur DNS plus rapide, souvent Google DNS ou OpenDNS.
Vous connaissez une autre astuce de cache DNS pour les dernières versions d'OS X ? Faites-le nous savoir dans les commentaires.