DNSキャッシュのクリア方法|OS・ブラウザ別のコマンドと確認

DNSキャッシュのクリア方法

DNSキャッシュのクリアは、Windowsなら「ipconfig /flushdns」、macOSなら「sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder」、systemd-resolvedのLinuxなら「sudo resolvectl flush-caches」です。消えるのは自分のPCやブラウザの記憶だけで、DNSサーバー側のキャッシュは残ります。

この記事でわかること

  • Windows・macOS・Linux・ブラウザ別のDNSキャッシュを消すコマンド
  • DNSキャッシュがある4つの場所と、手元で消せる範囲
  • クリアできたかを表示で確かめる方法
  • クリアしても古い宛先へ行くときの切り分けの順番
  • DNSサーバー側で名前を指定して消すコマンド(Windows Server・BIND・Unbound)

一次情報: Microsoft Learn「ipconfig」(参照)/man page「resolvectl(1)」(参照)/RFC 2308「Negative Caching of DNS Queries」(参照)※2026年10月時点

DNSの仕組みは、ネットワークスペシャリスト試験でも毎回のように問われる分野です。試験の科目構成や合格率は、別の記事で整理しています。

目次

DNSキャッシュのクリアとは?消えるのは「手元の記憶」だけ

DNSキャッシュとは、一度調べた「名前とIPアドレスの組」を覚えておく仕組みです。同じ名前を引くたびにDNSサーバーへ聞きに行かずに済むので、表示が速くなります。

困るのは、サーバーの引っ越しなどでIPアドレスが変わった直後です。古い組を覚えたままだと、新しいサーバーではなく古いほうへつながります。そこで手元の記憶を捨て、もう一度DNSサーバーへ聞かせるのが「キャッシュのクリア」です。

キャッシュが置かれている場所は1か所だけではありません。ブラウザからDNSサーバーまで、何段にも重なっている作りです。どの段を消すコマンドなのかを分けて覚えておくと、「消したのに直らない」で迷いにくくなります。

DNSキャッシュがある4つの場所

  • ブラウザで名前を開くと、上から順に「覚えているか」を確かめていきます。
  • 1ブラウザのキャッシュChromeなどが独自に持つ。ブラウザの画面から消す
  • 2OSのキャッシュ(hostsファイルも読む)ipconfig /flushdns などで消せるのはここ
  • 3社内DNS・ルーター・プロバイダのDNSキャッシュサーバー。管理者でなければ消せない
  • 4権威DNSサーバー名前の本来の値を持つ。ここが古ければ設定の問題

PCで打つコマンドが消すのは1と2だけ。3は残りのTTLが切れるまで古い値を返す。

図:PCのコマンドで消せるのはブラウザとOSのキャッシュまで

OS・ブラウザ別|DNSキャッシュをクリアするコマンド一覧

まず一覧で全体を見ておきましょう。macOSとLinuxのコマンドは、先頭にsudoを付けて管理者の権限で実行します。

DNSキャッシュをクリアするコマンド一覧
環境クリアするコマンド・操作中身を見るコマンド
Windows(コマンドプロンプト)ipconfig /flushdnsipconfig /displaydns
Windows(PowerShell)Clear-DnsClientCacheGet-DnsClientCache
macOSsudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder─
Linux(systemd-resolved)sudo resolvectl flush-cachesresolvectl statistics
Linux(nscdを使う環境)sudo nscd -i hosts─
Chrome・Edgechrome://net-internals/#dns(Edgeは edge://net-internals/#dns)で「Clear host cache」─
Firefoxabout:networking#dns で「Clear DNS Cache」同じ画面に一覧が出る

Windows|ipconfig /flushdns と Clear-DnsClientCache

Windowsでは、コマンドプロンプトで次のように打ちます。成功すると、日本語版では「DNS リゾルバー キャッシュは正常にフラッシュされました。」と表示されます。

ipconfig /flushdns

