Ich bin auf OS X 10.9, laut support.apple.com kann ich den Cache mit leeren
sudo killall -HUP mDNSResponder
Leider aktualisiert dies meinen DNS-Cache nicht wirklich, auch nicht so:
dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Z.B
$ dig www.example.com|grep CNAME
www.example.com. 83955 IN CNAME example.com.
Wenn der Cache geleert würde, würde eine Zahl nahe 86400, 3600, 300 oder 60 angezeigt (die TTL-Werte werden von meinem Domain-Namen-Anbieter angeboten).
Wenn ich @dns-host
zu dig hinzufüge , funktioniert es wie erwartet:
$ dig @ns0.transip.net www.example.com|grep CNAME
www.example.com. 60 IN CNAME GITHUBACCOUNT.github.io.
Ich habe auch die anderen Befehle auf dieser Seite ausprobiert. In der Zwischenzeit arbeite ich daran, indem ich auf einen meiner Server ssh'ing und dort die Dinge überprüfe. Aber ich möchte einen richtigen Weg, um den gesamten DNS-Cache auf meinem Mac wirklich zu aktualisieren. Wie kann ich das machen?
dig
Umgeht den OS-Resolver (und damit den Cache), sodass Sie keine Aussage darüber treffen können, ob er geleert wurde oder nicht. Was es ist , Sie sagen , ist Caching auf Ihrem DNS - Server, und Sie können nicht , dass vom Client spülen.Antworten:
Der Effekt, den Sie sehen, hat absolut nichts mit den Caches auf Ihrem Computer zu tun.
Stattdessen sehen Sie, dass Ihr rekursiver DNS-Server (dh normalerweise der DNS-Server Ihres Internetdienstanbieters oder Google DNS oder ähnliches) den ursprünglichen TTL-Wert verwendet und die seit dem Abrufen dieser Datensätze vom autorisierenden DNS-Server verstrichene Zeit abgezogen hat.
Nehmen wir zum Beispiel an, Sie besitzen example.com und haben einen autorisierenden DNS-Server eingerichtet, der bei einer Abfrage den CNAME mit einer TTL von 86400 ausgibt. Dann wird der rekursive DNS-Server Ihres Internetdienstanbieters zu einem zufälligen Zeitpunkt von einer anderen Person gefragt www.example.com und ruft diese Datensätze ab. Diese Informationen werden zwischengespeichert.
Jetzt müssen Sie den Befehl dig ohne den @ -Parameter absetzen. Dies bedeutet, dass die Anforderung den in /etc/resolv.conf aufgeführten Server verwendet, bei dem es sich normalerweise um den rekursiven DNS-Server Ihres Internetdienstanbieters handelt. Jetzt erhalten Sie die Antwort mit TTL 83995 zurück. Dies bedeutet, dass 86400-83995 = 2405 Sekunden vergangen sind, seit diese Datensätze ursprünglich abgerufen wurden.
Nirgendwo in diesem Prozess ist Ihr standardmäßiger lokaler macOS-DNS-Cache beteiligt, sodass mDNSResponder und dscacheutil überhaupt nichts ändern werden.
Der Grund dafür ist, dass der autorisierende DNS-Server im Wesentlichen angegeben hat, dass "diese Information für 86400 Sekunden gültig ist". Das rekursive DNS weiß nicht, ob der autorisierende DNS-Server seitdem geändert wurde, um neue Informationen auszugeben, und kann Ihnen daher nur mitteilen, dass die Informationen jetzt für einen etwas kürzeren Zeitraum gültig sind.
quelle