CNAMEレコードがドメイン名を別のドメイン(正規名)へ転送し、最終的にIPアドレスへ紐付く仕組みを表現した、DNSネットワークの概念図

DNSのCNAMEレコードとは?用途・設定方法・制限を解説


著者: Ahona Rudra
翻訳: 古川 綾乃

この記事はPowerDMARCのブログ記事 What Is a DNS CNAME Record? Uses, Setup, and Restrictions の翻訳です。
Spelldataは、PowerDMARCの日本代理店です。
この記事は、PowerDMARCの許可を得て、翻訳しています。


重要なポイント

  1. CNAMEレコードはドメインエイリアスとして機能し、IPアドレスを直接指定するのではなく、ドメインやサブドメインを別の正規ドメイン名に向けます。
  2. CNAMEレコードはルートドメインでは使用できず、同じホスト名でA、AAAA、MXなどの他のDNSレコードタイプと共存することもできません。
  3. CNAMEレコードを利用することで、複数のドメインをメインサイトへリダイレクトしたり、CDNと連携したり、顧客向けや異なるサービス向けのサブドメインを管理したりするなど、幅広く利用されています。
  4. CNAMEやその他のDNSレコードを適切に実装することは、ドメインを正常に機能させ、メール認証やセキュリティなどの重要なサービスを支えるために不可欠です。

ドメインの管理、メールの設定、またはWebサイトの立ち上げは、時に複雑に感じることがあります。
特に、DNSのような技術用語が関わる場合はなおさらです。

しかし、私たちが日常的にアクセスするドメインや送信するメールの背後では、DNSレコードによる仕組みが裏側で動作しています。
その中でも、特に誤解されやすいのがCNAMEレコードです。
この記事では、CNAMEレコードとは何か、どのように機能するのか、そしてなぜそれがドメインの機能にとって重要なのかを説明します。

CNAMEレコードとは何か

CNAME(Canonical Name)レコードは、DNSレコードの一種であり、あるドメイン名を別のドメイン名に向けるレコードです。
これはエイリアスのように機能し、異なるドメイン名で同じWebサイトやサーバーにアクセスできるようにします。
IPアドレスやコンテンツを持たずに、1つのドメイン名を別のドメイン名へ転送する仕組みです。

この仕組みにより、複数のドメイン名を同じ場所に向けて設定できます。
例えば、www.website.comをwebsite.comを指すように設定すると、両方のアドレスから同じWebサイトにアクセスできるようになります。
別の例として、mail.website.com を mailhost.website.com のCNAMEとして設定することで、メールサービスを効率的に管理できます。

CNAMEレコードを使用すると、複数のドメイン名が参照先を一元管理できるため、ドメイン管理を簡素化できます。
この仕組みにより、更新作業が容易になり、コンテンツ配信ネットワーク(CDN)などのサービスともスムーズに連携できます。

また、サブドメインを一貫して管理するのにも役立ちます。
さらに、メール認証などの重要なサービスを正しく機能させるうえでも重要な役割を果たし、セキュリティや信頼性の向上にも寄与します。

CNAMEレコードはどのように機能するのか

CNAMEレコードは、IPアドレスを直接指定するのではなく、別のドメイン名を参照する仕組みです。
例えば、www.blog.mydomain.comをmydomain.comに向けるCNAMEレコードを作成した場合、www.blog.mydomain.comに対するDNSの名前解決では、まずCNAMEを参照して mydomain.com が取得されます。
その後、DNSはAレコード(IPv4アドレスに対応するレコード)またはAAAAレコード(IPv6アドレスに対応するレコード)が見つかるまで名前解決を続けます。

最終的に、実際のIPアドレスが返されます。
処理の流れは次のとおりです。
CNAME → 正規名(Canonical Name)→ Aレコード(IPv4)またはAAAAレコード(IPv6)

※注意:ホストのIPアドレスが変更された場合、ルートドメインのDNS Aレコードを更新するだけで済みます。
エイリアスやサブドメインを含むすべてのCNAMEレコードは、その変更を参照するため、個別に修正する必要はありません。
参考として、以下の表をご覧ください。

(サブ)ドメイン / ホスト名 レコードタイプ ターゲット / 宛先
mydomain.com A 333.444.555.111
www.blog.mydomain.com CNAME mydomain.com
ftp.mydomain.com CNAME mydomain.com
mail.mydomain.com CNAME mydomain.com

