LinuxでDNSキャッシュをフラッシュする方法 - TechRepublic

LinuxでDNSキャッシュをフラッシュする方法 - TechRepublic

画像: ジャック・ウォーレン

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

Ubuntu Server 18.04 上の DNS キャッシュの統計。

重要な情報は「現在のキャッシュサイズ」です。以下のコマンドでキャッシュをフラッシュし、これを0にリセットします。

sudo systemd-resolve --flush-caches

もう一度、次のコマンドを発行します。

sudo systemd-resolve --statistics

現在のキャッシュ サイズが 0 になっていることがわかります (図 B )。

図B

Ubuntu Server 18.04 上の DNS キャッシュを正常にフラッシュしました。

注意点

CentOS以外のRed Hatベースのディストリビューションをご利用の場合、systemd-resolveコマンドが動作しないことがあります。その場合は、DNSキャッシュをフラッシュするために、以下のいずれかのコマンドを試す必要があるかもしれません。

sudo systemctl restart nscd.service

または:

sudo systemctl restart named

いずれにせよ、ここに示すコマンドのいずれかを実行すると、Red Hat ベースの Linux ディストリビューション上の DNS キャッシュがフラッシュされます。

DNSキャッシュをクリアする方法はこれだけです。サイトが正しく読み込まれない場合や、ネットワークに何らかの不具合があり、原因が特定できない場合は、DNSキャッシュを少しクリアしてみて、問題が解決するかどうかを確認してください。

Tagged: