DNS CNAMEレコードは、単一のIPアドレスを共有するドメイン名のエイリアスとして機能します。
この記事を読み終えると、以下のことができるようになります。
関連コンテンツ
是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!
記事のリンクをコピーする
「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に解決されることがわかります。
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レコードは特定のCNAMEレコードと同じ名前を持つことはできません。つまり、実際には、MX、TXT、A、SOAのような他の種類のDNSレコードには、ドメイン用のエイリアスのラベルを貼ることはできません。また、同じ名前を持つ他のCNAMEレコードは存在できません。
「blog.example.com」にCNAMEがあり、「example.com」をポイントしている場合、「blog.example.com」で他のタイプのレコードは存在できません。それらはすべて、「example.com」直下にある必要があります。
サムが「マーク」という仮名で記事を書いたとします。マークとサムが同一人物であるにもかかわらず、出生証明書やパスポートなどの法的文書では、彼の本名である「サム」と表記されます。DNSレコードも同様です。エイリアスドメインは実際のドメインだけをポイントすることができ、「法的文書」(他のDNSレコード)はその実際のドメイン直下にある必要があります。
ただし、CNAMEがA/AAAレコードのように機能するCNAMEのフラット化の場合は例外です実際、プロキシされたすべてのCNAMEレコードはこのように機能します。ただし、フラット化されたCNAMEレコードと同じ名前では、他のレコードは依然として許可されません。CNAMEのフラット化の詳細についてはこちらをご覧ください。
MXレコードとNSレコードはCNAMEレコードを指すことはできず、Aレコード(IPv4の場合)またはAAAAレコード(IPv6の場合)を指す必要があります。MXレコードは、メールサーバーに電子メールを送信するためのメール交換レコードです。NSレコードは「ネームサーバー」レコードで、そのドメインに対してどのDNSサーバーが権威を持っているかを示します。
前述の通り、 DNS仕様では、すでにCNAMEレコードがある名前に対して他のDNSレコードを持つことは許可されていません。
このため、本当のドメイン名の代わりにエイリアスを使用するTXTレコードのような別のタイプのレコードのクエリは、要求されたレコードの代わりにCNAMEレコードを返します。次に、リクエスタは、目的のレコードを取得するために、CNAMEがポイントするドメインにクエリを実行する必要があります。
アリスがblog.example.comのTXTレコードを表示したいのでクエリを送信する場合、TXTレコードの代わりにCNAMEレコードが返されます。次に、CNAMEレコードのターゲットにDNSクエリを送信してTXTレコードを問い合わせる必要があります。ターゲットがTXTレコードを持つ場合は、応答が得られます。これは、他の種類のDNSレコードクエリにも当てはまります。
TXTレコードの詳細をご覧ください。
利用開始
DNSについて
DNSサーバー
DNSレコード
DNS用語集
ラーニングセンターナビゲーション