--- title: "A・AAAA・CNAMEレコードの違いと使い分け" description: "DNS設定でA・AAAA・CNAMEのどれを選ぶか迷ったとき、指定されたIPアドレスやホスト名から正しいレコードを判断する方法を解説します。ルートドメインの制約と設定後の確認方法も整理します。" date: 2026-08-01 category: DNS・ドメイン tags: [Aレコード, CNAME] related_links: [dns] draft: false --- DNS設定でA・AAAA・CNAMEのどれを選ぶか迷ったら、接続先から渡された値の形を見ます。IPv4アドレスならA、IPv6アドレスならAAAA、ホスト名ならCNAMEです。 ただし、ルートドメインでは通常のCNAMEをそのまま使えません。また、AAAAはIPv6でWebサイトが正常に表示できる場合だけ追加します。この2点を先に確認すると、レコードの種類を選んだ後の接続トラブルを減らせます。 ## 渡された値の形で選ぶ 最初に確認するのは、DNS管理画面の選択肢ではなく、サーバー会社やWebサービスから指定された接続先です。値の形とレコードの対応は次のとおりです。 | 指定された値 | 選ぶレコード | 設定例 | |---|---|---| | `192.0.2.10`のようなIPv4アドレス | A | `example.com A 192.0.2.10` | | `2001:db8::10`のようなIPv6アドレス | AAAA | `example.com AAAA 2001:db8::10` | | `target.example.net`のようなホスト名 | CNAME | `www.example.com CNAME target.example.net` | 接続先サービスがレコードの種類まで指定している場合は、その案内を優先します。IPアドレスを渡されたのにCNAMEを選んだり、ホスト名をAレコードへ入れたりしても、期待する接続先にはなりません。 ## AレコードはIPv4アドレスへ向ける Aレコードは、ドメイン名をIPv4アドレスへ対応させる設定です。Webサーバーから`192.0.2.10`のように4組の数字で書かれた値を指定された場合に使います。 ルートドメインの`example.com`にも、`www.example.com`や`app.example.com`のようなサブドメインにも設定できます。DNS管理画面では、ルートドメインの名前欄を`@`または空欄で表す場合があります。 Aレコードの値へ`https://`やページのパスは入力しません。`https://example.com/service/`というURLがあっても、DNSへ登録するのはWebサーバーのIPv4アドレスだけです。 ## AAAAはIPv6対応を確認してから使う AAAAレコードは、ドメイン名をIPv6アドレスへ対応させます。[RFC 3596](https://www.rfc-editor.org/rfc/rfc3596.html)では、1つのAAAAレコードに1つのIPv6アドレスを格納する仕様として定義されています。 AとAAAAは同じ名前に併用できます。WebサーバーがIPv4とIPv6の両方へ正しく応答するなら、`example.com`にAとAAAAを置く構成が可能です。 一方、IPv6で接続できないサーバーのAAAAを公開すると、IPv6を使う閲覧者だけサイトを開けない状態になる場合があります。[IPv6サービス提供者向けのRFC 6883](https://www.rfc-editor.org/rfc/rfc6883.html)でも、AAAAを追加する前にサーバーやロードバランサーのIPv6動作を十分に確認するよう案内されています。AレコードのIPv4アドレスからAAAAの値を推測せず、接続先から指定されたIPv6アドレスを使ってください。 ## CNAMEは別のホスト名へ向ける CNAMEは、設定する名前を別のホスト名の別名として扱うレコードです。SaaSやCDNから`project.hosting.example`のような接続先を渡され、`www`や`app`をそこへ向ける場合に使います。 CNAMEの値もURLではありません。`https://project.hosting.example/path/`ではなく、指定されたホスト名だけを登録します。ポート番号やページのパスを振り分ける機能もないため、それらはWebサーバー側で設定します。 CNAMEがある名前には、AやAAAAなどの別レコードを置けません。TXTも同じです。[RFC 2181](https://www.rfc-editor.org/rfc/rfc2181.html)では、CNAMEの別名に他のデータを持たせないことが明確にされています。既存の`www`にAレコードがある状態でCNAMEへ切り替えるなら、同じ名前に古いAレコードを残さないようにします。 ## ルートドメインではDNS事業者の機能を確認する `example.com`のようなルートドメインは、DNSではゾーン頂点と呼ばれます。ここにはSOAやNSなど必要なレコードがあるため、他レコードと共存できない通常のCNAMEは置けません。 ただし、DNS事業者が独自機能を提供している場合があります。名称はALIAS、ANAME、CNAME Flatteningなどです。これらは指定したホスト名をDNS事業者側で解決し、AまたはAAAA相当の回答を返します。[Google Cloud DNSのレコード解説](https://docs.cloud.google.com/dns/docs/records-overview)では頂点用のALIASが説明され、[CloudflareのCNAME Flattening](https://developers.cloudflare.com/dns/cname-flattening/set-up-cname-flattening/)はルートドメインで既定有効と案内されています。 管理画面で`@`のCNAMEを登録できても、すべてのDNSサービスで同じ動作になるわけではありません。接続先サービスと現在利用しているDNS事業者の両方が案内する方法を確認してください。対応していなければ、ルート用のAやAAAAを案内してもらうか、別の接続方法を選ぶ必要があります。 ## 同じ名前へ置ける組み合わせを確認する レコードの種類が正しくても、同じ名前に残っている既存レコードと競合することがあります。新しいレコードを追加する前に、名前が完全に同じ行を確認します。 | 同じ名前の組み合わせ | 設定可否 | 確認すること | |---|---|---| | AとAAAA | 併用できる | IPv4とIPv6の両方で同じサービスへ接続できるか | | 複数のA | 併用できる | 接続先が複数IPの登録を指定しているか | | AとCNAME | 併用できない | 同じ名前のAをCNAMEへ置き換える | | AAAAとCNAME | 併用できない | 同じ名前のAAAAをCNAMEへ置き換える | | TXTとCNAME | 併用できない | 所有権確認用TXTと同じ名前になっていないか | `example.com`と`www.example.com`は別の名前です。ルートにAを置き、`www`にCNAMEを置く構成は、同じ名前での競合にはなりません。 ## 設定前の順番を決める 設定値を何度も登録し直さないために、種類を選ぶ前から確認順を固定します。特にルートドメインとサブドメインを取り違えると、正しい値を入れても目的のURLへ反映されません。 1. 接続先サービスが指定したレコード名と値をそのまま控える 2. 設定する名前がルートの`@`か、`www`などのサブドメインか確認する 3. IPv4、IPv6、ホスト名のどれかを見てレコード種別を選ぶ 4. 同じ名前にCNAMEと競合する既存レコードがないか確認する 5. 保存後に外部DNSからA・AAAA・CNAMEの応答を確認する 設定直後に以前の値が返る場合は、レコード種別ではなくDNSキャッシュの問題かもしれません。その切り分けは[DNSの反映とTTLの解説](/article/dns-propagation-guide)で扱っています。ほかのDNSレコードの役割も必要になった場合は[DNSレコードの種類](/article/dns-record-types)を参照してください。 まずは接続先から渡された値がIPv4、IPv6、ホスト名のどれかを確認します。登録後に[DNSレコード確認ツール](/dns/)で対象ドメインを調べ、選んだA・AAAA・CNAMEが外部から見えることまで確認してください。