Edited at

MacOS(El Capitan)でのDNSキャッシュの確認と消去

More than 1 year has passed since last update.


概要

El Capitanでは、 mDNSResponder プロセスが、グローバルなDNSリゾルバキャッシュを提供している。(Windowsの DNS Client サービスのようなもの)

本記事では、 mDNSResponder がキャッシュしているエントリーの確認方法、およびその消去方法について記載する。


確認

mDNSResponder プロセスが SIGINFO を受信すると、その内部状態がシステムログへダンプされる。DNSキャッシュエントリーは Cache セクションに含まれている。

以下のコマンドで、現在のキャッシュを確認することができる。

$ sudo killall -INFO mDNSResponder

$ sudo grep mDNSResponder /var/log/system.log
mDNSResponder[96]: ---- BEGIN STATE LOG ---- mDNSResponder mDNSResponder-625.40.20 (Feb 11 2016 18:14:38) OSXVers 15
mDNSResponder[96]: Timenow 0x7475882C (1953859628)
mDNSResponder[96]: ------------ Cache -------------
mDNSResponder[96]: Slt Q TTL if U Type rdlen
mDNSResponder[96]: 5 224 -U- Addr 4 appspot.l.google.com. Addr 216.58.197.145
:


消去

mDNSResponder のDNSキャッシュが消える契機としては以下がある。



  • mDNSResponder プロセスが SIGHUP を受信したとき

  • 任意のネットワークから切断したとき(WiFi,VPN,etc)

手動で消去する場合は以下のコマンドを実行すればよい。

$ sudo killall -HUP mDNSResponder


備考

Safariで参照したサイトのホスト名については mDNSResponder のキャッシュ対象となるが、Chromeの場合はChrome側の独自管理となる。 chrome://net-internals/#dns にて確認・消去すること。


参考