CNAMEとAレコードの違いと選び方
著者: Ahona Rudra
翻訳: 永 香奈子
この記事はPowerDMARCのブログ記事 CNAME vs A Record: Which DNS Record Should You Use? の翻訳です。
Spelldataは、PowerDMARCの国内正規代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。
主なポイント
- ドメインネームシステム(DNS)は電話帳のような役割を持ち、Webサイトへアクセスする際にドメイン名をIPアドレスへ変換します。
- CNAMEレコードは、サブドメインなどの別名を別のドメイン名へ紐付けることで、Webサイトやサービスのアドレスを柔軟に管理できます。
- Aレコードは、ドメイン名を対応するIPv4アドレスへ直接紐付けるために使用されます。
- CNAMEレコードを使用すると、参照先のIPアドレスが変更された場合でも、複数のDNSレコードを個別に変更する必要を減らせるため、管理を簡素化できます。
- CNAMEレコードとAレコードの違いや用途を理解することは、適切なドメイン管理において重要です。
ドメインネームシステム(DNS)は、インターネット上の通信を適切な接続先へ導くための情報を、DNSレコードとして管理しています。
DNSはナビゲーションシステムのような役割を果たし、ユーザーがWebブラウザにドメイン名を入力すると、接続先となるサーバーの情報を特定します。
主なDNSレコードの種類には、AレコードとCNAMEレコードがあります。
Webサイトへの安定したアクセスを確保し、DNSを効率的に管理するには、この2つの違いを理解しておくことが重要です。
CNAMEレコードとは?
DNS CNAMEレコードは、あるドメイン名を別のドメイン名へ紐付けるDNSレコードです。
CNAMEの「C」は「Canonical」を意味し、「正規名」を表します。
CNAMEレコードを使用すると、サブドメインなどの別名を、正規ホスト名となる別のドメイン名へ参照させることができます。
例えば、www.example.comをexample.comへ向けるような設定が可能です。
この場合、www.example.comへアクセスすると、DNSはCNAMEレコードを参照し、その参照先であるexample.comのIPアドレスをさらに名前解決します。
どのWebページを表示するかはWebサーバー側の設定によって決まるため、CNAMEレコード自体が表示するページを指定するわけではありません。
CNAMEレコードは、WebサイトやサービスのIPアドレスが変更される可能性がある場合に特に便利です。
複数のサブドメインを1つの正規ホスト名へ向けておけば、参照先のIPアドレスが変更された場合でも、元となるAレコードなどを更新するだけで対応できます。
CNAMEレコード検索ツールを使用して、CNAMEレコードを確認できます。
Aレコードとは?
DNS Aレコードは、ドメイン名やホスト名をIPv4アドレスへ直接紐付けるDNSレコードです。
Aレコードの「A」は「Address」を意味します。
Aレコードがあることで、ユーザーはIPアドレスを直接入力することなく、ドメイン名を使ってWebサイトへアクセスできます。
例えば、example.comのAレコードに192.0.2.1が設定されている場合、ユーザーがブラウザへexample.comと入力すると、DNSはそのドメインに対応するIPアドレスとして192.0.2.1を返します。
ブラウザはそのIPアドレスを使用してWebサーバーへ接続し、Webサイトを表示します。
なお、AレコードはIPv4アドレスにのみ対応しています。
IPv6アドレスを使用する場合は、AAAAレコードを使用します。
Aレコード検索ツールを使用して、Aレコードを確認できます。
DNS AレコードとCNAMEレコードの主な違い
AレコードとCNAMEレコードは、それぞれ異なる役割を持っています。
ドメインを適切に管理するには、両者がどのように名前解決を行うのかを理解しておくことが重要です。
| ホスト名/ドメイン/サブドメイン | DNSレコードタイプ | 参照先 |
|---|---|---|
| example.com | Aレコード | 12.345.67.89 |
| www.example.com | CNAMEレコード | example.com |
| blog.example.com | CNAMEレコード | example.com |
| shop.example.com | CNAMEレコード | shop.work.com |
- 主な機能
- A(Address)レコードは、ドメイン名を特定のIPv4アドレスへ直接紐付けます。
インターネット上では、このIPアドレスを使用して接続先のサーバーを特定します。 - 例
website.com→192.0.2.1
ユーザーがブラウザにwebsite.comと入力すると、DNSはAレコードを参照してサーバーのIPアドレスを特定します。
一方、CNAME(Canonical Name)レコードは、IPアドレスではなく、別のドメイン名を参照します。
つまり、あるドメイン名を別のドメイン名の別名として扱うためのレコードです。- 例:
blog.website.com→website.com
ユーザーがblog.website.comへアクセスすると、DNSはまずwebsite.comを参照し、その後、website.comに設定されているAレコードやAAAAレコードなどを使用してIPアドレスを特定します。- 比較
- AレコードはIPアドレスを直接返します。
一方、CNAMEレコードでは別のドメイン名を参照した後にIPアドレスを名前解決します。
CNAMEを使用すると、複数の名前を1つの正規ホスト名へまとめられるため、DNS管理を簡素化できます。
ユースケース
| レコードタイプ | 一般的なユースケース | 備考 |
|---|---|---|
| Aレコード | ルートドメイン、IPv4アドレスへの直接指定 | example.comのようなルートドメインでよく使用されます |
| CNAMEレコード | サブドメイン、複数の名前を1つのドメインへ紐付ける場合 | 参照先の変更を一元管理しやすくなります |
AレコードとCNAMEレコードのどちらを使用するかは、設定したい内容によって異なります。
簡単に言えば、Aレコードは、ルートドメインやWebサーバーなど、IPアドレスへ直接紐付けたい場合に使用されます。
CNAMEレコードは、サブドメインなどを別のドメイン名へ紐付けたい場合に適しています。
参照先となるドメインの設定を変更すれば、そのドメインを参照しているCNAMEにも反映されるため、管理を簡素化できます。
パフォーマンスと柔軟性
AレコードとCNAMEレコードでは、DNS名前解決の流れと管理上の柔軟性にも違いがあります。
AレコードはIPアドレスを直接返すため、名前解決の流れがシンプルです。
一方、CNAMEレコードでは、まず参照先となる正規ホスト名を確認し、その後、そのホスト名に対応するIPアドレスを名前解決します。
そのため、CNAMEでは追加のDNS問い合わせが発生する場合があります。
ただし、通常、この違いをユーザーが体感することはほとんどありません。
CNAMEレコードの大きな利点は、管理の柔軟性です。
参照先のIPアドレスが変更された場合でも、CNAMEを設定している各サブドメインを個別に変更する必要がありません。
一方、AレコードはIPアドレスを直接指定するため、設定しているIPアドレスが変更された場合には、該当するAレコードを更新する必要があります。
共存ルールと制限事項
DNSには、AレコードとCNAMEレコードの設定に関するルールがあります。
Aレコードは、同じ名前にTXTレコードやMXレコードなど、他のDNSレコードを設定できる場合があります。
一方、CNAMEレコードは、その名前自体を別の正規ホスト名の別名として定義するため、同じ名前にA、MX、TXTなどの他のDNSレコードを設定することはできません。
例えば、blog.example.comにCNAMEレコードを設定している場合、通常は同じblog.example.comにAレコードやMXレコードなどを追加することはできません。
また、一般的なDNS標準では、ゾーンのルートドメインにCNAMEレコードを設定することはできません。
ルートドメインにはSOAやNSなど、必須となる他のDNSレコードが存在するためです。
そのため、ルートドメインでは通常、AレコードやAAAAレコードを使用します。
DNSプロバイダーによっては、ALIASやANAME、CNAME Flatteningなど、CNAMEに似た独自の仕組みを提供している場合があります。
どちらを使用すべきですか?
CNAMEレコードとAレコードのどちらを使用するかは、ドメインの構成と管理上の要件によって決まります。
以下の場合はAレコードを使用します。
- ルートドメイン(例:
example.com)をIPv4アドレスへ直接紐付けたい場合 - IPアドレスを直接指定したい場合
- 接続先のIPアドレスが固定されており、変更が少ない場合
以下の場合はCNAMEレコードを使用します。
- サブドメイン(例:
blog.example.com)を、IPアドレスではなく別のドメイン名へ紐付けたい場合 - 複数のサブドメインを同じ参照先へまとめて管理したい場合
- 参照先のIPアドレスが変更される可能性があり、個別のDNSレコード更新を減らしたい場合
IPアドレスへ直接紐付けたい場合はAレコード、管理の柔軟性を重視して別のドメイン名を参照させたい場合はCNAMEレコードが適しています。
まとめ
効果的なDNS管理には、CNAMEレコードとAレコードの違いを理解することが重要です。
主な違いは、ドメイン名を何に紐付けるかです。
Aレコードはドメイン名をIPv4アドレスへ直接紐付けますが、CNAMEレコードは別のドメイン名を参照します。
用途に応じて適切なレコードタイプを選択することで、DNS管理を簡素化し、設定変更にも柔軟に対応できます。
ルートドメインを管理する場合でも、複数のサブドメインを運用する場合でも、AレコードとCNAMEレコードを適切に使い分けることで、安定したDNS環境を維持できます。
PowerDMARCが提供するツールとサービスを活用して、DNS設定を確認し、ドメイン管理を効率化し、メールセキュリティを強化してください。
よくある質問
- AレコードなしでCNAMEを使用できますか?
- はい。
CNAMEレコード自体は、Aレコードとは別に設定できます。
CNAMEは別のドメイン名を参照するため、参照先が最終的に有効なIPアドレスへ名前解決できれば機能します。
参照先では、IPv4の場合はAレコード、IPv6の場合はAAAAレコードなどが使用されます。 - CNAMEレコードとAレコードは共存できますか?
- 同じ名前では共存できません。
DNSの仕様上、CNAMEレコードが設定されている名前には、通常、A、MX、TXTなどの他のDNSレコードを設定できません。
例えば、blog.example.comにCNAMEレコードが存在する場合、同じblog.example.comにAレコードを設定することはできません。
このルールにより、名前解決の参照先が明確になり、DNSレコード間の競合を防ぐことができます。 - 1つのドメインに複数のAレコードを設定できますか?
- はい。
1つのドメイン名に対して複数のAレコードを設定し、それぞれ異なるIPv4アドレスを指定できます。
複数のAレコードを使用することで、複数のサーバーへトラフィックを分散したり、冗長性を確保したりできます。 - AレコードはCNAMEより優れていますか?
- 一概にどちらが優れているとは言えません。
AレコードはIPアドレスへ直接紐付けるため、ルートドメインや固定IPを使用するサービスに適しています。
一方、CNAMEレコードは別のドメイン名を参照できるため、サブドメインの管理や、参照先が変更される可能性のあるサービスに適しています。
どちらを使用するかは、DNS構成と運用上の目的に応じて選択することが重要です。