Azure DNS と名前解決
Azure DNS は、Microsoft Azure インフラストラクチャを使用してドメイン名をホストするサービスです。ここでは、Azure DNS の主要な概念とレコードタイプについて解説します。
Azure DNS Zone (DNS ゾーン)
DNS ゾーンは、特定のドメイン (例: example.com) の DNS レコードをホストするために使用されます。
主な特徴
- グローバルネットワーク: Microsoft のグローバルなエニーキャストネットワークを使用して、高速なクエリ応答を提供します。
- 管理の統合: Azure Portal、PowerShell、CLI などを使用して、他の Azure リソースと同様に管理できます。
- プライベート DNS ゾーン: 仮想ネットワーク内でのみ名前解決が可能なゾーンを作成できます (例:
internal.corp)。
DNS レコードタイプ
Azure DNS では、標準的な DNS レコードタイプをサポートしています。
A レコード (Address Record)
ドメイン名またはサブドメイン名を 32 ビットの IPv4 アドレスにマッピングします。
- 例:
www.example.com->203.0.113.10 - 用途: Web サーバーや VM の IP アドレスへの直接マッピング。
CNAME レコード (Canonical Name Record)
あるドメイン名を別のドメイン名 (エイリアス) にマッピングします。
- 例:
blog.example.com->example.com - 用途: 特定のサービス (Azure App Service や CDN など) のホスト名にカスタムドメインをマッピングする場合によく使用されます。
- 注意: ゾーンのルート (Apex ドメイン) には CNAME レコードを作成できません (代わりにエイリアスレコードセットを使用します)。
TXT レコード (Text Record)
ドメインに関連するテキスト情報を格納します。
- 用途:
- ドメイン所有権の確認: Microsoft 365 や Google Workspace などのサービス設定時。
- SPF (Sender Policy Framework): メールのなりすまし防止。
FQDN (Fully Qualified Domain Name)
FQDN (完全修飾ドメイン名) は、ホスト名とドメイン名を含む、インターネット上の特定のコンピュータやサービスを一意に識別する完全な名前です。
- 構成:
[ホスト名].[ドメイン名].[TLD] - 例:
server1.westus.cloudapp.azure.com- ホスト名:
server1 - ドメイン名:
westus.cloudapp - TLD (トップレベルドメイン):
azure.com(この場合はサブドメイン構造ですが、概念として)
- ホスト名:
Azure リソース (VM や Public IP など) には、多くの場合、Azure が管理する FQDN を割り当てることができます。また、Azure DNS を使用して独自のカスタム FQDN を管理することも可能です。
実践例: AKS と Static Public IP へのアクセスフロー
Kubernetes (AKS) 上の Nginx Ingress Controller に Static Public IP を割り当て、Azure DNS で A レコードとして登録した場合の、ユーザーからのアクセスフローを解説します。
構成概要
- Static Public IP: Azure で静的なパブリック IP アドレスを作成し、AKS の LoadBalancer サービス (Nginx Ingress) に割り当てます。
- Azure DNS: ドメイン (例:
example.com) の A レコードとして、上記の Public IP を登録します。 - Nginx Ingress: ドメイン名 (Host ヘッダー) に基づいて、適切なバックエンド Pod にトラフィックをルーティングします。
アクセスフロー図
詳細ステップ
-
名前解決 (DNS Query):
- ユーザーがブラウザに
example.comを入力します。 - クライアントは DNS リゾルバにクエリを送信し、最終的に Azure DNS (権威サーバー) に到達します。
- Azure DNS は、登録されている A レコードの IP アドレス (
20.x.x.x) を返します。
- ユーザーがブラウザに
-
HTTP リクエスト (Request Routing):
- ブラウザは取得した IP アドレス (
20.x.x.x) に対して HTTP リクエストを送信します。この時、Host ヘッダーにはexample.comが設定されます。 - Azure Load Balancer: リクエストはまず Azure Load Balancer のフロントエンド IP (Static Public IP) に到達します。ロードバランサーは、NAT ルールに基づいてバックエンドの AKS ノードへトラフィックを転送します。
- Nginx Ingress Controller: ノード上で動作する Nginx Ingress がリクエストを受け取ります。Nginx は Host ヘッダー (
example.com) とパスを確認し、Ingress リソースで定義されたルールに従って適切な Service (Pod) を決定します。 - Application Pod: 最終的にアプリケーションの Pod がリクエストを処理し、レスポンスを返します。
- ブラウザは取得した IP アドレス (