AzureのDNSゾーンとAWS Route 53を比較する|パブリックDNS管理とazコマンドによるAレコード・CNAMEの実践設定

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Azure > AzureのDNSゾーンとAWS Route 53を比較する|パブリックDNS管理とazコマンドによるAレコード・CNAMEの実践設定
「AWSではRoute 53でDNSゾーンを管理してきたが、AzureにもDNSサービスがあるはずなのにどこで設定するか分からない」——この疑問を持つエンジニアは少なくありません。

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(別サービス)を使う


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

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との最大の違い:エイリアスレコードの対応範囲

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.

払い出された4つのネームサーバーをドメインレジストラ(お名前.comやGoogle Domainsなど)のNSレコードに登録します。Route 53と同様に、NSレコードの変更伝播には最大48時間かかることがあります。

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

`@`はゾーン自体(example.com)を指します。NSとSOAレコードはゾーン作成時に自動追加されます。

既存のレコードを削除したい場合は次のコマンドを使います。

# Aレコードの削除(レコードセットごと削除) az network dns record-set a delete --resource-group rg-dns-prod --zone-name example.com --name www --yes

Route 53ではAWSコンソール上でRecordを個別に削除しますが、Azure DNSではレコードセット単位での操作が基本です。

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

「ANSWER SECTION」に設定したIPアドレスが返ってきていれば成功です。

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

表示されたネームサーバーがAzure DNSのもの(azure-dns.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

`provisioningState`が`Succeeded`でない場合はゾーン自体の作成に問題があります。再作成を検討してください。

本記事のまとめ

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
Route 53の操作経験があればAzure DNSは短時間で習得できます。特に「ゾーン作成後すぐにレジストラのNSレコードを更新する」作業の手順がAWSと異なるため、最初の設定時に確認しながら進めることをお勧めします。

AzureのDNS設計・ネットワーク設計を体系的に習得したい方は、現役エンジニアによるハンズオン講座で手を動かしながら学べます。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、20年以上の運用経験を持つ現役エンジニアが基礎から教えます。
Azure対応セミナーの詳細を見る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。