
画像: ジャック・ウォーレン
DNSキャッシュは、DNSルックアップ(アクセスしたウェブサイトやインターネットドメインに関する情報)を保存する、オペレーティングシステム上の一時データベースです。仕組みは非常にシンプルです。ウェブサイトに何度もアクセスすると、オペレーティングシステムは、低速なパブリックDNSレコードを使用する代わりに、ローカルに保存されたキャッシュからウェブサイトの情報を取得します。これにより、ウェブサイトの読み込み速度が大幅に向上します。
ただし、DNSキャッシュが破損している場合もあります。また、ウェブサイトが変更されたにもかかわらず、ブラウザが古い(キャッシュされた)バージョンのサイトを読み込み続けるというケースもあるかもしれません。
このような状況になったらどうすればいいでしょうか?OSのDNSキャッシュをフラッシュしましょう。DNSキャッシュをフラッシュすると、ウェブサイトの初期読み込みが少し遅くなりますが、読み込みは正常になります。サイトのDNSがキャッシュされると、そのサイトの読み込み速度が速くなります。
DNSキャッシュをフラッシュする方法は、お使いのオペレーティングシステムによって異なります。LinuxオペレーティングシステムでDNSキャッシュをフラッシュするのがいかに簡単かをお見せしたいと思います。
参照:これら 10 個の PowerShell コマンドレットで IT 問題を迅速に解決する(TechRepublic ダウンロード)
必要なもの
この手順を実行するために必要なのは、systemd を使用する Linux ディストリビューションと sudo 権限を持つユーザーだけです。この手順は、Ubuntu ベースと Red Hat ベースの両方のディストリビューションで実行できます。Ubuntu 18.04 と CentOS 8 の両方でテストしましたが、問題なく動作しました。
キャッシュをフラッシュする方法
まず最初に、systemd-resolved が実行中であることを確認する必要があります。そのためには、デスクトップまたはサーバーでターミナルウィンドウを開き、次のコマンドを実行します。
sudo systemctl is-active systemd-resolved
このコマンドの出力には、次の内容のみが表示されます。
active
問題がなければ、そのまま進めてください。次に、以下のコマンドでDNSキャッシュの統計情報を確認します。
sudo systemd-resolve --statistics
このコマンドを実行すると、トランザクション、キャッシュ、DNSSEC 判定のリストが表示されます (図 A )。
図A

重要な情報は「現在のキャッシュサイズ」です。以下のコマンドでキャッシュをフラッシュし、これを0にリセットします。
sudo systemd-resolve --flush-caches
もう一度、次のコマンドを発行します。
sudo systemd-resolve --statistics
現在のキャッシュ サイズが 0 になっていることがわかります (図 B )。
図B

注意点
CentOS以外のRed Hatベースのディストリビューションをご利用の場合、systemd-resolveコマンドが動作しないことがあります。その場合は、DNSキャッシュをフラッシュするために、以下のいずれかのコマンドを試す必要があるかもしれません。
sudo systemctl restart nscd.service
または:
sudo systemctl restart named
いずれにせよ、ここに示すコマンドのいずれかを実行すると、Red Hat ベースの Linux ディストリビューション上の DNS キャッシュがフラッシュされます。
DNSキャッシュをクリアする方法はこれだけです。サイトが正しく読み込まれない場合や、ネットワークに何らかの不具合があり、原因が特定できない場合は、DNSキャッシュを少しクリアしてみて、問題が解決するかどうかを確認してください。