DNSキャッシュのクリア方法|Mac・Windows
目次
この記事でわかること
- なぜサーバーを移転したのに自分の端末だけ古いサイトに繋がるのか、その原因(DNSキャッシュとTTL)
- Mac・Windows・Chrome それぞれで DNSキャッシュをクリアする正確なコマンドと手順
- キャッシュをクリアしても直らない場合に、次に確認すべきポイント
サイトが古いIPに繋がるのはDNSキャッシュが原因
サーバーを移転したり、DNS設定を変更したりした直後に「自分のパソコンだけ古いサイトが表示される」「設定したはずなのに反映されない」という状況はよく起こります。多くの場合、原因はあなたの端末に残っているDNSキャッシュ(ディーエヌエス・キャッシュ、過去に調べたドメインとIPアドレスの対応を一時保存したもの)です。
DNS(ドメイン名とサーバーの住所であるIPアドレスを対応づける仕組み)は、アクセスのたびに毎回問い合わせると時間がかかります。そこで、一度調べた「このドメインはこのIPアドレス」という結果を、端末やブラウザがしばらく手元に保存して使い回します。これがキャッシュで、表示を高速化する大切な仕組みです。
問題は、サーバーを移転してIPアドレスが変わった直後です。新しいIPアドレスが正しいのに、端末は手元の古いキャッシュを優先して使うため、古いサーバーに繋がり続けてしまいます。DNSレコードの種類や役割そのものについてはDNSレコードの種類とは?A・CNAMEの違いを図解で整理しています。
キャッシュが残る期間を決めるTTLとは
キャッシュがいつまで残るかは、ドメイン管理者が設定するTTL(ティーティーエル、Time To Live)という値で決まります。TTLは「この情報を何秒間キャッシュしてよいか」を秒単位で指定するもので、たとえばTTLが3600なら1時間、86400なら1日(24時間)です。
つまり、サーバー移転後に古いサイトが表示されても、それはバグではなく、TTLで指定した時間が経つまでキャッシュが有効に使われている正常な動作です。TTLの時間が過ぎれば、端末は自動的に新しいIPアドレスを取得し直します。
このため、サーバー移転やDNS変更を予定しているなら、作業の数日前にTTLを短く(300秒、つまり5分程度に)下げておくのが定石です。こうしておけば、切り替え後の古い情報の残留時間が最大でも5分程度に収まり、トラブルを最小化できます。TTLの考え方やゾーン全体の既定値についてはSOAレコードとは?DNSゾーンの基本を解説でも触れています。
それでも「今すぐ自分の端末で新しいIPを確認したい」という場面では、TTLの満了を待たずにキャッシュを手動でクリアします。以下、OS別の手順です。
MacでDNSキャッシュをクリアする手順
macOSでは、ターミナル(アプリケーション > ユーティリティ > ターミナル)を開いて、次のコマンドを実行します。
ステップ1: ターミナルを開く
Spotlight検索(Command + スペース)で「ターミナル」と入力して起動するのが簡単です。
ステップ2: クリアコマンドを実行する
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
sudo(管理者権限で実行する指定)を含むため、実行するとMacのログインパスワードを求められます。入力時に画面に文字は表示されませんが、正しく入力できているので、そのままパスワードを打ってEnterを押してください。エラーが出なければ完了です。
このコマンドは2つの処理を一度に行っています。前半の dscacheutil -flushcache がディレクトリサービスのキャッシュを消去し、後半の killall -HUP mDNSResponder が名前解決を担うmDNSResponderというプロセスを再起動して、保持していたキャッシュを破棄させます。macOS 10.11(El Capitan)以降の比較的新しいバージョンではこの組み合わせが標準です。
WindowsでDNSキャッシュをクリアする手順
Windowsでは、コマンドプロンプトを使います。
ステップ1: コマンドプロンプトを開く
スタートメニューで「cmd」と入力し、「コマンドプロンプト」を起動します。管理者権限は不要なケースが多いですが、うまくいかない場合は右クリックして「管理者として実行」を選びます。
ステップ2: クリアコマンドを実行する
ipconfig /flushdns
「DNS リゾルバー キャッシュは正常にフラッシュされました。」と表示されれば成功です。Windowsは標準でDNSの結果をキャッシュしているため、サーバー移転後に古いサイトが表示される場合の第一の対処がこのコマンドになります。
なお、現在キャッシュされている内容を確認したい場合は ipconfig /displaydns で一覧表示できます。クリア前の状態を確認しておくと、何が残っていたか把握できます。
ブラウザ(Chrome)のキャッシュもクリアする
OSのキャッシュを消しても直らない場合、ブラウザが独自に持つDNSキャッシュが原因のことがあります。Google Chromeは内部に独立したDNSキャッシュを持っているため、別途クリアが必要です。
手順
Chromeのアドレスバーに次のアドレスを入力して開きます。
chrome://net-internals/#dns
表示された画面で「Clear host cache」ボタンを押すと、ChromeのDNSキャッシュが消去されます。これに加えて、同じ画面の左メニューにある「Sockets」から「Flush socket pools」を実行すると、既存の接続も切れて、より確実に新しいIPアドレスでアクセスし直せます。
OS側とブラウザ側の両方をクリアしても古いサイトが表示される場合は、社内ネットワークの上位にあるDNSサーバー(社内のルーターやプロバイダのキャッシュサーバー)にまだ古い情報が残っている可能性があります。この場合はTTLの満了を待つのが確実です。
まとめ
- サーバー移転後に自分の端末だけ古いサイトに繋がるのは、端末に残ったDNSキャッシュが原因のことがほとんど
- キャッシュの保持時間はTTLで決まるため、DNS変更前にTTLを短くしておくとトラブルを減らせる
- 今すぐ反映したい時は、Macは
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder、Windowsはipconfig /flushdns、Chromeはchrome://net-internals/#dnsでクリアする
よくある質問
Q. キャッシュをクリアしてもまだ古いサイトが表示されます。 A. 端末とブラウザの両方をクリアしても直らない場合、社内ネットワークのルーターやプロバイダのDNSサーバーに古い情報が残っている可能性があります。この場合は設定したTTLの時間が経過すれば自動的に解消します。スマートフォンのモバイル回線など別の経路で確認すると、原因の切り分けができます。
Q. キャッシュをクリアすると何か悪影響はありますか。 A. ありません。クリア後は次回アクセス時に最新の情報を取得し直すだけで、一時的にわずかに表示が遅くなる程度です。設定や保存データが消えることはありません。
Q. DNS変更がすべての利用者に反映されるまでどれくらいかかりますか。 A. 設定していたTTLの長さに依存します。世界中の利用者全員に行き渡るには、TTLが1日(86400秒)なら最大1日程度を見込みます。変更を急ぐ場合は、事前にTTLを短くしておくことが重要です。
まずは現状を把握しましょう
自社のドメインがどのような状態にあるか、無料で診断できます。 設定状況がわからない方は、お気軽にご相談ください。 専門家がわかりやすくサポートいたします。