初心者向け!CNAMEレコードについて基本機能と制約・代替案を紹介!

Web開発
この記事は約5分で読めます。

こんにちは、@Manabu です。

最近、別のサイトをCDN経由にする作業を行う機会がありました。

その時、CNAMEレコードの登録を行なったのですが、他のレコードと競合して使えないという問題に直面しました。

その時、いくつか疑問の疑問が浮かびました。

CNAMEレコードってなんだろう?

どんな制約があるんだろう?

本記事では、CNAMEレコードの基本的な役割から、その制約、代替案について調査したことを紹介します。

CNAMEレコードとは?

CNAMEレコードは、あるドメインを別のドメインに紐づけるためのDNSレコードです。具体的には、あるホスト名を別のホスト名にリダイレクトする際に使用されます。

例として、www.example.com example.com にリダイレクトする場合を考えてみます。

この場合、CNAMEレコードを使ってwww.example.com example.com に紐づけることができます。

これにより、www.example.com へのアクセスが自動的に example.com に転送されます。

Aレコードとの違い

CNAMEレコードとよく比較されるのがAレコードです。

それぞれの違いについてみてみましょう。

・Aレコード
:ドメイン名を直接IPアドレスに紐づけます。例えば、example.com 192.0.0.1 に紐づけます。これにより、example.com にアクセスするユーザーは、直接指定されたIPアドレスのサーバーにアクセスされます。
・CNAMEレコード
:ドメイン名を別のドメイン名に紐づけます。例えば、www.example.com example.com に紐づけることで、www.example.com へのアクセスは自動的に example.com に転送されます。
この違いからもわかるように、CNAMEレコードは名前のエイリアス(別名)を作るために使われ、一方でAレコードはドメイン名を直接IPアドレスに結びつけます。

具体的な利用シーン

CNAMEレコードは、以下のような場面で役立ちます。

複数のサブドメインを一元管理する場合

例えば、www.example.comblog.example.comtest.example.com など複数のサブドメインを一つのドメイン名に集約する際に使用されます。

バーチャルホストを使用して、複数ドメインを1つのサーバーでホストしている時などに、まとめてホスト名に向けて転送することができます。

異なるサービスへのリダイレクト

ブログやショップなどの異なるサービスを異なるドメイン名で管理する場合に使用されます。

例えば、blog.example.com exampleblog.com にリダイレクトしたい場合に役立ちます。

また、旧サイトと新サイトがあり、旧サイトを閉じる場合、旧サイトのドメインを新サイトに向けることも可能です。

CDNの利用

CDN(Content Delivery Network)を使用してコンテンツを配信する際、CNAMEレコードを利用して、ユーザーを最適なエッジサーバーに紐づけます。

例えば、 cdn.example.com をCDNプロバイダが提供するホスト名(例: blog.example.com )に紐づける場合などです。

CNAMEの制約と代替案

CNAMEレコードは非常に便利なDNSレコードですが、いくつかの重要な制約があります。

これらの制約を理解しておくことは、DNSの設定を行う際にトラブルを避けるために必要不可欠です。

他のレコードと共存不可

CNAMEレコードは、同じホスト名に他のDNSレコード(MXレコード、TXTレコードなど)を設定することができません

例えば、www.example.com にCNAMEレコードがある場合、 www.example.com にMXレコードやTXTレコードを登録することができません。

これは、DNSリゾルバと呼ばれるドメインの名前解決を行うためのソフトが、CNAMEレコードを見つけた時点で、そのクエリのレコード値に再度転送するためです。

その結果、CNAMEレコード以外のレコードは無視されます。

ルートドメインで使用できない

ルートドメイン(APEXレコード)は通常、他の多くのDNSレコードを必要とします。

例えば、メール送信に必要なMXレコード、テキスト情報を含むTXTレコード、セキュリティ情報を含むSPFレコードなどです。

もしルートドメインにCNAMEレコードを設定すると、先ほどの特性上、そのドメイン名は別のドメイン名に完全にリダイレクトされるため、他のDNSレコードを設定することができません

CNAMEレコードの代替案

CNAMEレコードの制約を回避するためには、代替のDNSレコードを使用することができます。

特にALIASレコードは、CNAMEレコードの機能を持ちながら、ルートドメインでも使用可能であり、他のレコードと共存できるという利点があります。

ALIASレコード

ALIASレコード(Aレコード)は、ルートドメインに使用可能で、CNAMEレコードのように動作します

ALIASレコードは、ユーザーからのDNSクエリを受け取ると、指定された別のドメイン名のAレコードを取得し、そのIPアドレスを返します。

これにより、ルートドメインでのエイリアス設定が可能になります。

HTTPリダイレクトを使用する

CNAMEレコードの制約を回避するために、HTTPリダイレクトを使用することも有効な方法です。

特に、301リダイレクトは、異なるドメイン間のリダイレクトを実現するために広く使われます。

・301リダイレクト(永久リダイレクト)
:永久にリダイレクトされることを示します。SEOの観点から、検索エンジンはこのリダイレクトを恒久的なものとして扱い、元のURLの評価をリダイレクト先のURLに引き継ぎます。
:使用用途)サイトの恒久的な移転、新しいURL構造への変更など
Webサーバーだけでなく、CDNやラムダなどでも使用できるため、どうしてもDNSで解決できない場合におすすめです。

まとめ

この記事では、CNAMEレコードの基本的な役割、制約、そしてそれらの制約を克服する代替案について解説しました。

CNAMEレコードの特性と制約を理解し、適切な代替策を採用することで、DNS設定をより効率的に管理することができます。

CNAMEレコードの利用やトラブルシューティングに役立つ情報を提供できたなら幸いです。