18 votes

Vider le cache du DNS sur MacOS Sierra et High Sierra

Comment vider le cache de l'application DNS sur un MacOS Sierra ou High Sierra ?

J'ai vu des discussions sur ce qui suit, mais je ne suis pas sûr que ce soit l'approche moderne. Et je ne suis pas sûr de ce que chacun fait exactement.

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

19voto

klanomath Points 63400

sudo dscacheutil -flushcache ne fait rien d'utile concernant les entrées du cache DNS - du moins dans les environnements non-LDAP et 10.9-10.13.

sudo killall -HUP mDNSResponder envoie un raccrocher à mDNSResponder, launchd va redémarrer le démon et le cache DNS sera effacé par effet de contagion.

Ceci peut être facilement testé avec la séquence de commandes suivante :

sudo killall -INFO mDNSResponder

default 03:54:55.672826 +0200 mDNSResponder Taille du cache 282 entités ; 189 en service (73 groupe, 29 multicast, 87 unicast) ; 2 référencés par des questions actives
default 03:54:55.694219 +0200 mDNSResponder Unicast Taille du cache 1769

sudo dscacheutil -flushcache
sudo killall -INFO mDNSResponder

default 03:55:52.148629 +0200 mDNSResponder Taille du cache 282 entités ; 180 en service (79 groupe, 19 multidiffusion, 82 unicast) ; 2 référencés par des questions actives
default 03:55:52.157180 +0200 mDNSResponder Unicast Taille du cache 1992

sudo killall -HUP mDNSResponder
sudo killall -INFO mDNSResponder

default 03:56:39.446829 +0200 mDNSResponder Taille du cache 282 entités ; 8 en service (4 groupes, 0 multicast, 4 unicast) ; 2 référencés par des questions actives
default 03:56:39.466259 +0200 mDNSResponder Unicast Taille du cache 121

Pour obtenir les résultats ci-dessus, ouvrez Console.app, choisissez votre nom d'hôte dans "Devices" et utilisez un filtre mDNSResponder & Taille du cache :

enter image description here

2voto

Mike Richardson Points 41

J'ai découvert une autre façon de vider le cache DNS, et vous n'avez pas besoin d'autorisations Root. Voici le shell script que j'utilise pour aider à automatiser cela.

NETWORKSVC="Wi-Fi"
DNSSERVERS=`networksetup -getdnsservers $NETWORKSVC | tr '\n' ' '`

if [ "$DNSSERVERS" = "There aren't any DNS Servers set on Wi-Fi. " ]; then
    DNSSERVERS="Empty"
fi

networksetup -setdnsservers $NETWORKSVC 0.1.2.3
networksetup -setdnsservers $NETWORKSVC $DNSSERVERS

Définissez le nom de votre service réseau sur la première ligne. La deuxième ligne permet d'obtenir les serveurs DNS actuellement définis. Comme la sous-commande getdnsservers renvoie un serveur DNS par ligne, nous utilisons tr (transform) pour transformer les nouvelles lignes en espaces.

L'instruction if gère le cas particulier où vos serveurs DNS ont été transmis par DHCP.

Ensuite, nous changeons le serveur DNS en un serveur manifestement faux. Cela déclenche l'effacement du cache DNS. Vous pouvez confirmer qu'il est effectivement vidé en utilisant la technique de klanomath.

La dernière ligne restaure vos serveurs DNS d'origine. La sous-commande setdnsservers s'attend à ce que la liste des serveurs DNS soit séparée par des espaces.

Vous pouvez aussi simplement faire tout cela dans les Préférences Système, mais le shell script est plus rapide et est fondamentalement instantané.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X