PowerShellなら、Clear-DnsClientCacheでも同じことができます。Microsoftの資料でも、ipconfig /flushdnsと同じ動作とされている操作です。

Clear-DnsClientCache

Microsoftの説明では、/flushdnsは「見つからなかった」という結果も一緒に捨てます。この記憶をネガティブキャッシュと呼びます。DNSに登録した直後なのに「名前が見つからない」と出続けるときにも効く操作です。/displaydnsの見方やhostsファイルとの関係は、ipconfigコマンドの使い方の記事で詳しく扱っています。

macOS|dscacheutil と mDNSResponder

macOSでは、ターミナルで次のコマンドを続けて実行するのが一般的です。パスワードを聞かれたら、ログインに使うパスワードを入れます。

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

成功しても、何も表示されずにプロンプトへ戻ります。エラーが出ていなければ完了です。古いmacOSでは、コマンドが違っていた時期があります。手順書が古い版のまま残っていないかには気をつけてください。

Linux|まず「どこがキャッシュしているか」を確かめる

Linuxでは、ディストリビューションや設定でキャッシュの仕組みが違います。クリアの前に、名前解決をどこが受け持っているかを見てください。

resolvectl status
cat /etc/resolv.conf

/etc/resolv.confのnameserverが127.0.0.53なら、受け持っているのはsystemd-resolvedです。その場合は次のコマンドで消せます。man pageの説明では、SIGUSR2をsystemd-resolvedに送るのとほぼ同じ動作になります。

sudo resolvectl flush-caches

nscdを動かしている環境なら、「sudo nscd -i hosts」でhostsの表を無効にしてください。どれも動いていなければ、OSとしてのキャッシュは持っていないことが多いです。その場合は、問い合わせ先のDNSサーバー側を見に行きます。

ブラウザ|Chrome・Edge・Firefox

ChromeとEdgeは、OSとは別に名前解決の結果を覚えているブラウザです。アドレスバーにchrome://net-internals/#dnsを入れ、「Clear host cache」を押します。

同じ画面の「Sockets」では「Flush socket pools」も押しておきます。古いサーバーとつなぎっぱなしの接続も、これで切れるはずです。OSのキャッシュを消してもブラウザだけ古いときは、host cacheとsocket poolsの両方を消すのが近道です。Firefoxはabout:networking#dnsの「Clear DNS Cache」から消せます。

クリアできたかを確かめる方法

コマンドを打ったら、本当に消えたかを表示で確かめておきましょう。「打ったはず」で次へ進むと、切り分けの前提がずれてしまいます。

クリアできたかの確かめ方
環境確かめるコマンド消えていればこう見える
Windowsipconfig /displaydns調べた名前が一覧から消え、hostsの行だけが残る
Windows(PowerShell)Get-DnsClientCache調べた名前のEntryが出てこない
Linux(systemd-resolved)resolvectl statisticsCurrent Cache Sizeの値がクリア前より減っている
Chromechrome://net-internals/#dns画面上で名前を引き直すと、新しいIPが返る

Windowsの/displaydnsでは、1件ごとに「レコード名」「Time To Live」などが並ぶ形です。Time To Liveは、あと何秒覚えておくかの残り時間を表しています。クリア後に同じ名前を引き、新しいIPと元のTTLに近い数字が出れば成功です。

Linuxには、キャッシュを通さずに聞く方法もあります。resolvectlに–cache=noを付けると、覚えている値があってもネットワークへ聞きに行く動きになります。

resolvectl query --cache=no www.example.com

クリアしても古い宛先へ行くときの切り分け

PCのキャッシュを消しても直らないなら、原因は別の段にありそうです。上の段から順につぶしていくと、どこで止まっているかが分かります。

