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を付けて管理者の権限で実行します。
| 環境 | クリアするコマンド・操作 | 中身を見るコマンド |
|---|---|---|
| Windows(コマンドプロンプト) | ipconfig /flushdns | ipconfig /displaydns |
| Windows(PowerShell) | Clear-DnsClientCache | Get-DnsClientCache |
| macOS | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder | ─ |
| Linux(systemd-resolved) | sudo resolvectl flush-caches | resolvectl statistics |
| Linux(nscdを使う環境) | sudo nscd -i hosts | ─ |
| Chrome・Edge | chrome://net-internals/#dns(Edgeは edge://net-internals/#dns)で「Clear host cache」 | ─ |
| Firefox | about: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」から消せます。
クリアできたかを確かめる方法
コマンドを打ったら、本当に消えたかを表示で確かめておきましょう。「打ったはず」で次へ進むと、切り分けの前提がずれてしまいます。
| 環境 | 確かめるコマンド | 消えていればこう見える |
|---|---|---|
| Windows | ipconfig /displaydns | 調べた名前が一覧から消え、hostsの行だけが残る |
| Windows(PowerShell) | Get-DnsClientCache | 調べた名前のEntryが出てこない |
| Linux(systemd-resolved) | resolvectl statistics | Current Cache Sizeの値がクリア前より減っている |
| Chrome | chrome://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サーバー | 全部を消す | 名前を指定して消す | ネガティブキャッシュだけ消す |
|---|---|---|---|
| Windows Server(DNSサーバー) | Clear-DnsServerCache | ─ | ─ |
| BIND | rndc flush | rndc flushname 名前(配下も含めるなら rndc flushtree 名前) | ─ |
| Unbound | unbound-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や製品のバージョン・環境によって変わる場合があります。業務で使う機器では、所属先の手順と各製品の最新資料をあわせてご確認ください。

