この記事では、Azure CLIを使ってAzure DNSでDNSゾーンファイルのインポートとエクスポート方法を学びます。 Azureポータルを使ってゾーンファイルのインポートやエクスポートも可能です。
DNSゾーン移行の導入
DNSゾーンファイルは、ゾーン内のすべてのドメインネームシステム(DNS)レコードに関する情報を含むテキストファイルです。 標準的なフォーマットに従っており、DNSシステム間でのDNSレコード転送に適しています。 ゾーン ファイルの使用は、DNS ゾーンを Azure DNS にインポートするための高速で便利な方法です。 また、Azure DNSからゾーンファイルをエクスポートして他のDNSシステムで使うこともできます。
Azure DNS では、Azure CLI および Azure portal を使用したゾーン ファイルのインポートとエクスポートをサポートしています。
Azure CLIは、Azureサービスの管理に使われるクロスプラットフォームのコマンドラインツールです。 Windows、Mac、Linux向けにAzureダウンロードページから入手可能です。
既存のDNSゾーンファイルを取得してください
DNSゾーンファイルをAzure DNSにインポートする前に、ゾーンファイルのコピーを取得する必要があります。 このファイルのソースはDNSゾーンがどこにホストされているかによって異なります。
- もしあなたのDNSゾーンがパートナーサービスによってホストされている場合、そのサービスはDNSゾーンファイルをダウンロードできる方法を持っているはずです。 パートナーサービスにはドメインレジストラ、専用のDNSホスティングプロバイダー、または代替のクラウドプロバイダーが含まれます。
- DNSゾーンがWindows DNS上でホストされている場合、ゾーンファイルのデフォルトフォルダは %systemroot%\system32\dnsです。 各ゾーンファイルへの全パスは、DNSコンソールの General タブにも表示されます。
- DNSゾーンがBINDでホストされている場合、各ゾーンのゾーンファイルの場所はBINDの設定ファイル named.confで指定されます。
Important
インポートするゾーンファイルに他のプライベートゾーンの名前を指すCNAMEエントリが含まれている場合、Azure DNSのCNAME解決は、他のゾーンもインポートするか、CNAMEエントリが変更されていない限り失敗します。
Azure DNSにDNS zone ファイルをインポートしてください
ゾーンファイルをインポートすると、そのゾーンがまだ存在していない場合、Azure DNSに新しいゾーンが作成されます。 ゾーンが存在する場合、ゾーン内のレコードセットは既存のレコードセットと統合されます。
マージ動作
- デフォルトでは、新しいレコードセットは既存のレコードセットと統合されます。 統合されたレコードセット内の同一レコードは重複しません。
- レコードセットが統合される際は、既存のレコードセットの生存時間(TTL)が使用されます。
- 権限開始(SOA)パラメータは、
hostを除き、常にインポートされたゾーンファイルから取得されます。 ゾーン頂点のネームサーバーレコードセットも、インポートされたゾーンファイルから取得したTTLを常に使用します。 - インポートされたCNAMEレコードは、同じ名前の既存のCNAMEレコードを置き換えます。
- CNAMEレコードと同じ名前の異なるタイプのレコードと競合が発生した場合、既存のレコードが使用されます。
輸入に関する追加情報
以下の注記は、ゾーン輸入プロセスに関するより技術的詳細を示しています。
-
$TTL指令は任意であり、サポートされています。$TTL指示が出ていない場合、明示的なTTLがないレコードはデフォルトのTTL3600秒に設定されてインポートされます。 同じレコードセット内の2つのレコードが異なるTTLを指定する場合、低い値が使われます。 -
$ORIGIN指令は任意であり、サポートされています。$ORIGINが設定されていない場合、デフォルト値はコマンドラインで指定されたゾーン名(終わりのドットを含む)です。 -
$INCLUDEや$GENERATEの指令は支持されていません。 - これらのレコードタイプは、A、AAAA、CAA、CNAME、MX、NS、SOA、SRV、TXTに対応しています。
- SOAレコードはゾーン作成時にAzure DNSによって自動的に作成されます。 ゾーンファイルをインポートすると、
hostパラメータを除くすべてのSOAパラメータがゾーンファイルから取り出されます。 このパラメータはAzure DNSが提供する値を使用します。なぜなら、Azure DNSが提供するプライマリネームサーバーを参照する必要があるからです。 - ゾーンの頂点に設定されたネームサーバーレコードも、ゾーン作成時にAzure DNSによって自動的に作成されます。 このレコードセットのTTLのみがインポートされます。 これらのレコードにはAzure DNSが提供するネームサーバー名が含まれています。 レコードデータはインポートされたゾーンファイルに含まれる値によって上書きされません。
- Azure DNSは複数の文字列を含むTXTレコードをサポートしており、それぞれ最大255文字の長さで、各TXTレコードセットで最大4,096文字まで対応できます。 ゾーンファイル内のマルチストリングTXTレコードは同じ文字列構造でインポートされない場合がありますので、インポート完了後にTXTレコードを確認してください。 詳細は TXT記録をご覧ください。
CLIの形式と値
Azure CLI コマンドの DNS ゾーンをインポートするコマンドの形式は以下の通りです:
az network dns zone import -g <resource group> -n <zone name> -f <zone file name>
値:
-
<resource group>はAzure DNSにおけるゾーンのリソースグループ名です。 -
<zone name>はこのゾーンの名前です。 -
<zone file name>はインポートするゾーンファイルのパス/名前です。
もしこの名前のゾーンがリソースグループにまだ存在していなければ、あなたのためにゾーンが作成されます。 既存のゾーンでは、インポートされたレコードセットが既存のレコードセットと統合されます。
ゾーンファイルをインポートする
ゾーン contoso.com のファイルをインポートするために。
リソース グループがない場合は作成します。
az group create --resource-group myresourcegroup -l westeuropeファイルcontoso.com.txtから新しいDNSゾーンにドメイン contoso.com インポートするには、コマンド
az network dns zone importを実行します。このコマンドはゾーンファイルを読み込み解析します。 このコマンドはAzure DNSサービスに対して一連の操作を実行し、ゾーンとそのすべてのレコードセットを作成します。 コマンドはコンソールウィンドウで進行状況とエラーや警告を報告します。 レコードセットは直列に作成されるため、大きなゾーンファイルのインポートに数分かかることがあります。
az network dns zone import -g myresourcegroup -n contoso.com -f contoso.com.txt
ゾーンを確認してください
ファイルをインポートした後、DNSゾーンを検証するために、以下のいずれかの方法を使用できます。
レコードをリストアップするには、以下のAzure CLIコマンドを使用します:
az network dns record-set list -g myresourcegroup -z contoso.comまた、Azure CLIコマンド
az network dns record-set ns listを使ってレコードをリストアップすることもできます。nslookupを使って記録の名前解決を確認してください。 ゾーンがまだ委任されていない場合は、正しいAzure DNSネームサーバーを明示的に指定する必要があります。 以下のサンプルは、ゾーンに割り当てられたネームサーバー名を取得する方法を示しています。az network dns record-set ns list -g myresourcegroup -z contoso.com --output json[ { ....... "name": "@", "nsRecords": [ { "additionalProperties": {}, "nsdname": "ns1-03.azure-dns.com." }, { "additionalProperties": {}, "nsdname": "ns2-03.azure-dns.net." }, { "additionalProperties": {}, "nsdname": "ns3-03.azure-dns.org." }, { "additionalProperties": {}, "nsdname": "ns4-03.azure-dns.info." } ], "resourceGroup": "myresourcegroup", "ttl": 86400, "type": "Microsoft.Network/dnszones/NS" } ]コマンドプロンプトWindows
nslookupコマンドで「www」レコードをクエリしてください。nslookup www.contoso.com ns1-03.azure-dns.com Server: ns1-01.azure-dns.com Address: 40.90.4.1 Name:www.contoso.com Addresses: 134.170.185.46 134.170.188.221
更新DNS委任
ゾーンが正しくインポートされたことを確認したら、DNS委任をAzure DNSネームサーバーに更新する必要があります。 詳細については、「 DNS委任の更新」をご覧ください。
Azure DNSからDNS zone ファイルをエクスポートしてください
DNSゾーンをエクスポートするには、以下のAzure CLIコマンドを使用します:
az network dns zone export -g <resource group> -n <zone name> -f <zone file name>
値:
-
<resource group>はAzure DNSにおけるゾーンのリソースグループ名です。 -
<zone name>はこのゾーンの名前です。 -
<zone file name>はエクスポートするゾーンファイルのパス/名前です。
ゾーンインポートと同様に、まずサインインし、サブスクリプションを選択し、Azure CLIをResource Managerモードに設定する必要があります。
ゾーンファイルをエクスポートするには
リソースグループ内の既存のAzure DNSゾーン contoso.com をファイルcontoso.com.txt (現在のフォルダ内の)にエクスポートするには、azure network dns zone exportを実行します。 このコマンドはAzure DNSサービスを呼び出し、ゾーン内のレコードセットを列挙し、その結果をBIND互換ゾーンファイルにエクスポートします。
az network dns zone export -g myresourcegroup -n contoso.com -f contoso.com.txt
次のステップ
- DNS ゾーンでレコード セットとレコードを管理する方法についてはこちらをご覧ください。
- ドメインをAzure DNSに委任する方法を学びましょう。