DNS CNAMEレコードの主な用途

CNAMEレコードは、エイリアス(ユーザーが入力する名前)を正規名(実際の宛先)に紐付けるDNSレコードです。
一般的な用途は次のとおりです。

複数のドメインを1つのWebサイトに向ける
同じ組織が所有する複数のドメインをメインのWebサイトに向けるために、CNAMEレコードを使用します。
異なるサービスを同じドメインに紐付ける
メールやFTPなどのサービスをメインドメインに紐付けるために、CNAMEレコードを使用します。
顧客向けのサブドメインを作成する
顧客ごとにサブドメイン(例:customer.provider.com)を設定し、それぞれの顧客用ドメインに向けることができます。
国別サイトをメインドメインに向ける
CNAMEレコードを使用すると、国ごとのサイトからメインのWebサイトを参照させることができます。
コンテンツ配信ネットワーク(CDN)を設定する
CDNのアドレスをCNAMEレコードとして追加すると、ユーザーのアクセスはCDNを経由して処理され、そこからWebサイトのコンテンツが配信されます。

CNAMEレコードの作成方法

次の手順に従って、ドメインにCNAMEレコードを作成できます。

1. DNS管理コンソールにログインします
通常は、ドメインレジストラのダッシュボードやWebホスティングのコントロールパネルからアクセスできます。
2. 新しいレコードを追加します
「Add Record」をクリックし、レコードタイプの一覧から「CNAME」を選択します。
3. 名前(エイリアス)を入力します
別の場所を指すサブドメインまたはホスト名(例:www や blog)を入力します。
4. 正規名(ターゲット)を入力します
このエイリアスが指す完全修飾ドメイン名(例:website.com)を入力します。
5. TTL(Time to Live)を設定します
TTLはDNSレコードがキャッシュされる時間を指定します。
  • IPアドレスが固定の場合は、1800秒(30分)以上を設定します。
  • IPアドレスが動的な場合は、1800秒以下を設定します。
6. レコードを保存します
「Save」または「Create」をクリックして、新しいCNAMEレコードをDNSに追加します。

すでにCNAMEレコードを設定していますか?
無料のCNAME Record Checkerを使用すると、レコードが正しく設定されているか、期待どおりに名前解決されているかを確認できます。

CNAMEレコードのDNS処理プロセス

例として powerdmarc.com を使用して、CNAMEレコードがどのように機能するかを説明します。
この例では、www.powerdmarc.compowerdmarc.comを指すCNAMEとして設定されており、powerdmarc.comはIPアドレスを指すAレコードを持っています。

名前 タイプ
www.powerdmarc.com CNAME powerdmarc.com
powerdmarc.com A 172.66.43.156

DNS名前解決プロセスは次の手順で進みます。

  1. DNSクライアントがwww.powerdmarc.comに対してクエリを送信します。
    これはドメイン名をIPアドレスに変換するための最初のリクエストです。
  2. DNSリゾルバがpowerdmarc.comの権威ネームサーバーを特定します。
    リゾルバは、そのドメインのDNSレコードを管理しているネームサーバーを確認します。
  3. リゾルバがwww.powerdmarc.comのCNAMEレコードを取得します。
    ここで、www.powerdmarc.comがpowerdmarc.comを指すエイリアスであることが分かります。
  4. DNSクライアントはCNAMEレコードを参照し、powerdmarc.com に対して新しいクエリを送信します。
    エイリアスであるため、実際のDNSレコードを取得するために powerdmarc.com を再度問い合わせます。
  5. DNSリゾルバが powerdmarc.com のAレコードを返します。
    このレコードには IPv4アドレス172.66.43.156が含まれています。
  6. DNSクライアントはそのIPアドレスを使用してWebサイトに接続します。
    これで名前解決が完了し、クライアントはサーバーへ接続できます。

このプロセスにより、CNAMEレコードは最終的にAレコードを参照し、接続に必要なIPアドレスを取得する仕組みになっています。

CNAMEと他のDNSレコードとの主な違い

DNSレコードにはそれぞれ異なる役割があります。
CNAME、A、AAAA、ALIAS、TXTレコードの使い分けを理解することで、よくある設定ミスを防ぎ、ドメインを正しく動作させることができます。