クリアしても古い宛先へ行くとき

  • PCのキャッシュは消したのに、まだ古いサーバーにつながる
    • hostsファイルに古い行があるhostsの行はクリアしても読み直されて残る
    • ブラウザが覚えているnet-internalsでhost cacheとsocket poolsを消す
    • キャッシュサーバーが古い値を返す残りのTTLが切れるまで待つか、管理者に消してもらう
    • 権威DNSサーバーがまだ古いレコードの書き換え自体を見直す

図:hosts、ブラウザ、キャッシュサーバー、権威サーバーの順に疑う

症状から見る原因の場所と対処
症状原因がある場所対処
自分のPCだけ古い宛先へ行くhostsファイル・OSのキャッシュhostsを確かめ、OSのキャッシュを消す
Chromeだけ古く、別のブラウザは新しいブラウザのキャッシュ・つなぎっぱなしの接続host cacheとsocket poolsを消す
社内の全員が古い宛先へ行く社内DNSのキャッシュ残りのTTLを待つか、DNSの管理者が名前を指定して消す
社外の回線からも古い権威DNSサーバーの値レコードの登録内容を見直す
登録したのに「見つからない」が続くネガティブキャッシュ下の説明を参照

プロバイダのDNSサーバーのキャッシュは、利用者側からは消せません。古い値がまだ残っているなら、TTLが切れるのを待つことになります。急ぐときは、PCが問い合わせるDNSサーバーを一時的に別のものに変えるのも1つの手でしょう。

相手のサーバーまでの経路も一緒に見ておくと、原因を早く絞れるはずです。pingコマンドの使い方とtracertコマンドの使い方で、届くかどうかと経路を確かめられます。

「見つからない」が続くのはネガティブキャッシュ

DNSは「その名前は無い」という答えも覚えています。これがネガティブキャッシュです。レコードを登録する前に一度引いてしまうと、登録後もしばらく「見つからない」が返ってきます。

RFC 2308では、この答えを覚えておく時間の決め方が書かれています。ゾーンのSOAレコードのMINIMUMと、SOA自身のTTLの小さいほうです。同じRFCによると、1〜3時間ほどが扱いやすく、1日を超える値は問題があったそうです。待ち時間の見当は、そのゾーンのSOAの値で付けられます。

DNSサーバー側のキャッシュを消すコマンド

社内DNSやキャッシュサーバーを自分で管理しているなら、サーバー側のキャッシュも消せるでしょう。製品ごとにコマンドが違い、全部を消すか名前を指定するかも選べるようになっています。

DNSサーバーのキャッシュを消すコマンド
DNSサーバー全部を消す名前を指定して消すネガティブキャッシュだけ消す
Windows Server(DNSサーバー)Clear-DnsServerCache──
BINDrndc flushrndc flushname 名前(配下も含めるなら rndc flushtree 名前)─
Unboundunbound-control flush_zone .unbound-control flush 名前(配下も含めるなら flush_zone 名前)unbound-control flush_negative

BINDのflushnameは、名前と一緒にSERVFAILを覚えた記録なども消すコマンドです。Unboundのflushが消すのは、A・AAAA・NS・CNAME・MXなど決まった種類のレコードになります。種類を絞るときはflush_typeです。

Windows ServerのClear-DnsServerCacheは、実行前に確認を求めてきます。確認を省くなら-Forceを付けます。リモートのDNSサーバーなら、-ComputerNameで対象を指定してください。

サーバーのキャッシュは、全部より名前指定で消す

全部を消す
例
rndc flush/Clear-DnsServerCache
消えた後
すべての名前を一から問い合わせ直す
向く場面
原因の名前が絞れないとき
名前を指定して消す
例
rndc flushname/unbound-control flush
消えた後
その名前だけ新しい値を取り直す
向く場面
切り替えた名前が決まっているとき

図:利用者の多いDNSサーバーでは、切り替えた名前だけを消す

全部を消すと、ほかの名前まで一斉に問い合わせ直しになります。利用者の多い社内DNSで業務時間中に打つなら、切り替えた名前だけを指定して消すのが無難です。作業手順書には、どの名前を消したかも残しておくと、あとで追いやすくなります。

