DNS

MacでDNSキャッシュを消去する

macOSはDNSの応答をしばらく保存しています。キャッシュを消去すると、次の検索で改めてDNSサーバに問い合わせます。

対象:OS X 10.10.4 Yosemite以降(現在のすべてのmacOSを含む)。確認日:2026年10月29日

症状

  • サイトが新しいサーバに移ったのに、Macが古いアドレスにアクセスし続ける。
  • /etc/hostsやDNSレコードへの変更が反映されない。
  • ネットワークが復旧したのに「サーバが見つかりません」エラーが消えない。

考えられる原因

  • キャッシュされた応答。mDNSResponderはDNSの応答をキャッシュしています。キャッシュに古くなった応答が残っていることがあります。
  • ブラウザのキャッシュ。独自のDNSキャッシュを持つブラウザもあります。macOSのキャッシュを消去しても、これは消えません。
  • DNSサーバのキャッシュ。ルーターやプロバイダも応答を保存しています。Mac側でキャッシュを消去しても、これは消えません。

確認方法

  1. macOSのリゾルバで名前を検索し、表示されたアドレスを予想しているアドレスと比べます。

    dscacheutil -q host -a name example.com
  2. macOSが使っているDNSサーバを表示します。

    scutil --dns

解決方法

  1. ターミナルを開き、ディレクトリサービスのキャッシュを消去します。

    sudo dscacheutil -flushcache

    管理者パスワードが必要です。

  2. mDNSResponderにキャッシュの消去を指示します。AppleはOS X 10.10.4以降向けにこのコマンドを案内しています。

    sudo killall -HUP mDNSResponder

    管理者パスワードが必要です。

  3. ターミナルに求められたらパスワードを入力します。コマンドが成功しても、メッセージは表示されません。

  4. ブラウザが独自の古い応答を使わないように、ブラウザを終了して開き直します。

  5. もう一度名前を検索します。古いアドレスが返ってくる場合は、DNSサーバにまだ古い情報が残っています。

Kilobatを使う場合

  1. CLIは同じ2つのコマンドを実行します。macOSが管理者パスワードを求めます。

    kilobat dns flush
  2. アプリでは「ヘルス」タブを開き、DNSパネルの「キャッシュを消去…」をクリックします。

  3. MCPツールset_dnsでproviderをflushに設定しても同じ動作になります。その場合、エージェントには先にユーザに確認するよう伝えます。

よくある質問

キャッシュを消去するとDNSは速くなりますか?

いいえ。古い応答が削除されるだけです。次の検索では改めてDNSサーバに問い合わせるため、少し遅くなることがあります。

DNSキャッシュを消去しても安全ですか?

はい。アプリが名前を検索するにつれて、macOSがキャッシュを埋め直します。dscacheutilのmanページには、消去は必要なときだけ使うよう書かれています。

Macを再起動する必要はありますか?

いいえ。コマンドはすぐに反映されます。

出典

出典は2026年10月29日に確認しました。manページはmacOSに付属のものです。「ターミナル」でman <name>を実行すると開けます。