DNSキャッシュをクリアする方法(WindowsとMac)

コンピュータはDNSキャッシュをローカルに保存することで、同じ問い合わせを繰り返さないようにしています。ドメイン名とIPアドレスの対応を記憶しておくことで、次回以降のアクセスが速くなります。ほとんどの場合うまく機能しますが、問題を引き起こすこともあります。サーバーを移転したばかりのサイトが古いコンテンツを表示し続ける、スマートフォンでは問題なく開けるのにPCで開けない、ネットワーク設定を変更した後にDNSエラーが続く、といった状況です。DNSキャッシュをクリアするとこれらが解消され、システムがゼロから再出発します。

WindowsでDNSキャッシュをクリアする

Windows 10とWindows 11で手順は同じです。管理者としてコマンドプロンプトを開きます。Windowsキーを押し、「cmd」と入力し、「コマンドプロンプト」を右クリックして「管理者として実行」を選択します。

次のコマンドを入力してEnterを押します。

ipconfig /flushdns

「DNS リゾルバーのキャッシュが正常にフラッシュされました。」というメッセージが表示されるはずです。エラーが出た場合は、コマンドプロンプトを管理者権限で開いているか確認してください。

クリアする前に現在のキャッシュの内容を確認したい場合は、次のコマンドを使います。

ipconfig /displaydns

フラッシュ後に同じコマンドを再度実行して確認しましょう。リストが空か非常に短くなっているはずです。

MacでDNSキャッシュをクリアする

macOSではシステムバージョンによってコマンドが若干異なります。ターミナルを開き(アプリケーション、ユーティリティ、ターミナル)、お使いのバージョンに対応するコマンドを入力してください。

macOS Ventura、Sonoma、Sequoia(macOS 13以降):

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

macOS MontereyおよびBig Sur(macOS 11と12):

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

macOS CatalinaおよびMojave(macOS 10.15と10.14):

sudo killall -HUP mDNSResponder

いずれの場合も管理者パスワードの入力が求められます。ターミナルは成功しても確認メッセージを表示しません。何も出力されなければ成功です。

ブラウザのDNSキャッシュをクリアする

多くのガイドが見落としていることがあります。最新のブラウザはOSとは独立した独自のDNSキャッシュを持っています。問題がブラウザ側にある場合、システムキャッシュのクリアだけでは不十分なことがあります。

ChromeとEdge: アドレスバーに以下を入力し、「ホストキャッシュをクリア」をクリックします。

chrome://net-internals/#dns

Firefox: DNSキャッシュはブラウザを閉じると自動的にクリアされます。手動で強制クリアするには、アドレスバーにabout:configと入力し、network.dnsCacheExpirationを検索して値を0に設定し、その後60に戻してキャッシュを再有効化します。

Safari: まず開発メニューを有効にします(設定、詳細、「メニューバーに"開発"メニューを表示」にチェック)。次に「開発」をクリックし、「キャッシュを空にする」を選択します。

DNSキャッシュをクリアすべきタイミング

最初に試すべき状況がいくつかあります。

  • サイトがDNSエラーや「このサイトにアクセスできません」を表示するが、スマートフォンのモバイルデータ通信では正常に開ける
  • ルーターのDNSサーバーを変更したばかりだが、新しい設定が反映されていない
  • 管理しているサイトが新しいサーバーに移転したのに、古いコンテンツが表示され続けている
  • WindowsまたはMacのhostsファイルを編集したが、変更が反映されていない
キャッシュをクリアしても解決しない場合、プロバイダ側のキャッシュやドメインのTTLが原因かもしれません。完全に伝播するまで最大48時間かかることがあります。簡単なテストとして、NTTやソフトバンクのDNSサーバーの代わりに1.1.1.1(Cloudflare)や8.8.8.8(Google)に一時的に切り替えてみてください。それで開ければ、上流側の古いキャッシュが原因だと確認できます。