Azure CLIを使ってDNSゾーンファイルをインポート・エクスポートします

この記事では、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 のファイルをインポートするために。

  1. リソース グループがない場合は作成します。

    az group create --resource-group myresourcegroup -l westeurope
    
  2. ファイル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"
      }
    ]
    

    コマンドプロンプトWindowsnslookupコマンドで「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

次のステップ