CNAMEレコードとは?
CNAMEレコードは、あるホスト名を別の正規名(canonical name)のエイリアスにし、ターゲットのAおよびAAAAレコードがアドレスの解決に使われます。CDNやSaaSプロバイダーを指すサブドメインで一般的で、相手のIPアドレスを追わずにそのインフラに追従できます。プロバイダーがIPを変えても、CNAMEは自動的に機能し続けます。
CNAMEエイリアスがアドレスに解決される仕組み
CNAMEはIPを格納せず、あるホスト名を別のホスト名に向けます。リゾルバーがCNAMEに当たると、ターゲット名で検索を再開し、そのAまたはAAAAレコードをたどって最終的なアドレスに到達します。例えば、shop.example.com CNAME mystore.shopify.com は、shop.example.comへのリクエストがShopifyのホスト名を通じて解決されることを意味します。この間接参照こそ、CDNやSaaSプラットフォームがCNAMEターゲットを渡す理由です。基盤となるIPを自由に変えられ、あなたのサブドメインはあなた側で編集なしに追従します。
CNAME結果の読み解き方
CNAMEの結果は、エイリアスのホスト名と、それが指す正規ターゲットを示します。www.example.com CNAME example.com や blog.example.com CNAME hosted.ghost.io のようにです。最終的なIPを見るには連鎖をたどります。ターゲット自身のAおよびAAAAレコードがアドレスを解決します。CNAMEがそれ自体CNAMEを持つターゲットを指す場合、リゾルバーは連鎖をたどりますが、長い連鎖はルックアップと遅延を増やします。レコードのないホスト名を指すCNAMEは壊れており、解決に失敗します。
よくあるCNAMEの間違いと制約
最も重要なルールは、ルートドメイン(example.com)にCNAMEを置けないことです。頂点(apex)は必須のNSおよびSOAレコードと共存しなければならず、CNAMEは他のレコードと名前を共有できないからです。代わりに、頂点ではAレコードか、プロバイダーのALIAS/ANAME機能を使ってください。また、すでにA、MX、TXTレコードを持つホスト名にCNAMEを追加することもできません。よくある失敗は、そこでサービスを有効化する前にCNAMEをSaaSターゲットに向けることで、解決不能なままになります。