定義
CNAME(Canonical Name)レコードとは、あるホスト名をIPアドレスに直接ではなく、別のホスト名にマッピングするDNSエントリです。リゾルバがCNAMEを検索すると、DNSはそのエイリアスをたどってターゲットのホスト名に到達し、そのターゲットを通常どおり解決するため、チェーンに一段階分の追加ルックアップが加わります。CNAMEは、サブドメインをマネージドサービスに向けるための標準的な方法です。例えば、www.example.comをCDNに、blog.example.comをホスティングプラットフォームに、shop.example.comをSaaSストアフロントに向ける場合などです。ターゲット側は基盤となるIPアドレスを自由に変更できるため、CNAMEはCDNやサーバーレスプラットフォームのように、多数のサーバー間でローテーションやロードバランシングを行うサービスと相性が良いのです。DNS仕様では、apexドメイン(example.com自体)にCNAMEを設定することは禁止されています。これは、apexにはMX、TXTなど、CNAMEと共存できない他のレコードタイプも必要となるためです。現在のDNSプロバイダーの多くは、apexで同様に機能するALIASレコードやANAMEレコードを提供しています。
利用方法
CNAMEレコードは、ホスト名と単一のターゲットホスト名を持ちます。ソースが照会されると、DNSはターゲット名を返し、リゾルバは今度はその名前を検索します。ターゲット自体は、最終的にAレコードまたはAAAAレコードに解決される必要があります。
重要な理由
CNAMEを使えば、基盤となるIPアドレスを知ったり管理したりすることなく、わかりやすいサブドメインをマネージドサービスに向けることができます。これは、CDNやロードバランサー、サーバーレスプラットフォームのように、サービスが時間とともに変化する多数のIPを使用する場合に不可欠です。サードパーティのサービスを自分のドメインに接続する最も安全な方法と言えます。