DNS キャッシュ クリア完全ガイド(Windows・Mac・Chrome・Linux)

DNSキャッシュとは?なぜクリアが必要なのか?
DNSキャッシュは、最近アクセスしたウェブサイトのIPアドレスを一時的に保存するデータベースです。example.com のようなドメインを入力すると、OSは外部のDNSサーバーに問い合わせる前に、まずDNSキャッシュを確認します。これにより、DNS検索を繰り返す必要がなくなり、ブラウジングが高速化されます。キャッシュからの応答は1ms未満で返されますが、新たなDNSクエリには20〜120msかかります。
問題は、DNSレコードが変わることがある点です。ウェブサイトが新しいサーバーに移転したり、ホスティングプロバイダーを変更したり、IPアドレスを更新したりすることがあります。そうなると、キャッシュされたレコードが古くなり、もう使われていない古いIPを指してしまいます。DNSをフラッシュすると、キャッシュされたすべてのレコードを破棄し、DNSサーバーから最新情報を取得し直します。
DNSキャッシュは複数のレベルに存在します。オペレーティングシステム、ブラウザ、そして場合によってはルーターにもあります。古いレコードを完全に削除するには、複数のレベルでキャッシュをクリアする必要があることもあります。
DNSキャッシュの仕組み:TTL・キャッシュレベル・有効期限
DNSキャッシュの仕組みを理解することで、フラッシュが本当に必要な状況とそうでない状況を判断できるようになります。
すべてのDNSレコードには、ドメイン所有者が設定するTTL(Time to Live)値があります。TTLは、キャッシュされたレコードを破棄するまで何秒間保持するかをシステムに伝えます。TTLの一般的な値は、頻繁に変更されるレコードでは300秒(5分)から、MXやTXTエントリのような安定したレコードでは86,400秒(24時間)までの範囲です。
DNSキャッシュは4つの異なる層で行われ、それぞれに独自のキャッシュがあります。
ブラウザキャッシュ — Chrome・Firefox・Edgeはそれぞれ独自のDNSキャッシュを保持し、最大約1,000エントリを保存します。ChromeのキャッシュはDNSレコードの実際のTTLに関わらず、デフォルトのTTLが60秒に設定されています
オペレーティングシステムキャッシュ — WindowsのDNSクライアントサービスはデフォルトで最大1,000エントリをキャッシュします。macOSはmDNSResponderを、LinuxはsystemD-resolved(有効な場合)を使用します。OSキャッシュはDNSサーバーが設定したTTLを尊重します
ルーターキャッシュ — ほとんどの家庭用ルーターは、接続されているすべてのデバイスのDNS応答をキャッシュします。キャッシュサイズはルーターのモデルによって異なりますが、通常500〜1,000エントリを保持します
ISPリゾルバーキャッシュ — ISPのDNSリゾルバーはすべてのユーザーのレコードをキャッシュします。これは最大のキャッシュであり、フラッシュすることはできません。TTLの期限切れを待つしかありません
DNSをフラッシュすると、ブラウザとOSの層がクリアされます。ISPリゾルバーはフラッシュできませんが、Cloudflare(1.1.1.1)やGoogle(8.8.8.8)などのパブリックDNSサーバーに切り替えることで回避できます。通常のブラウジングでは、DNSキャッシュのヒット率は通常80〜90%です。つまり、ほとんどの検索はDNSサーバーに問い合わせることなく、キャッシュから即座に処理されます。
DNSフラッシュが必要なのはどんなとき?
DNSを定期的にフラッシュする必要はありません。OSはドメイン所有者が設定したTTL値に基づいてキャッシュの有効期限を自動的に管理します。ただし、手動でフラッシュすることで実際の問題を解決できる特定の状況があります。
ウェブサイトが読み込まれない — 他のユーザーは閲覧できているのに、DNS_PROBE_FINISHED_NXDOMAIN や DNSサーバーが応答しない などのエラーが表示される
古いバージョンのウェブサイトが表示される — サイトが新しいサーバーに移転したにもかかわらず、古いバージョンが表示される
DNS設定を変更した — ISPのDNSからGoogle DNS(8.8.8.8)やCloudflare(1.1.1.1)に切り替えて、変更をすぐに反映させたい
SSL証明書エラーが発生する — サイトが証明書を更新した後、接続がプライベートではありません という警告が表示される
ドメインの伝播中 — DNSレコード(A、CNAME、MX)を更新し、TTLの期限切れを待たずにすぐに変更を確認したい。DNSプロパゲーションチェッカーを使用して、変更が世界中に伝播しているか確認できます
セキュリティ上の懸念 — DNSキャッシュポイズニングの疑いがある、または侵害されたサイトにアクセスした可能性がある
Windows 10・Windows 11でDNSキャッシュをクリアする方法
WindowsでDNSをフラッシュする方法は2つあります。コマンドプロンプトとPowerShellです。どちらも同じ処理を行い、WindowsDNSクライアントサービスのキャッシュをクリアします。コマンドはWindows 10、Windows 11、Windows Server、以前のバージョンでも動作します。
方法1:コマンドプロンプトを使う
手順1 —
Windows + Sを押して検索を開き、cmdと入力し、コマンドプロンプトを右クリックして管理者として実行を選択手順2 — 以下のコマンドを入力してEnterキーを押す:
手順3 — 「DNSリゾルバーキャッシュのフラッシュに成功しました。」というメッセージが表示されることを確認
ipconfig /flushdnsこれだけで完了です。WindowsのDNSキャッシュが空になり、次回ウェブサイトにアクセスする際、Windowsは設定されているDNSサーバーに最新のIPアドレスを問い合わせます。ipconfigコマンドはWindowsの標準ネットワークユーティリティで、/flushdns はその多くのスイッチのひとつです。
方法2:PowerShellを使う
PowerShellには、追加オプションとともに同じ機能を提供する専用のDNSコマンドレットがあります。
# DNSキャッシュをフラッシュする
Clear-DnsClientCache
# キャッシュが空になったか確認する(エントリがほとんどない状態になるはず)
Get-DnsClientCache
# DNSキャッシュの統計情報を確認する
Get-DnsClientCache | Measure-Object | Select-Object CountClear-DnsClientCache は ipconfig /flushdns とまったく同じ処理を行います。PowerShellの利点は Get-DnsClientCache コマンドレットで、ipconfig /displaydns よりもフィルタリングやエクスポートがしやすいテーブル形式でキャッシュエントリを確認できます。
macOS(Sequoia・Sonoma・Ventura)でDNSキャッシュをクリアする方法
macOSでDNSをフラッシュするにはターミナルコマンドが必要です。同じコマンドがmacOS Sequoia(15)、Sonoma(14)、Ventura(13)、Monterey(12)で動作します。
| macOSバージョン | DNSフラッシュコマンド |
|---|---|
| Sequoia (15) / Sonoma (14) / Ventura (13) / Monterey (12) | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
| Big Sur (11) / Catalina (10.15) / Mojave (10.14) | sudo killall -HUP mDNSResponder |
| El Capitan (10.11) / Sierra (10.12) / High Sierra (10.13) | sudo killall -HUP mDNSResponder |
| Yosemite (10.10) | sudo discoveryutil mdnsflushcache; sudo discoveryutil udnsflushcaches |
| Lion (10.7) から Mavericks (10.9) | sudo killall -HUP mDNSResponder |
手順1 —
Command + Spaceを押してSpotlightを開き、ターミナルと入力してEnterキーを押す手順2 — 以下のコマンドを貼り付けてEnterキーを押す:
手順3 — 求められたらMacのパスワードを入力する。ターミナルには何も出力されませんが、DNSキャッシュはクリアされています
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponderこのコマンドは2つの処理を行います。dscacheutil -flushcache はディレクトリサービスのキャッシュをクリアし、killall -HUP mDNSResponder はmacOSのDNSリゾルバープロセス(mDNSResponder)を再起動します。完全なフラッシュにはどちらも必要です。どちらか一方だけを実行すると、もう一方に古いエントリが残ってしまう可能性があります。
Linux(Ubuntu・Debian・Fedora)でDNSキャッシュをクリアする方法
LinuxのDNSキャッシュ管理は、ディストリビューションと使用しているDNSサービスによって異なります。最近のほとんどのLinuxディストリビューション(Ubuntu 22.04+、Fedora 33+、Arch)では、デフォルトのDNSリゾルバーとしてsystemd-resolvedを使用しています。
手順1 —
Ctrl + Alt + Tでターミナルを開く手順2 — 使用しているDNSサービスに対応したフラッシュコマンドを実行する(下記参照)
手順3 — 統計コマンドを実行してキャッシュがクリアされたことを確認する
# Ubuntu 22.04+ / Fedora / Arch(systemd-resolved)
sudo resolvectl flush-caches
# フラッシュされたか確認する — キャッシュサイズが0になっているはず
sudo resolvectl statistics
# Ubuntu 20.04以前
sudo systemd-resolve --flush-caches
# dnsmasqを使用している場合
sudo systemctl restart dnsmasq
# nscdを使用している場合
sudo systemctl restart nscdどのDNSサービスを使用しているかわからない場合は、systemdベースのディストリビューションで sudo resolvectl status を実行してください。DNS設定が表示されればsystemd-resolvedを使用しています。コマンドが見つからない場合は、systemctl status dnsmasq または systemctl status nscd でdnsmasqまたはnscdを確認してください。
Google ChromeでDNSキャッシュをクリアする方法
Google Chromeはオペレーティングシステムのキャッシュとは別に、独自の内部DNSキャッシュを保持しています。ChromeはDNSエントリを最大1,000件キャッシュし、固定TTLは60秒です。OSのDNSキャッシュをフラッシュした後でも、Chromeは古いキャッシュレコードを使い続けることがあります。クリアする方法は以下の通りです。
手順1 — Chromeで新しいタブを開く
手順2 — アドレスバーに
chrome://net-internals/#dnsと入力してEnterキーを押す手順3 — Clear host cache ボタンをクリックする
手順4 — (任意)
chrome://net-internals/#socketsにアクセスして Flush socket pools をクリックし、古いIPアドレスを使い続けている可能性のある古いTCP接続を閉じる
完全にリフレッシュするには、OSのDNSキャッシュとChromeの内部キャッシュの両方をフラッシュしてください。ChromeのDNSキャッシュはブラウジング中に自動的に再構築されるため、クリアしてもパフォーマンスへの永続的な影響はありません。
Firefox・Edge・SafariでDNSキャッシュをクリアする方法
主要なブラウザにはそれぞれ独自のDNSキャッシュがあります。各ブラウザでのクリア方法を以下に示します。
| ブラウザ | DNSキャッシュのクリア方法 |
|---|---|
| Microsoft Edge | アドレスバーに `edge://net-internals/#dns` と入力 → **Clear host cache** をクリック。また `edge://net-internals/#sockets` でソケットもフラッシュする |
| Firefox | アドレスバーに `about:networking#dns` と入力 → **Clear DNS Cache** をクリック。FirefoxはデフォルトでDNSエントリを60秒キャッシュする |
| Safari(Mac) | Safariメニュー → **開発** → **キャッシュを空にする**。「開発」メニューが表示されない場合は、Safari → 設定 → 詳細 → メニューバーに「開発」メニューを表示 を有効にする |
| Brave / Opera / Vivaldi | Chromeと同じ方法:`chrome://net-internals/#dns` → **Clear host cache**(Chromiumベースのブラウザはすべて同じ方法) |
ルーターのDNSキャッシュをクリアする方法
ホームルーターも、ネットワーク上のすべてのデバイスのDNS応答をキャッシュします。コンピューターとブラウザのDNSキャッシュをフラッシュしても古いレコードが残る場合は、ルーターのキャッシュが原因かもしれません。
ほとんどのコンシューマー向けルーターには専用のDNSフラッシュコマンドがありません。ルーターのDNSキャッシュをクリアする最も簡単な方法は再起動です。
手順1 — ルーターの電源ケーブルを抜く(リセットボタンは押さないでください。ルーターが工場出荷状態にリセットされます)
手順2 — 30秒待つ。これにより、キャッシュされたすべてのDNSエントリを含む、ルーターの揮発性メモリ(RAM)が完全にクリアされます
手順3 — 電源ケーブルを再度接続し、ルーターが完全に起動するまで1〜2分待つ
手順4 — 必要に応じてWi-Fiに再接続し、問題が解決されたか確認する
一部の高度なルーター(Ubiquiti、pfSense、MikroTik)にはCLIアクセスがあり、DNSを直接フラッシュできます。ルーターがdnsmasqを実行している場合、SSHで接続して sudo systemctl restart dnsmasq を実行すると、ルーターを再起動せずにDNSキャッシュのみをクリアできます。
DNS問題が続く場合は、ルーターのDNS設定をCloudflare(1.1.1.1)やGoogle(8.8.8.8)に変更することを検討してください。これにより、各デバイスを個別に設定しなくても、ネットワーク上のすべてのデバイスに高速DNSが適用されます。詳しい手順については遅いDNS検索の修正ガイドをご覧ください。
DNSキャッシュがクリアされたことを確認する方法
フラッシュ後、キャッシュが実際に空になっていることを確認してください。各プラットフォームでの確認コマンドは以下の通りです。
# Windows — エントリが空またはほとんどない状態になっているはず
ipconfig /displaydns
# Windows PowerShell — 残りエントリ数を確認
Get-DnsClientCache | Measure-Object | Select-Object Count
# macOS — mDNSResponderにINFOシグナルを送信
sudo killall -INFO mDNSResponder
# その後、Console.appでmDNSResponderの出力を確認
# Linux(systemd-resolved)— キャッシュサイズが0になっているはず
sudo resolvectl statistics以前にアクセスできなかったウェブサイトにアクセスしてテストすることもできます。フラッシュ後に正常に読み込まれれば、古いDNSキャッシュが問題の原因でした。DNS RobotのDNS Lookupツールを使用して、自分のシステムが解決するDNSレコードと権威DNSサーバーが報告するレコードを比較することができます。
より詳しく確認するには、対象ドメインでDNSプロパゲーションチェッカーを実行してください。30か国以上のDNSサーバーに問い合わせることで、問題がローカル(キャッシュ)なのか、グローバル(DNSレコード自体がまだ更新されていない)なのかを確認できます。
DNSフラッシュで問題が解決しない場合の対処法
DNSフラッシュはキャッシュ関連の問題を解決しますが、すべてのDNS問題が古いキャッシュエントリによるものではありません。すべてのレベル(OS・ブラウザ・ルーター)でフラッシュした後も問題が続く場合は、以下の手順を試してください。
DNSサーバーを切り替える — ISPのDNSがダウンしているか、誤ったレコードを返している可能性があります。Cloudflare(1.1.1.1)またはGoogle(8.8.8.8)に切り替えてください。詳細な手順については遅いDNS検索の修正ガイドをご覧ください
サイトが実際にダウンしているか確認する — DNS RobotのPingツールを使って、サーバーが応答するか確認してください。複数の場所からPingが失敗する場合、サイトがダウンしています。DNSの問題ではありません
DNSレコードを確認する — DNS Lookupを使って、ドメインのA・AAAA・CNAMEレコードを確認してください。レコードが誤ったIPを指している場合は、ドメイン所有者が修正する必要があります
VPNまたはプロキシを無効にする — VPNはDNSクエリを独自のサーバーにルーティングするため、異なるレコードをキャッシュしたり特定のドメインをブロックしたりする場合があります。切断してから再度テストしてください
hostsファイルを確認する — コンピューターのhostsファイルは特定のドメインのDNSを上書きします。Windowsでは
C:\Windows\System32\drivers\etc\hostsを確認し、macOS・Linuxでは/etc/hostsを確認してください。影響を受けているドメインのエントリがあれば削除してください伝播を待つ — DNSレコードが最近変更された場合、世界中のすべてのDNSサーバーが更新されるまで最大48時間かかることがあります。DNSプロパゲーションチェッカーで更新の進捗を追跡できます
DNSレコードを今すぐ確認する
DNS Robotの無料DNS Lookupツールを使って、任意のドメインのDNSレコードを確認しましょう。ローカルシステムの解決結果と世界中の権威DNSサーバーの結果を比較できます。
Try DNS LookupFrequently Asked Questions
DNSフラッシュとは、コンピューターにキャッシュされたドメイン名とIPアドレスの対応情報をすべて削除する操作です。フラッシュ後、次回ウェブサイトにアクセスする際、システムは古くなったキャッシュデータではなく、DNSサーバーから最新のDNSレコードを取得します。