レコードタイプ 役割 使用する場面 CNAMEとの主な違い
Aレコード ドメインをIPv4アドレス(例:192.0.2.1)にマッピングします。 サーバーのIPv4アドレスが分かっており、直接名前解決を行いたい場合 IPアドレスに直接対応します。CNAMEより構成がシンプルです。
AAAAレコード ドメインをIPv6アドレス(例:2001:db8::1)にマッピングします。 サーバーがIPv6を使用している場合 Aレコードと同様ですがIPv6用です。他のドメインを参照することはありません。
ALIAS / ANAME CNAMEのように動作しますが、ルートドメインでも使用できます。 ルートドメイン(例:website.com)でCNAMEのような設定が必要な場合 内部的にはIPアドレスへ解決されますが、CNAMEのようなエイリアス機能を持ちます。
TXTレコード ドメインに任意のテキストデータを保存します(主にメールセキュリティや検証用途)。 SPF、DKIM、DMARC、所有確認など IPアドレスの名前解決には使用されません。

なぜCNAMEはA、AAAA、MXレコードと共存できないのですか?

CNAMEレコードは、そのドメイン名を別のドメイン名の別名(エイリアス)として扱うDNSレコードです。
そのため、次のような制約があります。

ルートレベルでエイリアスが必要な場合は、代わりにALIASまたはANAMEレコードを使用します。

簡単なルールは次のとおりです。

CNAMEレコードの制限事項

CNAMEレコードは、あるドメイン名を別のドメイン名に向けるために便利ですが、誤った設定を避けるために理解しておくべき重要な制限があります。

ルートドメインでは使用できない
CNAMEレコードはルートドメイン(ゾーンエイペックス)では使用できません。
ルートドメインでは通常、A、AAAA、MXなどの他の重要なレコードが必要であり、これらはCNAMEと共存できないためです。

ベストプラクティスとして、多くのDNSプロバイダーが提供するALIASまたはANAMEレコードを使用することで、DNSのルールに違反することなく、ルートレベルで同様のエイリアス機能を実現できます。

他のレコードと共存できない
CNAMEレコードは、同じホスト名で他のレコードタイプと共存できません。
例えば、www.website.comにCNAMEレコードがある場合、同じwww.website.comに対してA、AAAA、MX、またはTXTレコードを同時に設定することはできません。

ベストプラクティスとして、CNAMEレコードを作成する前に、そのホスト名に競合するレコードが存在しないことを確認してください。

追加のDNSルックアップが発生する
CNAMEレコードを使用すると、追加のDNSルックアップが発生します。
DNSリゾルバはまず正規名を解決する必要があるため、名前解決にわずかな遅延が生じる可能性があります。

ベストプラクティスとして、CNAMEの使用は必要に応じて適切に行い、長いCNAMEチェーンを避けることで遅延を最小限に抑えてください。

まとめ

CNAMEレコードは、柔軟なドメインのエイリアス設定を実現し、複数のドメイン名を単一のリソースに向ける設定を簡素化することで、DNSおよびドメイン管理において重要な役割を果たします。
これにより、Webサイト管理の効率化、サブドメインの活用、コンテンツ配信ネットワーク(CDN)との連携が可能になります。
正しく使用することで、CNAMEレコードはシンプルで管理しやすいDNS構成に貢献し、特にセキュリティを重視する組織にとって重要なメール認証プロトコルなどのサービスを支える基盤となります。

DNS設定を安全かつ適切に保つために、CNAMEやその他のDNSレコードを正しく実装することが重要です。
さらに理解を深めたり、DNSやメールセキュリティをより確実に管理したい場合は、PowerDMARCが提供するDNSおよびDMARCのツールやガイドをご活用ください。

よくある質問

CNAME設定の主な利点は何ですか?
複数のドメイン名やサブドメインを1つの正規ドメインに向けることができ、DNS管理を簡素化できる点です。
CNAMEがある場合でもAレコードは必要ですか?
はい、必要です。
CNAMEは別のドメインを指しますが、その先のドメインには実際のIPアドレスを提供するためのAレコード(またはAAAAレコード)が必要です。
CNAMEは複数のレコードを持つことができますか?
いいえ、できません。
CNAMEレコードは1つの正規ドメイン名のみを指すことができ、複数の値を持つことはできません。