Azure プライベート DNS のプライベート DNS ゾーンファイルをインポートおよびエクスポートする
この記事では、Azure CLI を使用し、Azure DNS の DNS ゾーン ファイルをインポートまたはエクスポートする方法について段階的に説明します。
DNS ゾーンの移行に関する概要
DNS ゾーン ファイルは、ゾーン内のすべてのドメイン ネーム システム (DNS) レコードに関する詳細が含まれるテキスト ファイルです。 このファイルは標準の形式に従っているため、DNS システム間で DNS レコードを転送するのに適しています。 ゾーン ファイルを使用すれば、Azure DNS との間で DNS ゾーンを迅速に、確実に、かつ簡単に転送することができます。
Azure プライベート DNS では、Azure CLI を使用したゾーン ファイルのインポートとエクスポートをサポートしています。 Azure PowerShell または Azure portal を使用したゾーン ファイルのインポートは、現時点ではサポートされていません。
Azure CLI は、Azure サービスを管理するためのクロスプラットフォーム コマンド ライン ツールです。 Azure CLI は Windows、Mac、Linux のプラットフォームに対応しており、Azure ダウンロード ページから入手できます。 このクロスプラットフォームのサポートは、ゾーン ファイルのインポートおよびエクスポートで重要となります。それは最も一般的なネーム サーバー ソフトウェアである BIND が、通常、Linux 上で実行されるからです。
既存の DNS ゾーン ファイルの取得
Azure DNS に DNS ゾーン ファイルをインポートするには、事前にゾーン ファイルのコピーを取得しておく必要があります。 このファイルのソースは、DNS ゾーンが現在ホストされている場所によって異なります。
- DNS ゾーンがパートナーのサービス (ドメイン レジストラー、専用の DNS ホスティング プロバイダー、代替クラウド プロバイダーなど) でホストされている場合、そのサービスには、DNS ゾーン ファイルをダウンロードする機能があるはずです。
- DNS ゾーンが Windows DNS にホストされている場合、ゾーン ファイルは既定のフォルダー %systemroot%\system32\dns にあります。 各ゾーン ファイルへの完全なパスは、DNS コンソールの [全般] タブにも表示されます。
- DNS ゾーンが BIND を使用してホストされている場合、各ゾーンのゾーン ファイルの場所は、 named.confという名前の BIND 構成ファイルに指定されています。
Azure プライベート DNS に DNS ゾーン ファイルをインポートする
ゾーン ファイルのインポートを実行すると、Azure プライベート DNS にゾーンが存在しない場合、新しいゾーンが作成されます。 ゾーンが既に存在する場合は、ゾーン ファイル内のレコード セットを既存のレコード セットにマージする必要があります。
マージ動作
- 既定では、既存のレコード セットと新規のレコード セットがマージされます。 マージされたレコード セット内の一致するレコードは重複除去されます。
- レコード セットをマージした場合、既存のレコード セットの TTL (Time to Live) が使用されます。
- SOA (Start of Authority) パラメーター (
host
を除く) は常に、インポートされたゾーン ファイルから取得されます。 同様に、ゾーンの頂点にあるネーム サーバー レコード セットの場合も、TTL は常に、インポートされたゾーン ファイルから取得されます。 - インポートされた CNAME レコードが同じ名前を持つ既存の CNAME レコードに取って代わることはありません。
- CNAME レコードと、名前は同じでも形式が異なる別のレコードとの間で競合が生じた場合 (どちらが既存のレコードでどちらが新規のレコードかに関係なく)、既存のレコードが保持されます。
インポートに関する追加情報
次に、ゾーンのインポート プロセスに関するその他の技術的詳細を説明します。
$TTL
ディレクティブは省略可能であり、サポートされています。$TTL
ディレクティブを指定しなかった場合、明示的な TTL を持たないレコードは、既定の TTL である 3600 秒が設定されてインポートされます。 同じレコード セット内の 2 つのレコードで別々の TTL を指定した場合は、小さい方の値が使用されます。$ORIGIN
ディレクティブは省略可能であり、サポートされています。$ORIGIN
を設定しないと、コマンドラインで指定したゾーン名 (に加えて接尾辞 ".") が既定値として使用されます。$INCLUDE
と$GENERATE
ディレクティブはサポートされていません。- A、AAAA、CAA、CNAME、MX、NS、SOA、SRV、および TXT のレコード タイプはサポートされています。
- ゾーンの作成時には、Azure DNS によって SOA レコードが自動的に作成されます。 ゾーン ファイルのインポート時には、
host
パラメーターを "除き"、すべての SOA パラメーターがゾーン ファイルから取得されます。 このパラメーターは Azure DNS から提供された値を使用します。 ‘host’ パラメーターは、Azure DNS で指定されたプライマリ ネーム サーバーを参照する必要があるからです。 - ゾーンの作成時には、ゾーンの頂点のネーム サーバー レコード セットも Azure DNS によって自動的に作成されます。 このレコード セットの TTL のみがインポートされます。 これらのレコードには、Azure DNS によって提供されたネーム サーバー名が格納されています。 レコード データは、インポートされたゾーン ファイルに含まれる値によって上書きされることはありません。
- Azure DNS では単一行文字列の TXT レコードしかサポートしません。 複数行文字列の TXT レコードは連結され、255 文字に切り捨てられます。
CLI 形式と値
DNS ゾーンをインポートする Azure CLI コマンドの形式は次のとおりです。
az network private-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 のゾーン contoso.com を、リソース グループ myresourcegroup 内の新しい DNS ゾーンにインポートするには、コマンド
az network private-dns zone import
を実行します。
このコマンドは、ゾーン ファイルを読み込み、解析します。 このコマンドは、Azure DNS サービスに対して一連のコマンドを実行することで、ゾーンとゾーン内のすべてのレコード セットを作成します。 このコマンドでは、コンソール ウィンドウに進捗状況をレポートします。発生している場合、エラーまたは警告もレポートします。 レコード セットは順番に作成されるので、大規模なゾーン ファイルをインポートするのに数分かかる場合があります。az network private-dns zone import -g myresourcegroup -n contoso.com -f contoso.com.txt
ゾーンを確認する
次のいずれかの方法で、ファイルをインポートした後に DNS ゾーンを確認できます。
次の Azure CLI コマンドを使用してレコードを一覧表示できます。
az network private-dns record-set list -g myresourcegroup -z contoso.com
nslookup
を使用し、レコードの名前解決を確認できます。 ゾーンはまだ委任されていないので、適切な Azure DNS ネーム サーバーを明示的に指定する必要があります。 次の例では、ゾーンに割り当てられているネーム サーバー名を取得する方法を示します。nslookup
を使用して "www" レコードを照会する方法も示します。
Azure DNS からの DNS ゾーン ファイルのエクスポート
DNS ゾーンをエクスポートする Azure CLI コマンドの形式は次のとおりです。
az network private-dns zone export -g <resource group> -n <zone name> -f <zone file name>
値:
<resource group>
: Azure DNS のゾーンのリソース グループの名前です。<zone name>
: ゾーンの名前です。<zone file name>
: エクスポートするゾーン ファイルのパス/名前です。
ゾーンのインポートと同様に、まずサインインし、サブスクリプションを選択して、Resource Manager モードを使用するように Azure CLI を構成します。
ゾーン ファイルをエクスポートするには
リソース グループ myresourcegroup 内の既存の Azure DNS ゾーン contoso.com をファイル contoso.com.txt (現在のフォルダーにある) にエクスポートするには、azure network private-dns zone export
を実行します。 このコマンドでは、Azure DNS サービスを呼び出すことで、ゾーン内のレコード セットを列挙し、その結果を BIND と互換性のあるゾーン ファイルにエクスポートします。
az network private-dns zone export -g myresourcegroup -n contoso.com -f contoso.com.txt
次のステップ
- DNS ゾーンでレコード セットとレコードを管理する方法についてはこちらをご覧ください。