AzureにはAWS Route 53に相当するDNSサービスとして「Azure DNS」があります。目的は同じでも、コンソール上の名称や設定の流れはAWSとAzureで異なり、Route 53の操作に慣れているほど「AzureのどのメニューがRoute 53のどの機能に対応するのか」で戸惑うことがあります。
この記事では、AWSのRoute 53とAzure DNSを機能ごとに比較したうえで、azコマンドを使ってDNSゾーンを作成し、AレコードとCNAMEレコードを追加する実践手順を解説します。
・AWS Route 53とAzure DNSのコンポーネントの対応関係と重要な違い
・azコマンドでDNSゾーンを作成してレコードを追加する実践手順
・digコマンドで名前解決が正しく動作しているか確認する方法
・DNS設定が反映されない時の切り分けポイント
動作確認環境:Azure CLI 2.61 / RHEL 9.4(Azure VM上で検証)
この記事のポイント
・az network dns zone create でRoute 53のホストゾーンに相当するDNSゾーンを作成できる
・ゾーン作成後にAzureが払い出す4つのネームサーバーをレジストラに設定する
・AzureはエイリアスレコードをRoute 53ほど柔軟に使えず対応リソースが限定的
・プライベートDNS解決にはAzure Private DNS Zone(別サービス)を使う
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
Azure DNSとAWS Route 53の機能を比較する
まずコンポーネント対応関係を整理します。Route 53の「ホストゾーン」はAzure DNSでは「DNSゾーン」と呼ばれ、同じ概念です。どちらもドメイン名(example.com)に対するDNSレコードをまとめて管理する単位です。
| AWS Route 53 | Azure DNS | 備考 |
|---|---|---|
| ホストゾーン | DNSゾーン | 同じ概念。パブリックとプライベートの2種類 |
| レコードセット | レコードセット | TTL・タイプ・値の構成は同一 |
| エイリアスレコード | エイリアスレコードセット | Azureは対応リソースが限定的(後述) |
| プライベートホストゾーン | Azure Private DNS Zone | VNet内の名前解決専用。別サービスとして管理 |
| ヘルスチェック+フェイルオーバー | Azure Traffic Manager | DNS-baseの負荷分散・障害切り替え |
Route 53はゾーンApex(example.com自体)にもエイリアスレコードを設定できるため、CloudFrontやELBなどのAWSリソースに直接CNAMEと同等の設定が可能です。これはDNSの仕様上、ゾーンApexにCNAMEを設定できないという制限を回避する仕組みです。
Azure DNSにも「エイリアスレコードセット」があり、Azure Load Balancer・Traffic Manager・Azure Front Doorに対しては同様の設定ができます。ただしRoute 53と比べて対応リソースの種類が限られるため、他のリソースへはCNAMEレコードで対応します。
価格体系の比較
・Route 53:1ホストゾーンあたり月0.50 USD(最初の25ゾーン)+ クエリ100万件あたり0.40 USD
・Azure DNS:1ゾーンあたり月0.50 USD(最初の25ゾーン)+ クエリ100万件あたり0.40 USD
価格水準はほぼ同等です。どちらも少量利用であれば1か月数十円程度に収まります。
Azure DNSゾーンの構築手順|azコマンドで実践
1. DNSゾーンを作成する
まずリソースグループとDNSゾーンを作成します。「example.com」はお使いのドメイン名に置き換えてください。# リソースグループの作成 az group create --name rg-dns-prod --location japaneast # パブリックDNSゾーンの作成 az network dns zone create --resource-group rg-dns-prod --name example.com # 作成後にAzureが払い出すネームサーバーを確認 az network dns zone show --resource-group rg-dns-prod --name example.com --query nameServers --output tsv
ns1-05.azure-dns.com. ns2-05.azure-dns.net. ns3-05.azure-dns.org. ns4-05.azure-dns.info.
Azure DNSのネームサーバーはRoute 53(awsdns-xx.com等)と異なり、`azure-dns.com / .net / .org / .info`の4つの異なるドメインが1ゾーンに割り当てられます。これは単一のTLDへのDDoS攻撃でサービス全体が影響を受けないよう設計されているためです。
2. AレコードとCNAMEレコードを追加する
WebサーバーのAレコードとメール用のCNAMEレコードを追加します。# Aレコードの追加(Webサーバー向け) az network dns record-set a add-record --resource-group rg-dns-prod --zone-name example.com --record-set-name www --ipv4-address 203.0.113.10 --ttl 3600 # CNAMEレコードの追加(メールサーバー向け) az network dns record-set cname set-record --resource-group rg-dns-prod --zone-name example.com --record-set-name mail --cname mailserver.example.net --ttl 3600 # TXTレコードの追加(SPFレコード等) az network dns record-set txt add-record --resource-group rg-dns-prod --zone-name example.com --record-set-name @ --value "v=spf1 include:sendgrid.net ~all" # 追加したレコードを一覧確認 az network dns record-set list --resource-group rg-dns-prod --zone-name example.com --output table
Name ResourceGroup Ttl Type ProvisioningState ------ --------------- ----- ------ ------------------- @ rg-dns-prod 3600 NS Succeeded @ rg-dns-prod 3600 SOA Succeeded @ rg-dns-prod 3600 TXT Succeeded mail rg-dns-prod 3600 CNAME Succeeded www rg-dns-prod 3600 A Succeeded
既存のレコードを削除したい場合は次のコマンドを使います。
# Aレコードの削除(レコードセットごと削除) az network dns record-set a delete --resource-group rg-dns-prod --zone-name example.com --name www --yes
AzureのDNS設計やネットワーク設計を体系的に習得したい方は、現役エンジニアによる実践ハンズオン講座をご確認ください。
Azureハンズオン講座の詳細はこちら
動作確認|digコマンドでDNS名前解決をテストする
レコードを追加したら、Linux VM上でdigコマンドを使って名前解決が正しく動作しているか確認します。NSレコードの変更が伝播する前に確認したい場合は、AzureのネームサーバーIPを直接指定します。# AzureのDNSサーバーに直接問い合わせ(NSレコード伝播前の確認) dig www.example.com @ns1-05.azure-dns.com # CNAMEレコードの確認 dig mail.example.com @ns1-05.azure-dns.com # TXTレコードの確認 dig TXT example.com @ns1-05.azure-dns.com
;; ANSWER SECTION: www.example.com. 3600 IN A 203.0.113.10
digコマンドの使い方やDNSレコードタイプの詳細な調査方法については「digコマンドでDNS問い合わせを行う方法」も参照してください。Linuxでの一般的なDNS設定については「Linux DNS設定の基本」も合わせて参考にしてください。
トラブルシュート|DNS設定が反映されない時の確認ポイント
1. ネームサーバーの設定をレジストラ側で確認する
最も多いケースが「ドメインレジストラのNSレコードにAzure DNSのネームサーバーを登録し忘れている」です。# whoisでNSレコードを確認 whois example.com | grep -i "name server" # または dig の NS クエリで確認 dig NS example.com
2. TTLが長い場合はキャッシュを考慮する
TTLを3600(1時間)に設定している場合、レコードを変更しても既存のDNSキャッシュが残っている間は古い値が返り続けます。緊急の変更時には、変更前にTTLを短く(例:300秒)に変更しておくと伝播が早くなります。# TTLを短縮してから変更に備える(緊急時の事前準備) az network dns record-set a update --resource-group rg-dns-prod --zone-name example.com --name www --set ttl=300
3. ゾーンのプロビジョニング状態を確認する
# DNSゾーンの状態確認 az network dns zone show --resource-group rg-dns-prod --name example.com --query '{name:name, state:provisioningState, recordSets:numberOfRecordSets}' --output table
本記事のまとめ
Azure DNSはAWS Route 53と同等のパブリックDNS管理サービスです。コンポーネントの概念はほぼ同じで、価格水準も同程度ですが、エイリアスレコードの対応リソース範囲など設計時に注意が必要な違いがあります。| やりたいこと | コマンド |
|---|---|
| DNSゾーンを作成する | az network dns zone create --resource-group RG名 --name example.com |
| ゾーンのネームサーバーを確認する | az network dns zone show --query nameServers --output tsv |
| AレコードをIPアドレスで追加する | az network dns record-set a add-record --record-set-name www --ipv4-address IPアドレス |
| CNAMEレコードを追加する | az network dns record-set cname set-record --record-set-name mail --cname CNAME先 |
| TXTレコードを追加する | az network dns record-set txt add-record --record-set-name @ --value "テキスト" |
| レコード一覧を確認する | az network dns record-set list --zone-name example.com --output table |
| Azure DNSに直接問い合わせてテストする | dig www.example.com @ns1-xx.azure-dns.com |
AzureのDNS設計・ネットワーク設計を体系的に習得したい方は、現役エンジニアによるハンズオン講座で手を動かしながら学べます。
Azure対応セミナーの詳細を見る >>
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:AzureのLinux VMに静的IPを割り当てる方法|プライベートIP固定とパブリックIPのSKU選択をazコマンドで実践
- この記事の属するカテゴリ:Azureへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます