Aレコード -- IPv4アドレスマッピング

DNS Aレコードがドメイン名をIPv4アドレスにマッピングする仕組みを解説します。構文、TTL値、ロードバランシングのための複数Aレコード設定を理解しましょう。

AAddress Records

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接続を開始します。

名前解決の完全なチェーンは以下の通りです:

  1. ブラウザがローカルキャッシュを確認
  2. OSリゾルバがシステムDNSキャッシュを確認
  3. 再帰リゾルバがルートサーバーに問い合わせ
  4. ルートサーバーが.com TLDサーバーを指示
  5. TLDサーバーが権威ネームサーバーを指示
  6. 権威ネームサーバーが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レコードです。

試してみる — DNS Record Generator

フルツールを開く