DNSキャッシュとは?仕組みからキャッシュポイズニング対策・フラッシュ方法まで解説
DNSキャッシュ(DNSリゾルバーキャッシュとも呼ばれます)とは、コンピューターのOSが管理する一時的なデータベースで、最近アクセスした、またはアクセスを試みたウェブサイトやインターネットドメインの記録が保存されています。
つまり、DNSキャッシュとは「最近のDNSルックアップの記憶」のようなものであり、コンピューターがウェブサイトを読み込もうとするときに素早く参照できる情報源なのです。
補足: この記事の内容は、DNS設定を変更していない一般の家庭ユーザーを対象としています。
DNSキャッシュの目的
インターネットは、ドメインネームシステム(DNS)によって、すべての公開ウェブサイトとその対応するIPアドレスの索引を管理しています。これは「電話帳」のようなものだと考えると分かりやすいでしょう。
電話帳があれば、全員の電話番号を暗記する必要はありません。電話同士が通信できるのは番号だけであっても、です。同じように、DNSのおかげで、私たちはすべてのウェブサイトのIPアドレスを覚える必要がありません。ネットワーク機器がウェブサイトと通信できるのはIPアドレス経由だけだからこそ、この仕組みは不可欠なのです。
では、ブラウザーでウェブサイトを開こうとしたとき、裏側では何が起きているのでしょうか。
たとえばlifewire.comのようなURLを入力すると、ブラウザーはルーターに対象サイトのIPアドレスを問い合わせます。ルーターにはDNSサーバーのアドレスが登録されているため、今度はそのDNSサーバーにホスト名のIPアドレスを要求します。DNSサーバーがlifewire.comに紐づくIPアドレスを見つければ、どのウェブサイトが要求されているのかが判明し、ブラウザーは適切なページを読み込めるようになります。
この処理は、訪問するすべてのウェブサイトで発生しています。ホスト名でサイトにアクセスするたびに、ブラウザーはインターネットへリクエストを送信しますが、サイト名がIPアドレスに「変換」されない限り、そのリクエストは完了しません。
ここで問題になるのは、公開されている数多くのDNSサーバーを利用しても、変換(名前解決)の高速化には限界があるという点です。そこで登場するのが、「電話帳」のローカルコピー、すなわちDNSキャッシュです。
DNSキャッシュは、最近アクセスしたアドレスの名前解決を、リクエストがインターネットへ送信されるより前の段階で処理することで、さらに高い速度を実現します。
ワンポイント: 実は、コンピューターがウェブサイトを読み込むまでの「ルックアップ」過程のあらゆる階層に、DNSキャッシュが存在しています。コンピューターはルーターに到達し、ルーターはISP(プロバイダー)に接続し、場合によっては別のISPを経由して、最終的に「ルートDNSサーバー」へたどり着きます。この各段階にDNSキャッシュが用意されているのは、いずれも名前解決を高速化するためです。
DNSキャッシュの仕組み
ブラウザーが外部ネットワークへリクエストを発行する前に、コンピューターは各リクエストを受け取り、DNSキャッシュデータベース内でドメイン名を検索します。このデータベースには、最近アクセスしたすべてのドメイン名と、初回リクエスト時にDNSが算出したアドレスの一覧が格納されています。
Windowsでは、コマンドプロンプトで ipconfig /displaydns を実行すると、ローカルDNSキャッシュの内容を確認できます。表示結果は次のようになります。
docs.google.com
-------------------------------------
Record Name . . . . . : docs.google.com
Record Type . . . . . : 1
Time To Live . . . . : 21
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 172.217.6.174
DNSにおける「Aレコード」とは、特定のホスト名に対応するIPアドレスを格納しているDNSエントリーの部分です。DNSキャッシュには、このアドレス、要求されたウェブサイト名、そしてホストのDNSエントリーに含まれるその他のパラメーターが保存されます。
DNSキャッシュポイズニングとは?
DNSキャッシュに不正なドメイン名やIPアドレスが書き込まれると、キャッシュは「汚染(poisoned/ polluted)」された状態になります。
技術的な不具合や管理者の操作ミスによってキャッシュが破損することもありますが、DNSキャッシュポイズニングは通常、コンピューターウイルスやネットワーク攻撃によって無効なDNSエントリーがキャッシュへ挿入される現象を指します。
ポイズニングが発生すると、クライアントからのリクエストは誤った宛先、つまり悪意のあるウェブサイトや広告だらけのページへリダイレクトされてしまいます。
たとえば、先ほどのdocs.google.comのAレコードが別の値に書き換えられていた場合、ブラウザーにdocs.google.comと入力すると、まったく別の場所へ誘導されることになります。
これは人気サイトにとって深刻な脅威です。仮にGmail.comへのリクエストが攻撃者によって、本物そっくりに見せかけた偽サイトへリダイレクトされれば、「ホエーリング(whaling)」などのフィッシング攻撃の被害に遭う恐れがあります。
DNSフラッシュ(キャッシュクリア)とは?やり方を解説
キャッシュポイズニングやインターネット接続のトラブルを調査する際、管理者はDNSキャッシュを「フラッシュ」(消去・リセット)したいことがあります。
DNSキャッシュをクリアすると、すべてのエントリーが削除されるため、無効なレコードも同時に消去されます。そして次に該当ウェブサイトへアクセスしようとしたとき、コンピューターはネットワーク設定で指定されたDNSサーバーから新しいアドレスを取得し、キャッシュを作り直します。
先ほどの例で言えば、Gmail.comのレコードが汚染されて奇妙なサイトへ飛ばされている状況でも、DNSフラッシュを実行することが、本来のGmail.comを取り戻すための有効な第一歩となります。
Microsoft Windowsでは、コマンドプロンプトで ipconfig /flushdns コマンドを実行すると、ローカルDNSキャッシュをフラッシュできます。「Windows IP 構成により、DNS リゾルバー キャッシュは正常にフラッシュされました」または「Successfully flushed the DNS Resolver Cache」というメッセージが表示されれば成功です。
macOSユーザーはターミナルから dscacheutil -flushcache を実行します。ただしこのコマンドには「成功」を知らせるメッセージが表示されないため、実行の成否は確認できません。環境によっては、DNSレスポンダーを再起動する(sudo killall -HUP mDNSResponder)必要もあります。Linuxユーザーは /etc/rc.d/init.d/nscd restart コマンドを入力しましょう。ただし、正確なコマンドはお使いのLinuxディストリビューションによって異なる点に注意してください。
また、ルーターにもDNSキャッシュが存在します。これが、ルーターの再起動がトラブルシューティングの定番ステップとされている理由です。パソコンのDNSキャッシュをフラッシュするのと同じ理屈で、ルーターを再起動すれば、一時メモリーに保存されたDNSエントリーをクリアできます。
-
LastPassの設定と使い方徹底解説:Webサイトのパスワードを安全に管理する方法
Webサイトでパスワードの作成を求められた回数は、もう数えきれないほどあるのではないでしょうか。では、正直に考えてみてください。それらのパスワードの中で、同じものを使い回していませんか?多くの人は、大量の強力なパスワードをすべて記憶するのが大変なため、同じパスワードを使い回しがちです。しかし実は、「マスターパスワード」と呼ばれるたった一つのパスワードだけを覚えておけば、すべてのサイトに強力なパスワードを設定して管理できる方法があります。それを実現するのが、パスワード管理ツール「LastPass」です。この記事では、パソコンにLastPassをセットアップする方法を、初心者にもわかりやすく解説し
-
DNSエラーの原因と直し方!インターネット接続の復旧方法を徹底解説
ウェブサイトにアクセスしようとしたとき、ブラウザに「DNSルックアップエラー」など、DNSに関するエラーメッセージが表示されたことはありませんか?Skypeなどのアプリやオンラインゲームは問題なく使えるのに、ウェブサイトだけが読み込めない——しかも、一部のサイトだけでエラーが出ることもあり、非常に厄介です。この記事では、「DNSエラー」とは何なのか、なぜ発生するのか、そして具体的な解決方法まで詳しく解説します。 DNSとは何か? 「DNS」は「Domain Name System(ドメインネームシステム)」の略で、通常は「DNSサーバー」とセットで語られます。ウェブサイトが表示される仕組みを知