よくある質問

DNSキャッシュは定期的にクリアしたほうがいいですか?

普段は不要です。覚えた値はTTLが切れると自動で消えて、次に引いたときに取り直されます。クリアが役に立つのは、DNSの値を変えた直後や、古い宛先へつながる症状が出たときです。

クリアすると通信が遅くなりますか?

クリアした直後に名前を引くときだけ、DNSサーバーへの問い合わせが1回増えます。体感で分かるほど遅くなることはほとんどありません。その後はまたキャッシュに覚えるので、元の速さに戻ります。

hostsファイルに書いた行もクリアで消えますか?

消えません。/displaydnsで見える中身には、hostsファイルから読み込んだ項目も入っています。Microsoftの資料にも、そう書かれている内容です。hostsの行を外したいときは、hostsファイルそのものを書き換えます。

nslookupでは新しいIPなのに、ブラウザでは古いのはなぜですか?

nslookupは、PCのキャッシュやhostsファイルを通らずにDNSサーバーへ直接聞くためです。ブラウザはキャッシュとhostsを先に見るので、結果が食い違います。OSとブラウザのキャッシュを両方消してから、もう一度開いてください。

スマホのDNSキャッシュも消せますか?

PCのようなコマンドは用意されていないことが多いです。ブラウザのアプリを閉じて開き直すと、取り直されることがあります。Wi-Fiを一度切ってつなぎ直すのも手です。それでも古いなら、キャッシュサーバー側のTTLを待つ段階です。

まとめ

  • WindowsはipconfigやClear-DnsClientCache、macOSはdscacheutilとmDNSResponder、Linuxはresolvectl flush-caches
  • Chrome・Edgeはnet-internalsでhost cacheとsocket poolsを消す
  • PCで消せるのはブラウザとOSのキャッシュだけ。DNSサーバー側は残りのTTLまで古い値を返す
  • クリア後は/displaydnsやresolvectl statisticsで、消えたかを表示で確かめる
  • 登録後も「見つからない」が続くならネガティブキャッシュ。待ち時間はSOAの値が目安
  • サーバー側は、全部より名前を指定して消すほうが影響が小さい

DNSキャッシュは、どの段で古い値を持っているかさえ分かれば、打つコマンドは決まります。PCのキャッシュ、ブラウザ、キャッシュサーバー、権威サーバーの4段を上から順に確かめましょう。この癖があれば、切り替え作業のトラブルを短く収められるはずです。

DNSの切り替えや障害の切り分けは、ネットワークエンジニアの現場で何度も出てくる仕事です。経験を年収や働き方に結びつけたいなら、IT・インフラに強い転職エージェントを比べた記事が役に立ちます。

ネットワークエンジニア向け転職エージェントを比べる


免責事項

※本記事はMicrosoft Learn・man page・RFCなどの公開情報をもとに整理したものです。コマンドや表示は、OSや製品のバージョン・環境によって変わる場合があります。業務で使う機器では、所属先の手順と各製品の最新資料をあわせてご確認ください。


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Tanabeです。新卒でSIerに入り、ネットワークの設計から構築、運用保守、クラウド移行まで10年やってきました。その間に転職を3回、CCNPも取りました。

正直に言うと、資格を取っても年収はすぐには上がりませんでした。1回目の転職は失敗、2回目でようやく150万円上がり、3回目で今の事業会社に落ち着いた。動いてみて分かったのは、資格の有無より「現場で何を任されてきたか」で評価が決まる、ということです。

エージェントの言葉を鵜呑みにして、危うく後悔しかけた経験もあります。だからこそ、自分がやらかした失敗をそのまま書いて、同じ回り道をしなくて済むように残しています。転職を考え始めた人が、条件で損をしないための材料にしてもらえたら嬉しいです。

目次