DNSの設定を行っていると、「CNAMEレコード」という項目を目にすることがあるでしょう。
CNAMEはドメインに別名を付けるための仕組みであり、使いこなすことでサーバー管理の柔軟性が大きく高まります。
この記事では、CNAMEの意味・使い方・Aレコードとの違いについて、エイリアスやドメインといったキーワードを交えながらわかりやすく解説していきます。
DNS設定の理解を深めたい方にとって、必ず押さえておきたい内容です。
CNAMEとはドメインに別名(エイリアス)を付けるDNSレコードのこと
それではまず、CNAMEレコードの基本的な意味と役割について解説していきます。
CNAME(Canonical Name)レコードとは、あるドメイン名を別のドメイン名(正規名)に対応付けるDNSレコードのことです。
「Canonical」とは「正規の」という意味であり、CNAMEは正規のドメイン名に対するエイリアス(別名)を定義します。
たとえば「www.example.com」を「example.com」のエイリアスとして設定することで、どちらのURLからアクセスしても同じサーバーに接続できるようになります。
CNAMEレコードは「別名レコード」とも呼ばれます。
IPアドレスを直接指定するのではなく、別のドメイン名を指定する点がAレコードとの大きな違いです。
CNAMEを使うことで、IPアドレスが変わっても正規ドメイン側のAレコードを変更するだけで済むため、管理の手間を大幅に減らせます。
CNAMEレコードの基本的な構造
CNAMEレコードは「エイリアス名→正規ドメイン名」という構造で定義されます。
設定例:
www.example.com → CNAME → example.com
この場合、「www.example.com」へのアクセスは「example.com」のAレコードが指すIPアドレスに解決されます。
名前解決の際、DNSリゾルバはCNAMEを見つけると、さらに正規ドメイン名のAレコードを追いかけて最終的なIPアドレスを取得します。
この追跡は「CNAMEチェーン」と呼ばれ、複数段になることもあります。
CNAMEが使われる代表的な場面
CNAMEレコードが活用される代表的なシーンとして、以下のようなものがあります。
| 用途 | 具体例 |
|---|---|
| wwwサブドメインの設定 | www.example.com → example.com |
| CDNの利用 | static.example.com → cdn.provider.com |
| SaaSサービスのカスタムドメイン | blog.example.com → example.hatenablog.com |
| メール配信サービスの認証 | mail.example.com → sendgrid.net |
特にCDN(コンテンツデリバリーネットワーク)との連携では、CNAMEレコードが標準的な設定方法として広く使われています。
CNAMEチェーンと解決の流れ
CNAMEが複数連なる場合、DNSリゾルバは最終的なAレコードにたどり着くまで順番に解決を繰り返します。
たとえば「a.example.com → b.example.com → c.example.com → 203.0.113.1(Aレコード)」のように連なるケースです。
CNAMEチェーンが長くなるほど名前解決にかかる時間が増えるため、不必要に深いチェーンは避けることが推奨されています。
パフォーマンスと管理のしやすさのバランスを意識して設計することが大切でしょう。
CNAMEとAレコードの違いを正しく理解する
続いては、CNAMEとAレコードの違いについて詳しく確認していきます。
両者は似た目的で使われることもありますが、仕組みと用途には明確な差があります。
AレコードとCNAMEの比較
AレコードとCNAMEの主な違いを表で整理します。
| 項目 | Aレコード | CNAMEレコード |
|---|---|---|
| 指定する値 | IPv4アドレス | 別のドメイン名 |
| 名前解決の結果 | 直接IPアドレスを返す | 正規ドメインのIPアドレスを追跡して返す |
| IPアドレス変更時 | Aレコードを直接変更する必要がある | 正規ドメインのAレコードを変更するだけでよい |
| ゾーンの頂点(apex)への使用 | 可能 | 原則不可 |
| 解決速度 | 速い | やや遅い(追跡が必要なため) |
IPアドレスが頻繁に変わる環境ではCNAMEが便利ですが、パフォーマンス重視の場面ではAレコードが適しています。
ゾーンの頂点(ドメインルート)にCNAMEを使えない理由
CNAMEはサブドメインに対しては自由に使えますが、「example.com」のようなゾーンの頂点(apexドメイン)には原則として使用できません。
理由は、RFC(インターネット標準)の規定によりゾーンの頂点にはSOAレコードやNSレコードが必須であり、CNAMEはこれらのレコードと共存できないためです。
ただし、CloudflareのCNAMEフラッタリングやAWSのAliasレコードなど、この制限を独自技術で回避する仕組みを提供しているサービスも存在します。
CNAMEとMXレコードの共存不可の注意点
CNAMEを設定したドメインに対して、MXレコードやNSレコードなどの他のレコードを同時に設定することはできません。
たとえば「mail.example.com」にCNAMEを設定した場合、同じ名前でMXレコードを設定してメール受信に使おうとしても正常に機能しません。
メール関連のドメインにはCNAMEを使わず、必ずAレコードを使用することが鉄則です。
設定ミスはメール不達につながるため、十分に注意しましょう。
CNAMEレコードの設定方法と活用のポイント
続いては、実際のCNAMEレコードの設定方法と、上手に活用するためのポイントを確認していきます。
基本的な設定手順
CNAMEレコードはドメインレジストラやDNSホスティングサービスの管理画面から設定できます。
設定に必要な主な項目は以下のとおりです。
| 設定項目 | 内容 | 例 |
|---|---|---|
| ホスト名(名前) | エイリアスとなるサブドメイン | www |
| レコードタイプ | CNAMEを選択 | CNAME |
| 値(正規ドメイン) | 対応付ける正規のドメイン名 | example.com |
| TTL | キャッシュの保持期間(秒) | 3600 |
設定後はdigコマンドやnslookupを使って正しく解決されているかを確認することをおすすめします。
CDNやSaaSとの連携でのCNAME活用
CDNサービスやSaaSプラットフォームでは、カスタムドメインを設定する際にCNAMEレコードの追加を求められることがほとんどです。
たとえばShopifyやHubSpotなどのSaaSツールでカスタムドメインを使う場合、指定されたドメインへのCNAMEを設定することで自分のドメインをサービスに紐付けられます。
CNAMEを活用することで、IPアドレスを意識せずにサービスと連携できるのが大きなメリットです。
CNAMEを使う際のパフォーマンスへの影響
CNAMEレコードは名前解決の際に追加のDNSルックアップが発生するため、Aレコードに比べてわずかに解決時間が長くなる場合があります。
通常の用途では気にならない程度の差ですが、パフォーマンスが重要なシステムでは留意しておく必要があるでしょう。
TTLを適切に設定してキャッシュを活用することで、余分なルックアップを最小限に抑えることができます。
まとめ
この記事では、DNSのCNAMEレコードの意味・Aレコードとの違い・設定方法と活用ポイントについて解説しました。
CNAMEはドメインにエイリアス(別名)を付けるためのレコードであり、CDNやSaaSとの連携・wwwサブドメインの設定など幅広い場面で活躍します。
一方で、ゾーンの頂点への使用不可・MXレコードとの共存不可といった制約もあるため、正しい知識を持って使うことが重要です。
AレコードとCNAMEをそれぞれの特性に応じて使い分けることが、安定したDNS運用の鍵となるでしょう。
ぜひ本記事を参考に、CNAMEレコードの理解を深めてみてください。