DNS CNAMEレコードとは?

DNS CNAMEレコードは、単一のIPアドレスを共有するドメイン名のエイリアスとして機能します。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • ドメイン検索におけるCNAMEレコードの仕組み理解する
  • CNAMEレコードとAレコードの関係を理解する

記事のリンクをコピーする

DNS CNAMEレコードとは?

「Canonical NAME(正規名)」(CNAME)レコードは、別名と「正規の」ドメインを結び付けます。CNAMEレコードは、ドメインまたはサブドメインが他のドメインのエイリアスである場合、Aレコードの代わりに使用されます。すべてのCNAMEレコードは必ずIPアドレスではなくドメイン名を指します。ヒントを元に探す宝探ゲームしを想像してみてください。それぞれのヒントが別のヒントに繋がり、最後のヒントが宝を示します。CNAMEレコードを持つドメインは、別のヒント(CNAMEレコードを持つ別のドメイン)または宝物(Aレコードを持つドメイン)に繋がるヒントのようなものです。

例えば、blog.example.comが「example.com」(「blog」抜き)という値のCNAMEレコードを持っているとします。これは、DNSサーバーがblog.example.comのDNSレコードにアクセスすると、実際にexample.comに対して別のDNS検索をトリガーして、example.comのIP アドレスがAレコードを通じて返されることを意味します。この場合、example.comがblog.example.comの正規の名前(または真の名前)であると言えます。

多くの場合、サイトにblog.example.comやshop.example.comなどのサブドメインがある場合、それらのサブドメインにはルートドメイン(example.com)を指すCNAMEレコードがあります。このため、ホストのIPアドレスが変更された場合、ルートドメインのDNS Aレコードを更新する必要があるだけで、すべてのCNAMEレコードはルートに加えられた変更を追跡します。

よく、CNAMEレコードは常に、それが指すドメインと同じWebサイトに解決する必要があると誤解されていますが、そうではありません。CNAMEレコードは、クライアントに対して、ルートドメインと同じIPアドレスを示すだけです。クライアントがそのIPアドレスにヒットしても、Webサーバーはそれに従ってURLを処理します。たとえば、blog.example.comにはexample.comを指すCNAMEがあり、クライアントをexample.comのIPアドレスにリダイレクトする場合があります。しかし、クライアントが実際にそのIPアドレスに接続すると、WebサーバーはURLを見てblog.example.comであることを確認し、ホームページではなくブログページを配信します。

CNAMEレコードの例:

blog.example.com レコードのタイプ: 値: TTL
@ CNAME はexample.com のエイリアスです 32600

この例では、blog.example.comがexample.comを示していることがわかります。それが例のAレコードに基づいていると仮定すると、最終的にIPアドレス192.0.2.1に解決されることがわかります。

レポート
2023年度GigaOm RadarのDNSセキュリティ部門
レポート
2023年第4四半期のDDoS脅威状況レポートを読む

CNAMEレコードが別のCNAMEレコードを指定することはできるか?

CNAMEレコードに別のCNAMEレコードを指定することは、ドメインを読み込む前に複数のDNSルックアップを必要とするため非効率的(ユーザーエクスペリエンスを低下させます)ですが、可能です。例えば、blog.example.comは、www.example.comのCNAMEレコードを指すCNAMEレコードを持つことができ、そのCNAMEレコードはexample.comのAレコードを指しています。

以下はblog.example.comのCNAMEです。

blog.example.com レコードのタイプ: 値: TTL
@ CNAME はexample.comのエイリアスです 32600

これは、www.example.comのCNAMEを指しています。

www.example.com レコードのタイプ: 値: TTL
@ CNAME はexample.com のエイリアスです 32600

この構成では、DNSルックアッププロセスに余分なステップが追加されるため、可能であれば避けるべきです。代わりに、blog.example.comとwww.example.comの両方のCNAMEレコードはexample.comを直接指すべきです。

高速かつセキュアなDNS
すべてのCloudflareプランに含まれる無料DNS

CNAMEレコードの使用にはある制限は?

MXレコードとNSレコードはCNAMEレコードを指すことはできず、Aレコード(IPv4の場合)または AAAAレコード(IPv6の場合)を指す必要があります。MXレコードは、メールサーバーに電子メールを送信するためのメール交換レコードです。NSレコードは「ネームサーバー」レコードで、そのドメインに対してどのDNSサーバーが権威を持っているかを示します。

MXレコードまたはNSレコードについてご覧ください。