CNAME完全ガイド – ドメインの別名を設定するDNSレコード

「example.com」と「www.example.com」、どちらでアクセスしても同じWebサイトが表示されますよね。

不思議に思ったことはありませんか?

実は、この裏側ではCNAME(シーネーム)という仕組みが働いているんです。

この記事では、ドメイン名の「別名」を設定できるDNSレコード「CNAME」について、初心者の方にもわかりやすく解説していきます。Webサイト運営やドメイン管理に役立つ知識をお届けしますよ。


スポンサーリンク

CNAMEとは?ドメイン名の「別名カード」

CNAMEは「Canonical Name(正規名)」の略で、DNSレコードの一種です。

DNSレコードというのは、ドメイン名とIPアドレスなどの情報を結びつけるデータのこと。

CNAMEレコードは、あるドメイン名を別のドメイン名に紐付ける役割を持っています。

別名の仕組み

CNAMEを使うと、1つのドメイン名を別のドメイン名の「別名(エイリアス)」として設定できます。

例:
www.example.comexample.com の別名にする

こうすると、www.example.com にアクセスした人は、自動的に example.com と同じ場所に案内されるんです。

あだ名のようなもの

現実世界で例えると、「田中太郎」という本名の人が「タロー」というあだ名で呼ばれるようなものですね。

どちらで呼んでも、同じ人を指しているわけです。


なぜCNAMEが必要なのか

CNAMEがどんな問題を解決するのか見ていきましょう。

サーバー移転が簡単になる

Webサイトをホスティングしているサーバーを変更する場合を考えてみましょう。

CNAMEを使わない場合:
複数のサブドメインすべてのIPアドレスを変更する必要があります。

CNAMEを使う場合:
元のドメイン(正規名)だけを変更すれば、すべてのCNAMEが自動的に新しいサーバーを参照します。

管理が圧倒的に楽になるんですね。

サービスの統合が容易

複数のサブドメインで異なるサービスを提供している場合でも、CNAMEで一元管理できます。

例えば、ブログやショップ、サポートページなど、それぞれを別名として設定できるんです。

CDNやクラウドサービスとの連携

CDN(Content Delivery Network)やクラウドサービスを使う際、CNAMEレコードの設定が必要になることがよくあります。

サービス提供側が指定したドメイン名をCNAMEで設定することで、簡単に連携できるんですよ。


CNAMEの設定例

実際にどんな風に設定するのか見てみましょう。

基本的な設定

設定内容:

名前: www
タイプ: CNAME
値: example.com

この設定により、www.example.comexample.com を参照するようになります。

CDNサービスとの連携

設定内容:

名前: blog
タイプ: CNAME
値: cdn.cloudprovider.com

blog.example.com というサブドメインを、CDNのドメインに向けられます。

外部サービスの利用

設定内容:

名前: shop
タイプ: CNAME
値: shops.shopify.com

ECサイト構築サービスなどを使う場合、このようにCNAMEで自社ドメインを向けることができます。


AレコードとCNAMEの違い

CNAMEを理解するには、Aレコードとの違いを知ることが重要です。

Aレコード

Aレコードは、ドメイン名を直接IPアドレスに紐付けます。

例:

名前: @(またはexample.com)
タイプ: A
値: 192.0.2.1

これで、example.com が IPアドレス 192.0.2.1 のサーバーを指すようになります。

CNAMEレコード

CNAMEは、ドメイン名を別のドメイン名に紐付けます。

最終的にはAレコードでIPアドレスに解決されますが、間接的な参照になるんです。

どちらを使うべきか

Aレコードを使う場合:

  • ルートドメイン(example.com)
  • 直接IPアドレスを指定したい場合
  • シンプルな構成

CNAMEを使う場合:

  • サブドメイン(www.example.com、blog.example.comなど)
  • 外部サービスとの連携
  • サーバー移転の可能性がある場合

基本的には、サブドメインにはCNAME、ルートドメインにはAレコードを使うと覚えておけば大丈夫ですよ。


CNAMEの重要なルール

CNAMEを使う際には、いくつかの制約があります。

ルール1:ルートドメインには使えない

これが最も重要なルールです。

ルートドメインexample.com のように、サブドメインがないドメイン)には、CNAMEレコードを設定できません。

DNSの仕様上、ルートドメインにはNSレコードやSOAレコードが必須で、CNAMEと共存できないんです。

OK:

www.example.com → CNAME可能
blog.example.com → CNAME可能

NG:

example.com → CNAME不可

ルール2:他のレコードと共存できない

同じ名前に対して、CNAMEと他のレコードタイプを同時に設定できません。

NG:

www.example.com → CNAME + Aレコード(同時には設定できない)

ルール3:CNAMEのチェーンは避ける

CNAMEが別のCNAMEを指し、さらにそれが別のCNAMEを指す…といった「チェーン」は避けるべきです。

DNS解決に時間がかかり、パフォーマンスが低下するんですよ。


CNAMEの設定方法

実際にどこで設定するのか見ていきましょう。

ドメイン管理サービスでの設定

ドメインを取得したレジストラ(お名前.comやムームードメインなど)の管理画面で設定します。

一般的な手順:

  1. レジストラの管理画面にログイン
  2. 対象のドメインを選択
  3. 「DNS設定」または「DNSレコード設定」を開く
  4. 「レコード追加」をクリック
  5. タイプで「CNAME」を選択
  6. 名前(サブドメイン)と値(参照先ドメイン)を入力
  7. 保存

TTLの設定

TTL(Time To Live)は、DNSレコードがキャッシュされる時間です。

