DNS とは何ですか? | DNS の仕組み

DNSとは、ユーザーがIPアドレスではなく、ドメイン名を使用して、Webサイトに接続できるようにするものです。 DNSの仕組みを学習します。

Share facebook icon linkedin icon twitter icon email icon

DNS

学習目的

この記事を読み終えると、以下のことができます。

  • DNSの定義
  • DNSの仕組みを理解する
  • 再帰DNSルックアップと対話型DNSルックアップの違い
  • 再帰DNSリゾルバーと権威ネームサーバーの区別
  • DNSキャッシングの仕組みを学習します

DNS とは何ですか?

ドメインネームシステム(DNS)は、インターネットの電話帳です。人間は、nytimes.comやespn.comなどのドメイン名を通じてオンラインで情報にアクセスします。 Webブラウザは、インターネットプロトコル(IP)アドレスを介して対話します。 DNSは、ブラウザがインターネットリソースを読み込みできるように、ドメイン名を IPアドレスに変換します。

インターネットに接続された各デバイスは一意のIPアドレスを持ち、他のマシンがそのデバイスを見つけるためにこれを使用します。DNSサーバーにより、人間が192.168.1.1(IPv4の場合)などのIPアドレス、または2400:cb00:2048:1::c629:d7a2(IPv6の場合)などのより複雑な英数字のIPアドレスを記憶する必要がなくなります。

DNS

DNSの仕組みは?

DNS解決のプロセスには、ホスト名(www.example.comなど)をコンピューターに優しいIPアドレス(192.168.1.1など)に変換することが含まれます。IPアドレスはインターネット上の各デバイスに与えられ、そのアドレスは適切なインターネットデバイスを見つけるために必要です。特定の家を見つけるために番地が使用されるのと同様です。ユーザーがWebページを読み込む場合、ユーザーがWebブラウザに入力したもの(example.com)を、example.com のWebページを見つけるために必要な機械に優しいアドレスに変換する必要があります。

DNS解決の背後にあるプロセスを理解するには、DNSクエリが渡す必要があるさまざまなハードウェアコンポーネントについて学習することが重要です。Webブラウザの場合、DNSルックアップは「舞台裏」で行われ、最初の要求以外はユーザーのコンピューターからの対話を必要としません。

ウェブ・ページの読み込みには4つのDNSサーバーが関与しています:

  • DNSリカーサー -リカーサーは、図書館のどこかから特定の本を探してくるように求められる司書に例えることができます。DNSリカーサーは、Webブラウザなどのアプリケーションを介してクライアントマシンからクエリを受信するように設計されたサーバーです。一般に、リカーサーはクライアントのDNSクエリを満たすために追加の要求を行う責任があります。
  • ルートネームサーバー - ルートサーバーは、人間が読めるホスト名をIPアドレスに変換(解決)するための最初のステップです。図書館の目録のようなもので、いろいろな本棚を示すと考えることができます。通常、他のより具体的な場所への参照として機能します。
  • TLDネームサーバー -最上位のドメインサーバー(TLD)は、図書館の特定の本棚と考えることができます。このネームサーバーは、特定のIPアドレスの検索における次のステップであり、ホスト名の最後の部分をホストします(example.comでは、TLDサーバーは「com」です)。
  • 権威ネームサーバー -この最終ネームサーバーは、本棚にある辞書に例えることができ、特定の名前をその定義に翻訳できます。権威ネームサーバーは、ネームサーバークエリの最後の停止点です。権威ネームサーバーが要求されたレコードにアクセスできる場合、要求されたホスト名のIPアドレスを、最初の要求を行ったDNSリカーサー(図書館司書)に返します。

権威DNSサーバーと再帰DNSリゾルバ―の違いとは?

両方の概念は、DNSインフラストラクチャに不可欠なサーバー(サーバーのグループ)を指しますが、それぞれが異なる役割を実行し、DNSクエリのパイプライン内の異なる場所に存在します。違いを考える1つの方法は、再帰リゾルバーはDNSクエリの先頭にあり、権威ネームサーバーは最後にあることです。

再帰DNSリゾルバー

再帰リゾルバーは、クライアントからの再帰要求に応答し、DNSレコードを追跡するために時間をかけるコンピューターです。これは、要求されたレコードの権威DNSネームサーバーに到達するまで(または、レコードが見つからない場合はタイムアウトするかエラーを返すまで)一連の要求を行うことによって行われます。幸いなことに、再帰DNSリゾルバーは、クライアントへの応答に必要なレコードを追跡するために、複数のリクエストを行う必要はありません。キャッシュは、DNSルックアップの早い段階で要求されたリソースレコードを提供することにより、必要な要求に近道するのに役立つデータ保持プロセスです。

