Windows・Linux・macOSでローカルDNSキャッシュをクリアして変更後のレコードを反映する過程を表したカバー画像

概要

実務作業中、ドメイン設定でDNSレコードを変更したにもかかわらず、ローカルPCやサーバーに即座に反映されない場合があります。

これはOSやアプリケーション(ブラウザなど)がDNSの応答をローカルにキャッシュしているためです。

この記事では、Windows、Linux、macOSでローカルDNSキャッシュをクリアする方法をまとめます。

⚠️ ローカルキャッシュをクリアしても即座に反映されない場合があります ローカルキャッシュをクリアしても、DNSリゾルバーやネームサーバーのキャッシュポリシーによりTTLが残っている場合は変更がすぐに伝播されないことがあります。

この場合は一定時間が経過してから新しいレコードが反映されます。

ブラウザを使用中の場合、ブラウザ自体のキャッシュにより以前の結果が表示されることがあるため、実行中のブラウザをすべて終了してから再度確認してください。

DNSとは?

DNS(Domain Name System)はインターネットの電話帳のような役割を果たすシステムです。

人間が読めるドメイン名(例:plzhans.com)をコンピューターが理解できるIPアドレス(例:185.199.111.153)に変換します。

DNSの主な機能

  • ドメイン名の変換: ユーザーが入力したドメイン名をIPアドレスに変換
  • キャッシュ: よく使われるドメイン情報をローカルに保存して高速アクセスを可能にする
  • 分散データベース: 世界中に分散されたサーバーを通じて安定したサービスを提供

DNSキャッシュをクリアする理由

  • WebサイトのIPアドレスが変更された場合
  • DNS関連のネットワーク問題の解決
  • 古いDNS情報による接続エラーの修正
  • セキュリティおよびプライバシー保護

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

Windowsではコマンドプロンプト(CMD)を管理者権限で実行してDNSキャッシュをクリアできます。

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

  1. コマンドプロンプトを管理者権限で実行: スタートメニューで「cmd」を検索し、右クリックして「管理者として実行」を選択します。
  2. コマンドの入力: 以下のコマンドを入力してEnterキーを押します。
1ipconfig /flushdns

結果の確認:「DNSリゾルバーキャッシュは正常にフラッシュされました」というメッセージが表示されれば正常に完了しています。

実行例

1C:\>ipconfig /flushdns
2
3Windows IP 構成
4
5DNS リゾルバー キャッシュは正常にフラッシュされました。

注意: 管理者権限がないとコマンドが実行されないため、必ず管理者権限でコマンドプロンプトを実行してください。


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

Linuxではディストリビューションと使用しているDNSサービスによってDNSキャッシュをクリアする方法が異なります。

systemd-resolvedを使用している場合(Ubuntu 17.04以降、Debianなど)

1sudo systemd-resolve --flush-caches

または

1sudo resolvectl flush-caches

nscdを使用している場合

1sudo /etc/init.d/nscd restart

または

1sudo systemctl restart nscd

dnsmasqを使用している場合

1sudo /etc/init.d/dnsmasq restart

または

1sudo systemctl restart dnsmasq

DNSキャッシュの確認

systemd-resolvedのキャッシュ統計を確認するには:

1sudo systemd-resolve --statistics

注意: Linuxシステムはデフォルトでは DNS キャッシュを使用しない場合が多いです。

DNSキャッシュサービスがインストールされていない場合は、別途キャッシュをクリアする必要はありません。


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

macOSではターミナルからDNSキャッシュをクリアできます。ほとんどのバージョンでは以下のコマンドで十分です。

推奨(ほとんどのmacOS)

1sudo dscacheutil -flushcache
2sudo killall -HUP mDNSResponder
旧バージョンの場合は?

dscacheutilがない場合や動作しない場合は、以下のみを試してください。

1sudo killall -HUP mDNSResponder

確認・注意事項

  • コマンド実行時に管理者パスワードの入力が必要です。
  • 成功しても別途出力がない場合があります。
  • 変化がない場合はブラウザのDNSキャッシュも一緒にクリアするか(ブラウザを再起動)、ネットワークを再接続してみてください。