短く設定すると変更がすぐに反映されますが、DNS問い合わせが増えます。

長く設定すると反映に時間がかかりますが、効率的です。

通常は3600秒(1時間)や86400秒(24時間)に設定されることが多いですね。

反映までの時間

DNSレコードの変更は、即座には反映されません。

DNS伝播と呼ばれるプロセスにより、数分から最大48時間かかることがあります。

実際には、多くの場合1〜2時間で反映されますよ。


CNAMEの実用例

具体的な活用シーンを紹介します。

例1:wwwありとなしの統一

多くのWebサイトでは、以下のような設定をしています。

example.com → Aレコードで直接IPアドレス指定
www.example.com → CNAMEで example.com を参照

これで、どちらでアクセスしても同じサイトが表示されます。

例2:サブドメインの活用

blog.example.com → CNAME → hosting-provider.com
shop.example.com → CNAME → shopify-store.com
mail.example.com → CNAME → mail-service.com

異なるサービスを、それぞれのサブドメインで提供できるんです。

例3:負荷分散サービス

www.example.com → CNAME → lb.cloudprovider.com

クラウドサービスのロードバランサーを使う場合、CNAMEで設定することが一般的です。

例4:地域別サイト

jp.example.com → CNAME → japan-server.example.com
us.example.com → CNAME → usa-server.example.com

地域ごとに異なるサーバーを使いたい場合にも便利ですね。


CNAMEのメリット

CNAMEを使う利点をまとめました。

1. 管理の一元化

複数のサブドメインを持つ場合、元ドメインだけを変更すれば全体に反映されます。

IPアドレスの変更作業が大幅に楽になるんです。

2. 柔軟なサービス構成

外部サービスとの連携が簡単にできます。

CDN、メール配信サービス、ECプラットフォームなど、様々なサービスを統合できるんですよ。

3. 変更への対応が容易

サーバーの移転やサービスの変更があっても、CNAMEの設定を変えるだけで対応できます。

ユーザーには何の影響もありません。

4. 覚えやすいドメイン名

サービス提供側の複雑なドメイン名を、自社の分かりやすいサブドメインで提供できます。

ブランディングにも効果的ですね。


CNAMEのデメリットと注意点

一方で、注意すべき点もあります。

DNS解決の遅延

CNAMEを経由すると、DNS解決に余分なステップが必要になります。

直接Aレコードで指定する場合より、わずかに遅くなるんです。

ただし、実用上は問題にならないレベルですよ。

ルートドメインの制約

前述のとおり、ルートドメインには使えません。

この制約により、「example.com」自体をCNAMEで設定したい場合は別の方法を考える必要があります。

メールサーバーへの影響

MXレコード(メールサーバーの設定)と競合する可能性があります。

メールを使う場合は、DNS設定全体を慎重に計画する必要があるんですね。


他のDNSレコードタイプ

CNAMEと一緒に知っておきたいDNSレコードを紹介します。

MXレコード

MXレコードは、メールサーバーを指定するレコードです。

メールをどこに配送すればいいかを示します。

TXTレコード

TXTレコードは、テキスト情報を格納するレコードです。

ドメイン所有権の確認やSPF設定(メール送信認証)などに使われます。

AAAAレコード

AAAAレコードは、IPv6アドレスを指定するレコードです。

Aレコード(IPv4)の次世代版といえますね。

NSレコード

NSレコードは、ネームサーバーを指定するレコードです。

どのDNSサーバーがそのドメインを管理しているかを示します。


CNAME Flatteningとは

最近の技術として、CNAME Flatteningというものがあります。

ルートドメインでもCNAME的に使える

一部のDNSサービスプロバイダーが提供する機能で、ルートドメインでもCNAME的な設定ができます。

実際には、サーバー側でCNAMEをAレコードに変換して返す仕組みなんです。

ALIAS/AFLAMEレコード

CloudflareやAWSのRoute 53などでは、ALIASAFLAMEという独自のレコードタイプを提供しています。

これらを使えば、ルートドメインでもCNAMEのような柔軟な設定ができますよ。


トラブルシューティング

CNAMEで問題が起きたときの対処法です。

設定が反映されない

DNS伝播には時間がかかります。

24〜48時間待ってから再確認しましょう。

nslookupdig コマンドで、DNS解決を確認できます。

ループが発生している

CNAMEが別のCNAMEを指し、それが元に戻るようなループがあると、サイトにアクセスできません。

設定を見直して、ループを解消する必要があります。

SSLエラーが出る

CNAMEで別ドメインを参照している場合、SSL証明書が一致しないとエラーが出ます。

参照先のドメインに合わせたSSL証明書を設定しましょう。


まとめ:CNAMEで柔軟なドメイン管理を

CNAMEは、ドメイン管理を効率化する重要な仕組みです。

この記事のポイント:

  • CNAMEはドメイン名を別のドメイン名に紐付けるDNSレコード
  • サブドメインに対して設定できる(ルートドメインには不可)
  • Aレコードは直接IPアドレスを指定、CNAMEは別名を設定
  • サーバー移転や外部サービス連携が簡単になる
  • 他のレコードタイプと共存できない制約がある
  • DNS伝播に時間がかかることを考慮する
  • CNAME FlatteningやALIASレコードでルートドメインでも利用可能

Webサイトを運営する上で、CNAMEの理解は必須です。

特に、複数のサブドメインを使ったり、外部サービスと連携したりする場合、CNAMEを適切に活用することで管理が格段に楽になります。

最初は難しく感じるかもしれませんが、一度設定すれば、その便利さを実感できるはずですよ。

コメント

タイトルとURLをコピーしました