このトピックでは、名前解決の仕組みと DNS の設定方法を理解できるよう、Alibaba Cloud DNS の基本概念を紹介します。
DNS システムの概要
DNS (Domain Name System:ドメインネームシステム) は、インターネットの基盤インフラであり、企業イントラネットにとっても不可欠なサービスです。人が読みやすいドメイン名を、機械がルーティングできる IP アドレスに変換します。この変換プロセスを「名前解決」と呼びます。
DNS は、ドメイン名を IP アドレスに対応付ける分散データベースです。ユーザーは数値の IP アドレスを覚えなくてもネットワークリソースにアクセスできます。DNS プロトコルは、ポート 53 を使用して UDP 上で動作します。
DNS の 2 つの分類軸
DNS は、次の 2 つの軸で分類できます:
分類軸 | 種類 | 説明 |
ネットワーク環境別 | パブリック DNS | インターネットユーザー向けに、パブリックドメイン名をパブリック IP アドレスに解決します。 |
内部 DNS | 企業の内部ネットワーク向けに、内部ドメイン名を内部 IP アドレスに解決します。 | |
解決チェーンにおける機能役割別 | 権威 DNS | 特定のゾーン内でドメイン名と IP アドレスの対応関係を保持します。名前解決における最終的な正となる情報源です。 |
再帰 DNS | クライアントに代わって DNS クエリプロセス全体を完了し、結果を返します。 |
ドメイン階層
ドメイン名は、階層的なツリー構造で命名されます。インターネットに接続される各ホストまたはルーターには、一意の階層名があります。ドメイン名は、ドット (ピリオド) で区切られた複数のラベルで構成されています。
例
.comは トップレベルドメイン です。aliyun.comは セカンドレベルドメイン です (登録ドメインまたはエイペックスドメインとも呼ばれます)。example.aliyun.comとwww.aliyun.comは サブドメイン です。サードレベルドメインとも呼ばれます。test.example.aliyun.comは サブドメインのサブドメイン です。フォースレベルドメインとも呼ばれます。
DNS サーバー階層
DNS の名前解決プロセスには、次の 4 階層の DNS サーバーが関与します:
サーバーの種類 | 機能 |
ルートネームサーバー | 正式名称は Root Name Server で、Root Server と略されます。ローカル DNS サーバーがローカルで解決結果を見つけられない場合、最初にルートネームサーバーへクエリを送信し、TLD ネームサーバーの IP アドレスを取得します。 |
TLD ネームサーバー | 配下に登録されているドメイン名を管理します。たとえば |
権威ネームサーバー (NS) | 特定のゾーン内で一意であり、そのゾーン内のドメイン名と IP アドレスの対応関係を保持します。たとえば、Alibaba Cloud DNS の パブリックゾーン サービスです。 |
ローカル DNS サーバー (ローカル DNS) | クライアントからの再帰リクエストに応答し、解決結果を取得するまで上位サーバーへ反復的にクエリを送信します。例としては、ユーザーのマシンに自動的に割り当てられる DNS サーバー、ISP から割り当てられる DNS サーバー、Google DNS や 223.5.5.5 などのパブリック DNS サービスがあります。 |
ドメイン階層の各レベルには専用のネームサーバーがあり、最上位にルートネームサーバーがあります。各階層のネームサーバーは下位レベルのネームサーバーの IP アドレスを保持しているため、段階的にクエリできます。
DNS の名前解決メカニズム
DNS の名前解決プロセス
ユーザーがドメイン example.com を使用して Web サイトにアクセスする場合の名前解決プロセスは次のとおりです:
ユーザーがブラウザに
example.comを入力すると、ブラウザはローカル DNS サーバーにクエリを送信します。ローカル DNS サーバーにキャッシュされた解決データがある場合は、example.comに対応する IP アドレスをブラウザに直接返し、手順 9 に進みます。キャッシュデータが見つからない場合は、手順 2 に進みます。ローカル DNS サーバーがルートネームサーバーにクエリを送信します。
ルートネームサーバーが
.comの TLD ネームサーバーのアドレスをローカル DNS サーバーに返します。ローカル DNS サーバーが
example.comのクエリを.comの TLD ネームサーバーに送信します。.comの TLD ネームサーバーがexample.comの権威ネームサーバーのアドレスをローカル DNS サーバーに返します。ローカル DNS サーバーが権威ネームサーバーにクエリを送信します。
権威ネームサーバーが
example.comに対応する IP アドレスをローカル DNS サーバーに返します。ローカル DNS サーバーが IP アドレスをブラウザに返します。
ブラウザが IP アドレスを使用して Web サイトサーバーにアクセスします。
Web サイトサーバーが Web ページコンテンツを返します。
再帰クエリ
再帰クエリとは、再帰 DNS サーバーがクライアントに代わってクエリプロセス全体を完了することを指します。各ステップは再帰サーバーが処理し、最終結果をクライアントに直接返します。例:
クライアントがローカル DNS (再帰 DNS サーバー) にリクエストを送信し、
www.example.comの IP アドレスを問い合わせます。再帰サーバーに回答のキャッシュがない場合、ルートネームサーバー、TLD ネームサーバー、権威ネームサーバーの順にクエリし、最終的な回答を得るまで各ステップを進めます。
クライアントは、再帰サーバーが最終的な解決結果を返すのを待つだけで済みます。
特徴
クライアントは 1 回のクエリを送信し、1 回の応答を待ちます。
再帰サーバーはクエリプロセス全体を完了する必要があるため、負荷が比較的高くなります。
これは、クライアントとローカル DNS サーバーの間で最も一般的に使用される方式です。
一般的な用途
一般ユーザー、PC、ブラウザ:再帰クエリのみを使用し、反復クエリは処理しません。
ローカル DNS サーバー (ブロードバンド事業者の DNS、8.8.8.8 などのパブリック DNS、企業イントラネット DNS など):通常は再帰的な名前解決の役割を担い、上位サーバー (ルート、TLD、権威 DNS) に対して反復クエリを開始します。
パブリック DNS サーバー:エンドユーザーに対しては再帰的に動作し、上位 DNS サーバーに対しては反復的に動作します。
反復クエリ
反復クエリとは、DNS サーバーが、問い合わせ元のサーバーに対して自身が持つ最適な参照情報を返すことを指します。サーバー自身が回答を持たない場合は、次に問い合わせる先を示し、問い合わせ元のサーバーが処理を継続します。例:
ローカル DNS サーバーが、
www.example.comの IP アドレスをルートネームサーバーに問い合わせます。ルートネームサーバーは IP アドレスを直接返さず、参照情報として「TLD ネームサーバーに問い合わせてください」と応答します。ルートネームサーバーは反復的な名前解決を実行しています。次に、ローカル DNS サーバーが TLD ネームサーバーに問い合わせると、TLD ネームサーバーは参照情報として「この権威ネームサーバーに問い合わせてください」と応答します。TLD ネームサーバーは反復的な名前解決を実行しています。
これを段階的に繰り返し、権威サーバーが見つかるまで進め、最終結果がローカル DNS サーバーに返されます。
特徴
問い合わせ元のサーバーは、解決チェーンの各ステップでクエリを送信します。
各サーバーは完全なクエリを完了するのではなく参照情報を返すだけのため、負荷は比較的低くなります。
一般的な用途
ルートネームサーバー、TLD ネームサーバー、権威ネームサーバー。
企業、学校、その他組織が構築した DNS サーバー。
パブリック DNS サーバー:エンドユーザーに対しては再帰的に動作し、上位 DNS サーバーに対しては反復的に動作します。
DNS レコード
DNS レコードは、ドメイン名がどのように解決されるかを定義します。Alibaba Cloud DNS にドメインを追加したら、DNS レコードを設定して、ドメインの参照先 (IPv4 アドレス、IPv6 アドレス、別のドメイン名、メールサーバーのアドレスなど) を指定する必要があります。ドメインにアクセスされると、DNS システムはこれらのレコードに基づいてターゲットアドレスを返し、ドメイン名を指定された宛先に対応付けます。
DNS キャッシュ
DNS キャッシュは、リクエストを行ったクライアントの近くに解決データを保存します。DNS データは、クエリ階層のどのレベルでもキャッシュできます。キャッシュにより再帰クエリの回数が減り、クエリの待ち時間も短縮されるため、ユーザーはより迅速に結果を取得できます。
TTL
TTL (Time to Live) は、解決結果をどれくらいの期間キャッシュできるかをローカル DNS リゾルバーに通知します。TTL の有効期限が切れると、リゾルバーはキャッシュからレコードを削除します。有効期限後にユーザーが同じドメイン名を再度リクエストした場合、リゾルバーは新しいクエリを実行する必要があります。
IPv4/IPv6 デュアルスタック
IPv4/IPv6 デュアルスタック (デュアルスタック) を使用すると、システムは IPv4 と IPv6 の両方のプロトコルスタックを同時に使用できます。2 つのプロトコルスタックは並行して動作します。
DNS セキュリティ
DNS クエリフラッド攻撃
DNS クエリフラッド攻撃は、攻撃者が複数の侵害されたマシンを使用して、標的の DNS サーバーに対し大量のドメイン名クエリを送信するサービス拒否 (DoS) 攻撃の一種です。1 秒あたりのクエリ数がサーバーの処理能力を超えると、正当な名前解決リクエストがタイムアウトし、サービス可用性に影響する可能性があります。
DNSSEC
DNSSEC (Domain Name System Security Extensions) は、デジタル署名を使用して DNS 応答の真正性と完全性を確保します。DNSSEC は、DNS スプーフィングやキャッシュポイズニングなどの攻撃を効果的に防止し、ユーザーが悪意のあるサイトへリダイレクトされることを防ぐとともに、インターネットに対する信頼性を高めます。
EDNS Client Subnet
EDNS (Extension Mechanisms for DNS) Client Subnet は Google が提案した DNS 拡張プロトコルであり、再帰 DNS リゾルバーがクライアントの IP アドレス情報を権威 DNS サーバーに渡せるようにします。
URL 転送
URL 転送 (URL リダイレクトとも呼ばれます) は、特別なサーバー設定を使用して、あるドメイン名へのリクエストを別の既存 Web サイトにリダイレクトする手法です。
HTTPDNS モバイル名前解決の概念
アプリケーション端末
ネットワークアクセスに使用される端末デバイスおよびアプリケーションサービスを指します。これには、モバイル端末、IoT デバイス、モバイルアプリケーションなどが含まれますが、これらに限定されません。
DNS over HTTPS (DoH)
DNS リクエストトラフィックを暗号化します。Alibaba Cloud Public DNS は、RFC 8484 で規定されている TLS で暗号化された HTTP 接続を通じて名前解決を提供します。
DNS over TLS (DoT)
DNS リクエストトラフィックを暗号化します。Alibaba Cloud Public DNS は、RFC 7858 で規定されている TLS で暗号化された TCP 接続を通じて名前解決を提供します。