DNS query diagram

権威DNSサーバー

簡単に言えば、権威DNSサーバーは、DNSリソースレコードを実際に保持し、その責任を負うサーバーです。これは、問い合わせされたリソースレコードで応答するDNSルックアップチェーンの一番下にあるサーバーであり、最終的に、要求しているWebブラウザがWebサイトその他のWebリソースにアクセスするために必要なIPアドレスに到達するようにします。権威ネームサーバーは、特定のDNSレコードの信頼できる唯一の情報源であるため、別のソースを照会する必要なく、自身のデータからのクエリを満たすことができます。

DNS query diagram

foo.example.comや blog.cloudflare.comなどのサブドメインに対するクエリの場合、権威ネームサーバーの後にシーケンスに追加のネームサーバーが追加されることに注意してください。このネームサーバーはサブドメインのCNAMEレコードの保存を行います。

DNS query diagram

多くのDNSサービスとCloudflareが提供するDNSサービスには大きな違いがあります。Google DNS、OpenDNS、Comcastなどのプロバイダーなど、さまざまなDNS再帰リゾルバーはすべて、DNS再帰リゾルバーのデータセンターインストールを保持しています。これらのリゾルバーは、DNSに最適化されたコンピューターシステムの最適化されたクラスターを介した迅速かつ簡単なクエリを可能にしますが、Cloudflareがホストするネームサーバーとは根本的に異なります。

Cloudflareは、インターネットの機能に不可欠なインフラストラクチャレベルのネームサーバーを維持しています。1つの重要な例は、Cloudflareがホスティングを部分的に担当する f-rootサーバーネットワークです。Fルートは、1日に数十億のインターネット要求を処理するルートレベルのDNSネームサーバーインフラストラクチャコンポーネントの1つです。当社のAnycast Networkにより、当社は、サービスを中断することなく、大量のDNSトラフィックを処理することが可能です。

DNSルックアップの手順とは?

ほとんどの場合、DNSは適切なIPアドレスに変換されるドメイン名に関係しています。このプロセスがどのように機能するかを学習するには、DNSルックアップが、WebブラウザからDNSルックアッププロセスを通過し、再び戻ってくるパスをたどることが役立ちます。ステップを見てみましょう。

注:多くの場合、DNSルックアップ情報は、クエリを行っているコンピューター内でローカルにキャッシュされるか、DNSインフラストラクチャでリモートにキャッシュされます。通常、DNSルックアップには8つのステップがあります。DNS情報がキャッシュされると、DNSルックアッププロセスから手順がスキップされ、より迅速になります。以下の例は、何もキャッシュされていない場合の8つのステップすべてを概説しています。

DNSルックアップの8つのステップ

  1. ユーザーは「example.com」をWebブラウザに入力します。クエリはインターネットに送信され、DNS再帰リゾルバーがクエリを受け取ります。
  2. 次に、リゾルバーはDNSルートネームサーバー (.)へのクエリを行います。
  3. ルートサーバーは、ドメインの情報を保存するトップレベルドメイン(TLD)DNSサーバー(.comや.netなど)のアドレスでリゾルバーに応答します。 example.comを検索する場合、リクエストは.com TLDに向けられます。
  4. 次に、リゾルバーは.com TLDに要求を行います。
  5. 次にTLDサーバーが応答し、ドメインのネームサーバーのIPアドレス「example.com」を送信します。
  6. 最後に、再帰リゾルバーは、ドメインのネームサーバーへのクエリを送信します。
  7. その後、ネームサーバーからリゾルバーに応答し、「example.com」のIPアドレスが送信されます。
  8. 次に、DNSリゾルバーがWebブラウザに応答し、最初に要求されたドメインのIPアドレスを送信します。

  9. DNSルックアップの8ステップを完了し、example.comのIPアドレスを取得すると、ブラウザはWebページにリクエストを送信することができるようになります。

  10. ブラウザーはIPアドレスに対してHTTP要求を行います。
  11. このIPを持つサーバーは、ブラウザにレンダリングするWebページを送信します(ステップ10)。
DNS query diagram

DNSリゾルバーとは?

DNSリゾルバーは、DNSルックアップの最初の目的地であり、最初の要求を行ったクライアントの対応を担当します。リゾルバーは一連のクエリを開始し、最終的にURLが必要なIPアドレスに変換されます。

注:一般的な非キャッシュDNSルックアップには、再帰クエリと反復クエリの両方が含まれます。

再帰DNSクエリと再帰DNSリゾルバーを区別することが重要です。クエリは、クエリの解決を必要とするDNSリゾルバーに対して行われる要求を指します。DNS再帰リゾルバーは、再帰クエリを受け入れ、必要な要求を行うことで応答を処理するコンピューターです。

