CDNとDNSの連携による快適なインターネット体験の仕組み
目次[非表示]
- 1.はじめに
- 2.用語の整理
- 2.1.用語の一覧
- 3.DNS名前解決の流れ
- 3.1.簡易的な全体像で大雑把な流れを理解する
- 3.2.キャッシュDNSと権威DNSの詳細な流れ
- 3.3.DNS名前解決のまとめ
- 4.CDNを導入した際のDNS名前解決の流れ
- 5.さいごに
- 6.参考リンク
- 7.お悩みご相談ください
はじめに
こんにちは。株式会社divxでWebエンジニアをしている加藤です。
今回はWebエンジニアが、ネットワークの案件に携わって、今まで曖昧なままだった知識が整理できましたので、共有できればと思います。
本記事のターゲットは、以下となります。
- Webサイトにアクセスする時、どのようにアクセスされるか知らない方
- DNS名前解決の際、具体的にどのような通信が行われているか知らない方
- CDNを導入した際、DNS名前解決にどのような変化があるか知らない方
用語の整理
本記事で使用される用語には、さまざまな記事で異なる名称が使われているものもありますが、いずれも同じものを指しています。
そこで、用語を整理し、理解しやすい土台を作成したいと考えています。
なお、用語の整理はまとめて記載しているため、記事の後半で出てくる用語や、知っておくと理解が深まる用語も含まれています。
用語の一覧
◾権威DNSサーバー
権威DNSサーバーは、DNS権威サーバー、権威ネームサーバー、DNSコンテンツサーバーとも呼ばれます。
◾キャッシュDNSサーバー
キャッシュDNSサーバーは、DNSキャッシュサーバー、ISP(インターネットサービスプロバイダー)や個人が運用するキャッシュDNSサーバーとも呼ばれます。ISP=ソフトバンク光、Nuro光など
◾ローカルDNSサーバー
特定のネットワーク内(例えば社内)で動作し、外部のDNSサーバーに問い合わせることなく、内部のドメイン名を解決するためのDNSサーバーを指します。
◾CDN(コンテンツデリバリーネットワーク)
複数拠点に分散配置されたサーバーネットワークを利用して、よりユーザーに近い場所からコンテンツを迅速に配信するシステムです。
CDNは、エッジサーバーやキャッシュサーバーとも呼ばれます。
◾オリジンサーバー
オリジナルのコンテンツが存在するWebサーバーのことです。
◾レコード
domainname.jpのIPアドレスは?ドメイン名とIPアドレスのデータの1つ1つのデータのことです。
Aレコードは、ドメイン名に対応するIPv4アドレスを表します。
CNAMEレコードは、ドメイン名の別名を表します。
TTL(Time to Live)は、キャッシュが何秒間有効であるかを表します。
◾ゾーンファイル
レコードデータの集合体のことです。
DNS名前解決の流れ
DNSサーバー単体の場合の流れを理解します。
コンピューターがWebサイトへアクセスする際には、ドメイン名が使用されますが、コンピューターはドメインを直接認識することができません。
その代わりに、IPアドレスと呼ばれる数字が用いられます。
しかし、私たち人間は数字だけではどのサイトに接続されるのか把握できないため、表示上はドメインが使用され、コンピューターがアクセスする際にはこのドメインがIPアドレスにチェンジされます。
DNSサーバーは、ドメイン名とIPアドレスの紐づけを行っています。
簡易的な全体像で大雑把な流れを理解する
例:www.apple.comにアクセスした場合(キャッシュDNSにキャッシュがある場合)
- ブラウザがキャッシュDNSにwww.apple.comに対応するIPアドレスが保存されているか確認します。
- キャッシュDNSからwww.apple.comに対応するIPアドレスを受け取ったブラウザは、そのIPアドレスを使用して目的のwww.apple.comへアクセスします。
例:www.apple.comにアクセスした場合(キャッシュDNSにキャッシュがない場合)
- ブラウザがキャッシュDNSにwww.apple.comに対応するIPアドレスの保存状況を確認します。
- キャッシュがない場合、キャッシュDNSが権威DNSへ問い合わせを行います。
- 権威DNSはwww.apple.comに対応するIPアドレスを探し出し、それをキャッシュDNSに返答します。
- キャッシュDNSは、権威DNSから受け取ったwww.apple.comに対応するIPアドレスをキャッシュし、ブラウザに返答します。
- キャッシュDNSからwww.apple.comに対応するIPアドレスを受け取ったブラウザは、そのIPアドレスを使用して目的のwww.apple.comへアクセスします。
以上が、ブラウザでwww.apple.comにアクセスした際のDNSによる名前解決の流れです。
キャッシュDNSと権威DNSの詳細な流れ
全体像を把握したら、キャッシュDNSと権威DNSの詳細なやり取りを理解しましょう。
以下の流れは、キャッシュDNSサーバーにキャッシュがない場合の説明です。
②の内容
キャッシュDNSが持つトップレベルドメイン(TLD)のDNSサーバーのIPアドレスを把握するため、ルートDNSサーバーに問い合わせを行います。
③の内容
ルートDNSサーバーは、ドメイン名の「.jp」の部分を確認し、「JPのDNSサーバーのIPアドレスを知らせるので、そちらに問い合わせてください」と返答します。
④の内容
指示に従い、JPのDNSサーバーに問い合わせを行います。
⑤の内容
「JP」のDNSサーバーは、「ns1.webhosting.jpのDNSサーバーのIPアドレスを教えるので、そこに問い合わせてください」と返答します。
⑥の内容
「ns1.webhosting.jp」のDNSサーバーに対して、問い合わせを行います。
⑦の内容
「domainname.jpのWebサーバーのIPアドレスは『59.106.153.11』です」という返答を受け取ります。
以上が、キャッシュDNSと権威DNSの詳細な流れです。
DNS名前解決のまとめ
DNS(特に権威DNS)は、よく電話帳に例えられます。これは、FQDN(完全修飾ドメイン名)に対応するIPアドレスを知っており、まるで辞書のような役割を果たしているからです。
以下に、DNS名前解決の詳細な流れを身近な例で説明します。ここでは、キャッシュDNSサーバーにキャッシュがない場合を考えます。
DNS名前解決の流れを身近な例で表すと…
- お使いのPC(MacBook)のブラウザ(Chrome)でアップル公式サイト(www.apple.com)へアクセスを試みた際、ブラウザはブラウザ内のキャッシュと契約しているISP(光回線プロバイダー、例: Nuro光)が保有するキャッシュDNSに問い合わせを行い、アップルの公式サイトへの問い合わせ履歴があるかを確認します。
- キャッシュDNSに履歴がない場合、キャッシュDNSは権威DNSへ問い合わせを行います。
このとき、アップル公式サイトのIPアドレスを権威DNSが見つけ、キャッシュDNSへ返答します。- 具体的な流れとして、権威DNSはルートDNS(お使いのPCに信頼されたDNS)への問い合わせを行い、繰り返し問い合わせを試みた結果、最終的にアップル公式サイトのIPアドレスを知っている権威DNS(ドメインを購入した際に選んだ登録業者、例えばお名前.comのDNSなど)にたどり着きます。
- 具体的な流れとして、権威DNSはルートDNS(お使いのPCに信頼されたDNS)への問い合わせを行い、繰り返し問い合わせを試みた結果、最終的にアップル公式サイトのIPアドレスを知っている権威DNS(ドメインを購入した際に選んだ登録業者、例えばお名前.comのDNSなど)にたどり着きます。
- キャッシュDNSは、権威DNSから取得したアップル公式サイトのIPアドレスをキャッシュに保存し、ブラウザに返答します。
- ブラウザはキャッシュDNSから得たアップル公式サイトのIPアドレスをもとに、コンテンツ(アップル公式のホームページ)が配信されているサーバーへアクセスし、表示を行います。
以上が、DNSにおける名前解決の流れです。
CDNを導入した際のDNS名前解決の流れ
基本的にはDNS名前解決の流れと同じですが、異なる点は、権威DNSが返すIPアドレスがオリジンサーバーのIPアドレスではなく、CDN(コンテンツデリバリーネットワーク)のIPアドレスになることです。
そのため、キャッシュDNSは権威DNSから受け取ったIPアドレスをブラウザに返答し、ブラウザはそのIPアドレスを使用してアクセスを行うと、CDNに接続されます。
以下で詳しく説明します。
digコマンドで実際に、どのようなアクセスがされているかを確認
digコマンドは、権威DNSサーバーに対して問い合わせを行い、その応答結果を表示するためのコマンドです。以下に、実際のコマンド入力とその結果を示します。
※ dig www.jal.co.jp で結果が表示されない場合は、以下のコマンドを試すことをおすすめします。
以上が、CDNが導入されている権威DNSサーバーに対して問い合わせを行った結果です。
CDNを導入した際のDNS名前解決のまとめ
digコマンドで表示された結果を元に、CDNとDNSを組み合わせた流れは以下の通りです。
- キャッシュDNSへの問い合わせ
ブラウザがユーザーの要求に応じて www.jal.co.jp にアクセスしようとする際、まずブラウザ内のキャッシュを確認します。それから、ISP(インターネットサービスプロバイダー)のキャッシュDNSサーバーに対して www.jal.co.jp のドメイン名のIPアドレスを問い合わせます。このキャッシュに www.jal.co.jp の情報が存在しない場合、次のステップに進みます。
- 権威DNSからCNAMEの応答
ISPのキャッシュDNSは、DNSクエリを権威DNSに送信します。
- CNAMEレコードの返却
権威DNSサーバーは www.jal.co.jp を参照し、CNAMEレコード(www.jal.co.jp.edgekey.net)を返します。
- 次のCNAMEへの問い合わせ
キャッシュDNSは、次のCNAMEである www.jal.co.jp.edgekey.net のIPアドレスを調べるために、再度権威DNSサーバーに問い合わせます。
- 権威DNSからのAレコードの応答
権威DNSサーバーは、www.jal.co.jp.edgekey.net に対するAレコード(e17033.a.akamaiedge.net)を返します。キャッシュDNSはこの情報を受け取りますが、まだ直接 www.jal.co.jp.edgekey.net のIPアドレスを取得していないため、さらに次の問い合わせを行います。
- Aレコードの問い合わせ
キャッシュDNSは再度権威DNSに www.jal.co.jp.edgekey.net のAレコードのIPアドレスを問い合わせます。
- 最終的なIPアドレス取得
権威DNSサーバーは e17033.a.akamaiedge.net へのAレコード(IPアドレス: 104.71.168.77)を返します。
- キャッシュDNSへの返答
キャッシュDNSは、取得したIPアドレスをキャッシュした後、ブラウザに返します。
- ブラウザによる接続
ブラウザは、キャッシュDNSから受け取ったIPアドレス (104.71.168.77) を使用して、目的のサーバーにHTTPリクエストを送信します。
- サーバーからのレスポンス
最終的に、指定されたIPアドレスのサーバーがリクエストを処理し、必要なWebページの情報をブラウザに返します。
以上が、CDNを導入した際のDNS名前解決の流れです。
補足
104.71.168.77はCDNのIPアドレスです。オリジンサーバーのIPアドレスは通常直接公開されず、セキュリティや負荷分散の観点からCDNの背後に隠されることが一般的です。
さいごに
ネットワークの基本であるDNS名前解決の流れと、CDN(コンテンツデリバリーネットワーク)を導入した際の名前解決の変化について詳しく説明しました。主なポイントは以下の通りです。
DNSの役割と流れ DNSはドメイン名をIPアドレスに変換する役割を果たし、キャッシュDNSサーバーと権威DNSサーバーとの通信を経て、最終的なIPアドレスを取得します。
CDN導入時のDNS名前解決の流れ DNSの役割はCDNを使用する際にも変わりませんが、DNSによって返されるIPアドレスがオリジンサーバーではなくCDNのIPアドレスを取得します。
今回の内容が、CDNとDNSの理解を深め、エンジニアとしての実務に役立つことを願っています。ネットワークの基礎に関する知識を深めることで、より効率的で安全なWebサイト運営が実現できるでしょう。
参考リンク
DNSとは~名前解決の仕組み
https://domainname.jp/report/dns
DNSとは? 名前解決の仕組みを理解しよう
https://pfs.nifcloud.com/navi/beginner/dns.htm