Azure DNSでカスタムドメイン設定!パブリックDNSゾーンの構築とレコード管理手順を徹底解説
生徒
「自分でお金を出して取得したドメインを、Azureで作ったWebサイトで使いたいのですが、どうすればいいですか?」
先生
「それにはAzure DNS(アジュール・ディーエヌエス)というサービスを使って、パブリックDNSゾーンを作成する必要があります。そこにカスタムドメインを登録して、情報の交通整理を行うレコード管理をすればOKですよ。」
生徒
「DNSとかレコードとか、難しそうな言葉がいっぱいですね。初心者でも設定できますか?」
先生
「大丈夫です!一つずつ手順を追っていけば、誰でもインターネット上に自分の住所を公開できます。さっそく、具体的な構築手順を見ていきましょう!」
1. Azure DNSとカスタムドメインの基本
Azure DNS(アジュール・ディーエヌエス)とは、Microsoftが提供するクラウド上の電話帳のようなサービスです。普段、私たちがインターネットでウェブサイトを見る際、example.comのような名前を入力しますが、コンピュータ同士は数字の羅列である「IPアドレス」で通信しています。この「名前」と「数字」を紐付ける仕組みがDNSです。
カスタムドメインとは、お名前.comやGoogle Domainsなどで独自に取得した自分専用のドメイン名のことです。Azure DNSの「パブリックDNSゾーン」を利用することで、世界中のユーザーがあなたのカスタムドメインを使って、Azure上のサーバーやサービスにアクセスできるようになります。この設定を行うことで、信頼性の高い、高速な名前解決が可能になります。
2. パブリックDNSゾーンの作成手順
まずは、Azureポータルで「パブリックDNSゾーン」という箱を作成します。これは、あなたのドメイン情報を管理するための専用の領域です。Azureポータルの検索窓で「DNS ゾーン」と入力し、作成ボタンを押しましょう。リソースグループを選択し、名前の欄には取得済みのドメイン名(例:sample-site.jp)を正確に入力します。
作成が完了すると、Azure側から「ネームサーバー(NS)」という4つのアドレスが割り振られます。このアドレスは、後でドメイン登録業者(レジストラ)の設定画面に貼り付ける必要があるため、メモしておきましょう。Azure DNSを使う最大のメリットは、世界中に分散されたサーバー網を利用しているため、サイトの表示速度が安定する点にあります。
3. ドメイン登録業者でのネームサーバー設定
AzureでDNSゾーンを作っただけでは、まだインターネットとはつながっていません。ドメインを購入したサイト(お名前.comやムームードメインなど)にログインし、ネームサーバーの設定をAzureのものに変更する必要があります。これを「権限の委譲(いじょう)」と呼びます。
この設定を間違えると、自分のサイトが表示されなくなるだけでなく、メールも届かなくなるため注意が必要です。反映には数時間から最大48時間ほどかかることがありますが、最近では数分で切り替わることも増えています。この作業を行うことで、「私のドメインの管理はAzureにお願いします!」という宣言が世界中のインターネットに伝わります。
4. Aレコードの登録とIPアドレスの紐付け
次に、具体的なレコード管理を行います。最も基本的なのが「Aレコード(エー・レコード)」です。これは、ドメイン名を特定のIPv4アドレスに紐付ける設定です。例えば、Azure上の仮想マシン(VM)に割り当てられたパブリックIPアドレスをここに登録します。
以下の表は、管理するレコード情報のイメージです。
id | record_type | host_name | value (IP Address) | TTL
---+-------------+-----------+--------------------+-------
1 | A | @ | 13.78.123.45 | 3600
2 | A | test | 13.78.123.99 | 3600
3 | CNAME | www | sample-site.jp | 3600
4 | MX | @ | mail.example.com | 3600
設定を反映させるためのサンプルとして、Azure CLI(コマンドラインインターフェース)を使ってレコードを追加する方法を確認してみましょう。初心者の方はポータル画面(マウス操作)で十分ですが、自動化したい場合はこのようなコマンドを使います。
az network dns record-set a add-record -g MyResourceGroup -z sample-site.jp -n www -a 13.78.123.45
Finished: { "fqdn": "www.sample-site.jp.", "id": "/subscriptions/...", "name": "www", "type": "Microsoft.Network/dnszones/A" }
5. CNAMEレコードとエイリアスの使い分け
「CNAME(シーネーム)レコード」は、ドメイン名に別名を付けるためのレコードです。例えば、www.sample-site.jpにアクセスしたときに、中身はsample-site.jpと同じ場所を見せたい場合などに使います。初心者の方がよく迷うポイントですが、CNAMEは「名前から名前」へ転送するものだと覚えましょう。
Azureでは「エイリアスレコード」という独自の便利な機能もあります。これはAzureのリソース(Azure App ServiceやCDNなど)と直接紐付けることができる仕組みで、リソースのIPアドレスが変わっても自動的に追従してくれます。手動でIPアドレスを書き換える手間が省けるため、Azureを利用しているなら積極的に活用したい機能です。
6. DNS設定が反映されたか確認する方法
設定が終わったら、正しく世界に公開されているか確認しましょう。パソコンの「コマンドプロンプト」や「ターミナル」を使って、nslookupというコマンドを実行します。これにより、指定したドメインがどのIPアドレスを指しているかを直接調べることができます。
実行結果に、先ほど設定したAzure上のIPアドレスが表示されれば成功です!もし表示されない場合は、ネームサーバーの打ち間違いや、反映待ちの時間が不足している可能性があります。慌てずに少し時間を置いてから再度試してみましょう。
nslookup www.sample-site.jp
Server: UnKnown, Address: 192.168.1.1, Non-authoritative answer: Name: www.sample-site.jp, Address: 13.78.123.45
7. Pythonを使ってDNSの疎通確認を自動化
たくさんのドメインを管理している場合、一つずつ手動で確認するのは大変です。簡単なプログラムを作って、レコードが正しく設定されているかチェックするツールを作ってみましょう。Python(パイソン)というプログラミング言語を使うと、数行のコードで確認が可能です。
このプログラムは、指定したドメインのAレコードを取得して画面に表示するシンプルなものです。プログラミングに触れたことがない方でも、なんとなく「ドメインから数字を取得しているんだな」という流れがわかるはずです。
import socket
def check_dns(domain_name):
try:
# ドメイン名からIPアドレスを取得する処理
ip_address = socket.gethostbyname(domain_name)
print(f"ドメイン: {domain_name} は正しく設定されています。")
print(f"IPアドレス: {ip_address}")
except socket.gaierror:
print("エラー: ドメインが見つかりません。設定を確認してください。")
# 実行
check_dns("www.sample-site.jp")
実行結果は以下のようになります。
ドメイン: www.sample-site.jp は正しく設定されています。
IPアドレス: 13.78.123.45
8. 運用上の注意点とセキュリティ対策
DNSの管理は非常に重要です。もし悪意のある第三者にDNSの設定を書き換えられてしまうと、自分のサイトに来たユーザーを偽のサイトへ誘導されてしまう「DNSハイジャック」などの被害に遭う可能性があります。Azure DNSでは、Azureロールベースのアクセス制御(RBAC)を使用して、誰がレコードを編集できるかを細かく制限できます。
また、レコードには「TTL(ティー・ティー・エル)」という有効期限が設定されています。これは、他のコンピュータがその情報をどれくらいの時間キャッシュ(一時保存)しておくかを指定する秒数です。設定変更を頻繁に行う予定がある場合は、この値を短く(例えば300秒など)設定しておくと、変更が速やかにインターネット全体に広がりやすくなります。逆に、安定しているサイトなら3600秒(1時間)やそれ以上に設定するのが一般的です。
9. レコード管理のデータベース化イメージ
大規模な運用では、どのドメインにどのレコードを設定したかをデータベースで管理することもあります。以下は、SQL(エスキューエル)という言葉を使って、DNSレコードの情報をデータベースに保存・抽出する際のイメージです。このように整理して管理することで、設定ミスを防ぐことができます。
id | domain_zone | record_name | type | target_ip
---+----------------+-------------+-------+--------------
1 | sample-site.jp | @ | A | 13.78.123.45
2 | sample-site.jp | www | CNAME | sample-site.jp
3 | dev-site.net | api | A | 40.115.0.12
4 | my-blog.com | @ | A | 52.184.21.5
特定のゾーンに紐付くレコードだけを取り出すSQLクエリの例です。
SELECT record_name, type, target_ip
FROM dns_records
WHERE domain_zone = 'sample-site.jp';
実行結果(抽出されたデータ)は以下のようになります。
record_name | type | target_ip
------------+-------+--------------
@ | A | 13.78.123.45
www | CNAME | sample-site.jp
10. Azure DNSを使いこなすためのヒント
最後に、さらにステップアップするためのヒントをお伝えします。Azure DNSには「プライベートDNSゾーン」という、特定の仮想ネットワーク内だけで有効な名前解決の仕組みもあります。これは社内システムなど、インターネットに公開したくない名前を管理するのに適しています。パブリックとプライベートを使い分けることで、より高度なネットワーク構築が可能になります。
設定手順は最初は複雑に見えるかもしれませんが、一度構築してしまえばAzureの高い可用性とセキュリティの恩恵を受けることができます。カスタムドメインを使って、世界に一つだけのあなたのウェブサービスを公開しましょう。もし途中でわからなくなったら、公式ドキュメントやトラブルシューティングのツールを活用してみてください。一歩ずつ進めば、必ずマスターできますよ!
まとめ
Azure DNSを利用したカスタムドメインの設定とパブリックDNSゾーンの構築手順について、これまでの内容を振り返りましょう。インターネット上の住所とも言えるドメイン名を、Azureという強力なインフラで管理することは、ウェブサービスの安定性と信頼性を高めるために非常に有効な手段です。
Azure DNSの設定フローと重要キーワード
まず、全体の流れを整理します。カスタムドメインを運用するためには、ドメインの取得、AzureでのDNSゾーン作成、そしてレジストラ(ドメイン登録業者)へのネームサーバー登録という3つの大きなステップが必要です。これらを正しく行うことで、初めて世界中からあなたのサイトへアクセスが可能になります。
設定において中心となる「レコード」の種類についても、しっかり復習しておきましょう。
- Aレコード:ドメイン名を直接IPv4アドレスに結びつけます。
- CNAMEレコード:あるドメイン名に別名を付けます。
- NSレコード:そのドメインを管理するネームサーバーを指定します。
- MXレコード:メールの配送先を指定します。
運用管理の効率化とデータベース活用
小規模なサイトであれば手動管理で十分ですが、複数のドメインや多数のサブドメインを運用する場合、設定情報をデータベース化して管理するのが一般的です。例えば、以下のような構造のテーブルでレコード情報を一元管理することで、設定漏れや重複を防ぐことができます。
id | zone_name | sub_domain | record_type | target_value | ttl
---+-----------------+------------+-------------+-----------------+------
1 | example-app.jp | @ | A | 20.43.15.110 | 3600
2 | example-app.jp | www | CNAME | example-app.jp | 3600
3 | example-app.jp | mail | A | 20.43.15.115 | 3600
4 | dev-testing.org | @ | A | 52.152.33.45 | 600
5 | dev-testing.org | api | A | 52.152.33.46 | 600
6 | my-service.com | @ | A | 104.214.77.20 | 3600
7 | my-service.com | shop | CNAME | my-service.com | 1800
このように整理されたデータから、必要な情報だけを抽出するSQLクエリを実行してみましょう。例えば、特定のドメインに関連するすべてのAレコードを取得する場合は以下のようになります。
SELECT sub_domain, target_value, ttl
FROM dns_records
WHERE zone_name = 'example-app.jp' AND record_type = 'A';
実行結果は以下の通りです。
sub_domain | target_value | ttl
-----------+--------------+------
@ | 20.43.15.110 | 3600
mail | 20.43.15.115 | 3600
こうした管理手法を学ぶことで、単なる設定作業を超えた、エンジニアとしての運用スキルが身につきます。
C#によるDNS情報の取得と検証
最後に、システム開発の現場でよく使われるC#(シーシャープ)言語を用いて、プログラムからDNS情報を確認する方法を紹介します。アプリの中から特定のドメインが生きているか、正しいIPを指しているかをチェックする際に役立ちます。
using System;
using System.Net;
class DnsChecker
{
static void Main()
{
string hostName = "www.sample-site.jp";
try
{
// ホスト名からIPアドレスのリストを取得します
IPAddress[] addresses = Dns.GetHostAddresses(hostName);
Console.WriteLine($"{hostName} の解析結果:");
foreach (var ip in addresses)
{
Console.WriteLine($"- IPアドレス: {ip}");
}
}
catch (Exception ex)
{
Console.WriteLine($"エラーが発生しました: {ex.Message}");
}
}
}
このプログラムを実行した際の出力例は以下の通りです。
www.sample-site.jp の解析結果:
- IPアドレス: 13.78.123.45
Azure DNSは、ポータルでのマウス操作だけでなく、CLIやプログラムを介した自動化との相性が非常に良いサービスです。これを機に、クラウドインフラの自動管理にも挑戦してみてください。
生徒
「先生、ありがとうございました!Azure DNSを使えば、自分が取得したドメインとAzureのリソースを簡単につなげられることがよくわかりました。最初は専門用語が多くて驚きましたが、整理してみると意外とシンプルですね。」
先生
「その通りです。特にAレコードやCNAMEレコードといった基本的な役割を理解してしまえば、あとはパズルのように組み合わせていくだけですよ。設定した後のnslookupでの確認作業も忘れずに行えましたか?」
生徒
「はい!自分のパソコンからコマンドを打って、設定したIPアドレスが表示されたときは感動しました。反映に少し時間がかかることもあると教えてもらったので、落ち着いて待つことができました。」
先生
「素晴らしいですね。DNSの浸透待ちは、インフラエンジニアなら誰もが通る道です。Azure DNSならマイクロソフトの強力なネットワークを使っているから、他のDNSサーバーに比べても反映が早くて安定しているのが強みなんですよ。」
生徒
「エイリアスレコードの話も面白かったです。IPアドレスが変わっても自動で追いかけてくれるなんて、Azureを使っているなら使わない手はないですね。次は複数のサブドメインを作って、もっと複雑な構成に挑戦してみたいです!」
先生
「いい意気込みですね!サブドメインを活用すれば、ブログ用、ショップ用、開発用といった具合に一つのドメインでたくさんのサービスを運用できます。セキュリティ設定のRBACやTTLの調整も意識しながら、安全で快適なサイト運営を目指しましょう。」
生徒
「はい!プログラムで自動チェックする方法も教えてもらったので、運用の自動化についても勉強してみます。Azure DNSマスターを目指して頑張ります!」