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 puisse le résoudre correctement ou pour que certaines modifications d'adresse DNS soient détectées par leur ordinateur individuel. Cela est particulièrement important pour les administrateurs système, les administrateurs réseau et les développeurs Web, mais il existe certainement des situations où d'autres utilisateurs doivent également vider et réinitialiser les caches DNS, comme si un utilisateur avait modifié le fichier / etc / hosts pour prendre effet sans redémarrer le Mac.

Les utilisateurs de Mac à long terme sauront 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 parce que Discoveryd remplace mDNSResponder, puis revient à nouveau à mDNSResponder. Quoi qu'il en soit, le vidage du cache DNS dans Yosemite reste une commande terminale, mais il diffère légèrement selon la version exacte que vous utilisez du système d'exploitation, et vous permet en fait de supprimer le DNS Multicast ou Unicast DNS, ou les deux. Vous aurez probablement besoin d'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 et OS X 10.10.5

Depuis OS X 10.10.4 en passant à 10.10.5, y compris 10.11, Apple a abandonné discoveryd et l'a remplacé (ou plutôt, retourné à) mDNSResponder. Ainsi, pour effacer les caches DNS dans OS X Yosemite 10.10.4 et 10.11 El Capitan, et vraisemblablement en avant, la chaîne de commande est la suivante:

sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;say cache flushed

Cette commande vide tous les caches DNS pour OS X 10.10.4+.

Les utilisateurs de Mac à long terme peuvent se rappeler que la chaîne de commande est fondamentalement ce qui a fonctionné dans la version antérieure à Yosemite. Cela dit, les versions antérieures de OS X Yosemite antérieures à 10.10.4 utiliseront une chaîne de commande différente décrite ci-dessous.

Effacement 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 / Utilities / ou le lancer avec Spotlight. Pour effacer complètement tous les caches DNS de la dernière version d'OS X, ciblez MDNS (Multicast DNS) et UDNS (Unicast DNS) avec deux commandes différentes.

Effacer le cache MDNS

sudo discoveryutil mdnsflushcache

Hit retour et entrez le mot de passe admin lorsque demandé.

Effacer le cache UDNS

sudo discoveryutil udnsflushcaches

Encore une fois, appuyez sur retour et entrez le mot de passe administrateur sur demande. Notez que les caches sont au pluriel avec la dernière commande, une différence de syntaxe subtile mais importante.

Vider et réinitialiser toutes les caches DNS dans OS X Yosemite

Vous pouvez également enchaîner les deux commandes ci-dessus ensemble si vous le souhaitez, le suivant annoncera même verbalement quand les caches ont été effacés:

sudo discoveryutil mdnsflushcache;sudo discoveryutil udnsflushcaches;say flushed

En effet, les caches MDNS et UDNS sont différents, mais j'ai trouvé que pour que le cache DNS fonctionnel efface réellement dans OS X Yosemite les deux commandes sont nécessaires. Il est tout à fait possible que vous ayez seulement besoin d'effacer l'un ou l'autre 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 actualiser les caches DNS comme dans les versions antérieures de Mac OS X.

Vérification des détails du cache DNS dans OS X Yosemite

Si vous modifiez ou allez modifier DNS et que vous souhaitez afficher des informations sur les éléments actuellement mis en cache, vous pouvez utiliser les commandes suivantes:

Obtenez les statistiques de cache UDNS:

sudo discoveryutil udnscachestats

Vous pouvez également récupérer des informations sur le cache DNS multicast avec les éléments suivants:

sudo discoveryutil mdnscachestats

Les deux fourniront des détails quant au nombre d'entrées DNS mises en cache, offrant un rapport qui devrait ressembler à ceci:

UDNS Cache Stats: Cached 962 of 1750

Si vous exécutez ces commandes avant et après l'exécution des variantes flushcache, vous trouverez qu'elles doivent être réinitialisées sur le cache 0 entrées, comme suit:

MDNS Cache Stats: lo0: Cached 0 of 2000

Comment savez-vous si cela a changé?

Après avoir vidé le cache, si vous voulez déterminer si un serveur de noms ou une adresse IP a réellement changé, vous pouvez utiliser la commande 'dig' avec l'URL comme suit:

dig osxdaily.com

dig est similaire à nslookup, sauf qu'il a une meilleure sortie et quelques détails supplémentaires inclus, l'heure de la requête incluse, le serveur DNS utilisé pour accéder au domaine, et un horodatage, qui peuvent être utiles pour résoudre les problèmes de serveur de noms. En passant, si l'heure de la requête pour cela apparaît comme léthargique, vous devriez utiliser un outil comme namebench pour trouver un serveur DNS plus rapide pour vous, souvent Google DNS ou OpenDNS.

Connaissez-vous un autre tour de cache DNS pour les dernières versions d'OS X? Faites le nous savoir dans les commentaires.