プライベート DNS レコードの概要
この記事では、Azure プライベート DNS ゾーンでの DNS レコードのサポートに関する情報を提供します。 プライベート DNS ゾーンの概要については:「Azure プライベート DNS ゾーンとは?」を参照してください
DNS レコード
レコード名
レコードは、相対名を使用して指定されます。 "完全修飾" ドメイン名 (FQDN) にはゾーン名が含まれますが、"相対" 名には含まれません。 たとえば、contoso.com
ゾーン内の相対レコード名 www
によって、完全修飾レコード名 www.contoso.com
が示されます。
DNS ゾーンのルート ("頂点") にある DNS レコードを apex (頂点) レコードと言います。 たとえば、DNS ゾーン contoso.com
であれば、apex レコードの完全修飾名も contoso.com
です (これを "ネイキッド" ドメインと呼ぶことがあります)。 慣例により、apex レコードを表すには相対名として \'\@\' を使用します。
レコードの種類
各 DNS レコードには名前と種類があります。 レコードは、含まれるデータによってさまざまな種類に分けられます。 最も一般的な種類は "A" レコードで、名前が IPv4 アドレスにマップされます。 また、"MX" レコードもよく使用される種類で、名前がメール サーバーにマップされます。
Azure プライベート DNS では、A、AAAA、CNAME、MX、PTR、SOA、SRV、TXT の一般的な DNS レコードの種類がサポートされています。
Note
SOA レコードの [ホスト] フィールドは編集できません。
レコード セット
場合によっては、特定の名前と種類の DNS レコードを複数作成する必要があることもあります。 たとえば、"www.contoso.com" という Web サイトが 2 つの異なる IP アドレスでホストされているとします。 この Web サイトには、IP アドレスごとに異なる A レコードが、合計 2 つ必要になります。 次に、レコード セットの例を示します。
www.contoso.com. 3600 IN A 10.10.1.5
www.contoso.com. 3600 IN A 10.10.1.10
Azure DNS は、"レコード セット" を使用してすべての DNS レコードを管理します。 レコード セット ("リソース" レコード セットとも呼ばれます) とは、1 つのゾーン内にある同じ名前、同じ種類の DNS レコードのコレクションです。 ほとんどのレコード セットには、1 つのレコードが含まれています。 ただし、ここに示す例のように複数のレコードが含まれているレコード セットも珍しくはありません。
たとえば、ゾーン 'contoso.com' に A レコード 'www' が既に作成されており、IP アドレス '10.10.1.5' (前に示した最初のレコード) を指しているとします。 2 つ目のレコードを作成する際は、追加のレコード セットを作成するのではなく、そのレコードを既存のレコード セットに追加します。
SOA レコードと CNAME レコードは例外です。 DNS 標準では、これらのレコードの種類で同じ名前を持つ複数のレコードを作成することが許可されていません。そのため、これらのレコード セットにはレコードを 1 つしか含めることができません。
Time-To-Live
Time-to-Live (TTL) は、各レコードが照会されるまでクライアントによってキャッシュされる期間を指定します。 前の例では、TTL は 3600 秒または 1 時間です。
Azure DNS では、TTL は各レコードではなくレコード セットに対して指定されるため、そのレコード セット内のすべてのレコードに同じ値が使用されます。 TTL には 1 秒から 2,147,483,647 秒までの間の値を指定できます。
ワイルドカード レコード
Azure DNS は、ワイルドカード レコードをサポートしています。 ワイルドカード レコードは、非ワイルドカード レコード セットとの近い一致がない限り、一致する名前を持つ任意のクエリに応答して返されます。 Azure DNS では、NS と SOA を除くすべてのレコードの種類でワイルドカード レコード セットをサポートします。
ワイルドカード レコード セットを作成するには、レコード セット名に * を使用します。 *.foo のように、名前の左端に * を付けることもできます。
CNAME レコード
CNAME レコード セットは、同じ名前を持つ他のレコード セットとは共存できません。 たとえば、相対名 www
を持つ CNAME レコード セットと相対名 www
を持つ A レコードを同時に作成することはできません。
ゾーンの頂点 (名前 = '@') には、ゾーンの作成時に常に NS レコード セットと SOA レコード セットが含まれているため、ゾーンの頂点に CNAME レコード セットを作成することはできません。
これらの制約は、DNS 標準から生じるものであり、Azure DNS の制限事項ではありません。
SOA レコード
SOA レコード セットは自動的に各ゾーンの zone apex (名前は “@”) に作成され、そのゾーンを削除すると自動的に削除されます。 SOA レコードを個別に作成または削除することはできません。
host
プロパティを除き、SOA レコードのすべてのプロパティを変更できます。 このプロパティは、Azure DNS によって指定されるプライマリ ネーム サーバー名を参照するよう事前構成されています。
ゾーン内のレコードに変更が加えられても、SOA レコード内にあるゾーンのシリアル番号が自動的に更新されることはありません。 必要に応じて、これは SOA レコードを編集することによって、手動で更新できます。
SRV レコード
SRV レコードは、さまざまなサービスでサーバーの場所を指定するために使用されます。 Azure DNS で SRV レコードを指定する際は、次の点に注意してください。
- "サービス" と "プロトコル" は、レコード セット名の一部として、先頭に '_sip._tcp.name' のようなアンダースコアを付けて指定する必要があります。 ゾーンの頂点にあるレコードの場合は、レコード名に '@' を指定する必要はありません。'_sip._tcp' のように、サービスとプロトコルを使用するだけです。
- "優先度"、"重み"、"ポート"、および "ターゲット" は、レコード セット内の各レコードのパラメーターとして指定されます。
TXT レコード
TXT レコードは、ドメイン名を任意のテキスト文字列にマップするために使用されます。 これらは複数のアプリケーションで使用されます。
DNS 標準では、1 つの TXT レコードに複数の文字列を含めることができます。各文字列の長さは最大 255 文字です。 複数の文字列が使われている場合は、クライアントごとに文字列の連結が行われて、1 つの文字列として処理されます。
Azure DNS の REST API を呼び出す場合は、各 TXT 文字列を別々に指定する必要があります。 Azure portal、PowerShell または CLI のインターフェイスを使用する場合は、レコードごとに文字列を 1 つ指定する必要があります。 この文字列は、必要に応じて 255 文字のセグメントに自動分割されます。
DNS レコード内の複数の文字列と TXT レコード セット内の複数の TXT レコードを混同しないでください。 TXT レコード セットには、複数のレコードを含めることができ、"レコードごとに" 複数の文字列を含めることができます。 Azure DNS は、TXT レコード セット (結合されたすべてのレコード全体) ごとに最長 4,096 文字 *
の文字列をサポートします。
現在、*
4,096 文字のサポートは、Azure Public Cloud でのみ利用できます。 各国のクラウドは、4k サポートのロールアウトが完了するまでは、1,024 文字に制限されます。
タグとメタデータ
Tags
タグは名前と値のペアのリストで、Azure Resource Manager でリソースのラベル付けに使用されます。 Azure Resource Manager ではこのタグを使用して、Azure の課金内容に関するフィルター ビューを表示したり、特定のタグにポリシーを設定したりできます。 タグの詳細については、 タグを使用した Azure リソースの整理を参照してください。
Azure DNS では、DNS ゾーン リソースに対して Azure Resource Manager のタグを使用できます。 DNS レコード セットのタグはサポートされませんが、その代わりとして、DNS レコード セットでは、後述するメタデータがサポートされます。
Metadata
レコード セットのタグの代わりに、Azure DNS では "メタデータ" を使用してレコード セットに注釈を付けることができます。 メタデータを使用すると、タグと同じように、各レコード セットに名前と値のペアを関連付けることができます。 この機能は、各レコード セットの用途を記録しておきたい場合などに便利です。 タグと異なる点として、メタデータは、Azure の課金内容に関するフィルター ビューを提供するためには使うことができず、Azure Resource Manager のポリシーで指定することもできません。
Etag
たとえば、2 人のユーザーまたは 2 つのプロセスが同時に DNS レコードを変更しようとするとします。 どちらの変更が優先されるでしょうか。 また、優先された側は、他のユーザーまたはプロセスによって行われた変更を上書きしたことに気付くのでしょうか。
Azure DNS は、Etag を使用して同じリソースへの同時変更を安全に処理します。 Etag と Azure Resource Manager の 'タグ' は独立しています。 各 DNS リソース (ゾーンまたはレコード セット) には、関連付けられている Etag があります。 リソースが取得されるときは、常に Etag も取得されます。 リソースを更新する場合は、Azure DNS がサーバー上の Etag の一致を確認できるように Etag を返すこともできます。 リソースを更新するたびに Etag が再生成されるため、Etag の不一致は同時変更が発生していることを示します。 Etag は、既存のリソースがないことを確認するために、新しいリソースの作成時にも使用できます。
Azure DNS PowerShell は、既定で、ゾーンおよびレコード セットへの同時変更のブロックに Etag を使用します。 オプションの -Overwrite スイッチを使用すると、Etag チェックを実行しないように設定できます。この場合、発生したすべての同時変更が上書きされます。
Azure DNS REST API のレベルでは、HTTP ヘッダーを使用して Etag を指定します。 次の表に各ヘッダーの動作を示します。
ヘッダー | 動作 |
---|---|
なし | PUT は常に成功します (Etag チェックなし)。 |
If-match <etag> | PUT は、リソースが存在し、Etag が一致する場合にのみ成功します |
If-match * | PUT はリソースが存在する場合にのみ成功します |
If-none-match * | PUT はリソースが存在しない場合にのみ成功します |
制限
Azure プライベート DNS を使用する場合は、次の既定の制限が適用されます:
プライベート DNS ゾーン
リソース | 制限 |
---|---|
サブスクリプションあたりのプライベート DNS ゾーン数 | 1000 |
プライベート DNS ゾーンあたりのレコード セット数 | 25000 |
プライベート DNS ゾーン用のレコード セットあたりのレコード数 | 20 |
プライベート DNS ゾーンあたりの仮想ネットワーク リンク数 | 1000 |
自動登録が有効なプライベート DNS ゾーンあたりの仮想ネットワーク リンク数 | 100 |
自動登録が有効な状態で仮想ネットワークがリンクできるプライベート DNS ゾーンの数 | 1 |
仮想ネットワークがリンクできるプライベート DNS ゾーンの数 | 1000 |