DNS query diagram

DNSクエリにはどのような種類があるのか?

一般的なDNSルックアップでは、3種類のクエリが発生します。これらのクエリを組み合わせて使用することにより、DNS解決のための最適化されたプロセスにより、移動距離が短縮されます。理想的な状況では、キャッシュされたレコードデータが利用でき、DNSネームサーバーが非再帰クエリを返すことができます。

3種類のDNSクエリ:

  1. 再帰クエリ -再帰クエリでは、DNSクライアントが、DNSサーバー(一般にDNS再帰リゾルバー)に対して、要求されたリソースレコードをクライアントに応答する、あるいはリゾルバーがレコードを見つけることができない場合にはエラーメッセージを応答することを要求します。

  2. 反復クエリ -この状況では、DNSクライアントはDNSサーバーが可能な限りで最善の回答を返すことを許可します。クエリを受けたDNSサーバーにクエリ名との一致がない場合、ドメイン名前空間の下位レベルに対して権限のあるDNSサーバーへの紹介を返します。DNSクライアントは、紹介アドレスにクエリを行います。このプロセスは、エラーまたはタイムアウトが発生するまでクエリの流れをたどって、追加のDNSサーバーへと続けていきます。

  3. 非再帰クエリ -一般に、DNSリゾルバークライアントがDNSサーバーにクエリを送信し、送信先がそのレコードの権威サーバーであった、あるいはレコードがキャッシュ内部にすでに存在した場合に生じます。通常、DNSサーバーは、追加の帯域幅の消費とアップストリームサーバーの負荷を防止するためにDNSレコードをキャッシュします。

DNSキャッシュとは? DNSキャッシュはどこで発生しますか?

キャッシュの目的は、データ要求のパフォーマンスと信頼性を向上させる場所にデータを一時的に保存することです。DNSキャッシュでは、要求元クライアントの近くにデータを保存することで、DNSクエリをより早く解決し、DNSルックアップチェーンのさらに下にある追加のクエリを回避できるため、読み込み時間が改善され、帯域幅/CPU消費が削減されます。DNSデータは、さまざまな場所にキャッシュできます。それぞれの場所には、Time to Live (TTL)によって決定される既定の期間、DNSレコードを保存します。

ブラウザDNSキャッシュ

最新のWebブラウザは、デフォルトでDNSレコードを一定時間キャッシュするように設計されています。ここでの目的は明らかです。DNSキャッシュがWebブラウザに近いほど、キャッシュをチェックしてIPアドレスに正しいリクエストを行うために必要な処理ステップが少なくなります。 DNSレコードの要求が行われると、要求されたレコードを最初にチェックする場所はブラウザのキャッシュになります。

Chromeでは、chrome://net-internals/#dnsから、DNSキャッシュのステータスを見ることができます。

オペレーティングシステム(OS)レベルのDNSキャッシュ

オペレーティングシステムレベルのDNSリゾルバーは、DNSクエリがマシンを離れる前の2番目で最後のローカルの目的地です。このクエリを処理するように設計されたオペレーティングシステム内のプロセスは、一般に「スタブリゾルバー」またはDNSクライアントと呼ばれます。スタブリゾルバは、アプリケーションからリクエストを取得すると、まず自身のキャッシュをチェックして、レコードがあるかどうかを確認します。もしない場合は、ローカルネットワークの外側で、インターネットサービスプロバイダー(ISP)内のDNS再帰リゾルバーにDNSクエリ(再帰フラグを設定)を送信します。

ISP内部の再帰リゾルバーが、DNSクエリを受け取ると、前のすべてのステップと同様に、ホストから要求されたIPアドレスへの翻訳がローカルのパーシスタンス層内部に既にあるかどうかをチェックします。

再帰リゾルバーにはキャッシュされたレコードのタイプに応じた追加機能もあります。

  1. リゾルバーに Aレコードがなく、権威ネームサーバーのNSレコードがある場合、DNSクエリのいくつかのステップを省略して、これらのネームサーバーに直接クエリします。このショートカットは、ルートおよび.comネームサーバー(example.comの検索)からのルックアップを防止して、DNSクエリの解決をより迅速に行うのに役立ちます。
  2. リゾルバーにNSレコードがない場合はルートサーバーを省略し、TLDサーバー(このケースでは.com)へのクエリを送信します。
  3. まれに、リゾルバーにTLDサーバーを指すレコードがない場合はルートサーバーにクエリが送信されます。このイベントは一般に、DNSキャッシュが削除された後に発生します。

Cloudflare DNSが他のDNSプロバイダと何が違うのかをご確認ください。