Aレコード -- IPv4アドレスマッピング
DNS Aレコードがドメイン名をIPv4アドレスにマッピングする仕組みを解説します。構文、TTL値、ロードバランシングのための複数Aレコード設定を理解しましょう。
Zone File Entry
example.com. IN A 203.0.113.50
詳細な説明
Aレコードとは?
Aレコード(Addressレコード)は、最も基本的なDNSレコードタイプです。ドメイン名をIPv4アドレスに直接マッピングし、ユーザーがドメインにアクセスした際にDNSリゾルバがどのサーバーに接続すべきかを指示します。
BINDゾーンファイルの構文
; 基本的なAレコード
example.com. 3600 IN A 203.0.113.50
; ルートドメインのAレコード(@はゾーンオリジンを意味する)
@ 3600 IN A 203.0.113.50
; 明示的なTTL付き
www 300 IN A 203.0.113.50
各フィールドは、名前、TTL(省略可、秒単位)、クラス(INはInternet)、タイプ(A)、IPv4アドレスです。
Aレコードの名前解決の仕組み
ブラウザがexample.comをリクエストすると、リゾルバはそのドメインの権威ネームサーバーに問い合わせます。ネームサーバーはIPv4アドレスを含むAレコードを返し、ブラウザはそのアドレスにTCP接続を開始します。
名前解決の完全なチェーンは以下の通りです:
- ブラウザがローカルキャッシュを確認
- OSリゾルバがシステムDNSキャッシュを確認
- 再帰リゾルバがルートサーバーに問い合わせ
- ルートサーバーが
.comTLDサーバーを指示 - TLDサーバーが権威ネームサーバーを指示
- 権威ネームサーバーがAレコードを返す
複数Aレコードによるロードバランシング
同じドメイン名に複数のAレコードを割り当てることができます。DNSリゾルバはラウンドロビン方式でそれらを巡回し、複数のサーバーにトラフィックを分散します:
example.com. 300 IN A 203.0.113.50
example.com. 300 IN A 203.0.113.51
example.com. 300 IN A 203.0.113.52
これはDNSラウンドロビンと呼ばれ、追加のインフラなしで基本的な負荷分散を実現します。クライアントが変更を素早く取得できるよう、TTLは低め(例:300秒)に設定しましょう。
TTLに関する注意事項
Aレコードの一般的なTTLは3600秒(1時間)です。DNS移行時やIPアドレス変更が予想される場合は、変更の少なくとも24時間前にTTLを300秒(5分)まで下げてください。これにより、レコード更新後にクライアントが素早くリフレッシュできます。
よくある間違い
- 末尾のドットの欠落:BINDゾーンファイルでは、末尾にドットのない
example.comはゾーンオリジンからの相対名として扱われ、予期しない結果を引き起こす可能性があります。 - パブリックDNSにプライベートIP:Aレコードを
192.168.x.xのようなプライベートIPに向けても、外部の訪問者からはアクセスできません。 - ルートとwwwの両方の設定忘れ:
www.example.comにAレコードを設定してもexample.comに設定しなければ、ドメインを直接入力した訪問者はDNSエラーになります。
ユースケース
Aレコードは、ドメインやサブドメインをWebサーバー、アプリケーションサーバー、または静的IPv4アドレスを持つ任意のサービスに向ける際に使用します。最も一般的に設定するDNSレコードです。