AレコードとCNAMEの違い:サイトに使うDNSレコードの選び方

AレコードはIPアドレス、CNAMEは別のホスト名を指します。ルートドメインの制約、使い分け表、サイトビルダーでの設定例をまとめました。

よくある質問

ルートドメインにCNAMEを設定できますか?

DNSの標準的なルールでは設定できません。CNAMEは同じ名前に他のレコードを共存させられず、ドメインのルートには必ずNSレコードとSOAレコードがあるためです。DNSプロバイダーによっては、ALIAS、ANAME、CNAMEフラットニングといった機能で回避できます。これらはCNAMEのように設定でき、応答はAレコードとして返されます。呼び方はプロバイダーごとに違うので、ドキュメントで確認してください。

CNAMEとAレコードでは、どちらが速いですか?

訪問者にとって、その差はたいてい体感できないほどわずかです。CNAMEの場合、リゾルバーが最初にエイリアスをたどるときだけ追加の問い合わせが1回発生し、その後はTTLに従ってキャッシュされます。速度ではなく、ホスティング先の指示と、その名前がルートドメインかどうかで選びましょう。

ホスティング先から、wwwにはCNAME、ルートドメインにはIPアドレスを案内されるのはなぜですか?

wwwはサブドメインなのでCNAMEを使えますが、ルートドメイン(apex)では使えないからです。apex用に固定IPアドレスを公開しているホストは、Aレコードに入れられる値を案内しています。ホスト名しか案内しないホストは、サブドメインにはCNAMEを、apexにはDNSプロバイダーが対応していればALIAS系のレコードを使う前提です。

同じ名前にAレコードとCNAMEを両方設定できますか?

できません。ある名前にCNAMEがあると、Aレコード、MXレコード、TXTレコードなど、他の種類のレコードは一切置けません。DNS管理画面で2つ目のレコードの保存が拒否される場合もあれば、保存できても名前解決が不安定になる場合もあります。新しい種類のレコードを追加する前に、古いレコードを削除してください。

apexのレコードを変更すると、メールに影響しますか?

ルートドメインのAレコードを変更しても、メールには影響しません。メールの配送はMXレコードで制御されているためです。危険なのは、apexにCNAMEを追加することです。メールに必要なMXレコードやTXTレコードと衝突してしまいます。サイトを移行するときは、MXレコードをそのまま残し、AレコードまたはAAAAレコードだけを変更してください。

結論: Aレコードは名前をIPv4アドレスに直接対応づけます。CNAMEは名前を別のホスト名に対応づけ、最終的なアドレスはそのホスト名側のレコードに任せます。ルートドメイン(example.com)にはAレコードを、www、shop、blogなどのサブドメインには、ホスティング先がIPではなくホスト名を案内している場合にCNAMEを使います。重要なルールは、CNAMEはドメインのルートには置けないということです。

それぞれのレコードが指すもの

Aレコード:名前からIPアドレスへ

Aレコードは「この名前のIPv4アドレスは何か」という問いに答えます。ゾーンファイルでは次のように書きます。

`` example.com. 3600 IN A 192.0.2.10 ``

このアドレス(ドキュメント用に予約された範囲のもの)が、ブラウザーの接続先サーバーです。IPv6アドレスもある場合は、AAAAレコードを並べて追加します。サーバーのアドレスが変わったときは、自分でレコードを編集する必要があります。

CNAMEレコード:名前から別の名前へ

CNAME(「正規名」を意味するcanonical name)は、「この名前は、あの別の名前の別名です」と宣言します。IPアドレスは含みません。

`` www.example.com. 3600 IN CNAME sites.hostingprovider.example. ``

リゾルバーはエイリアスを見つけると、指定先を引き直し、そこにあるAレコードまたはAAAAレコードを使います。利点は、ホスティング先がサーバーのアドレスを変えても、自分のDNSを触らずに済むことです。基本的な定義はCNAMEとはを、レコードの種類全般はDNSレコードの種類を解説をご覧ください。

apexの制約を解説

apex(ルート、ベア、ネイキッドドメインとも呼ばれます)は、何も前置きのない名前、つまりexample.comのことです。DNSのルールでは、CNAMEを持つ名前には他の種類のレコードを置けません。ところがapexには、必ず他のレコードがあります。

  • ドメインの権威サーバーを示すNSレコード
  • SOAレコード
  • 通常は、メール用のMXレコードと、所有確認やSPF用のTXTレコード

apexにCNAMEを置くと、これらすべてと衝突します。DNS管理画面によっては保存自体を拒否されます。保存できてしまう場合は、メールの配送やドメイン認証が気づかないうちに壊れることがあり、そのほうが厄介です。

サブドメインにはこの問題がありません。www.example.comには、通常その名前に他のレコードがないためです。ホスティング先がほぼ必ずwwwにCNAMEを案内するのは、これが理由です。

回避策:ALIAS、ANAME、フラットニング

多くのDNSプロバイダーは、apexでCNAMEのように動く非標準のレコードを用意しています。呼び名はさまざまで(ALIAS、ANAME、「CNAMEフラットニング」など)、プロバイダー側が指定先のホスト名を解決し、訪問者には通常のAレコードとして応答します。これらはDNSの標準ではなくプロバイダー独自の機能なので、名称も挙動も、利用できるかどうかも異なります。使う前にDNSプロバイダーのドキュメントを確認し、別のプロバイダーの管理画面に同名のレコードタイプがあると決めつけないでください。

AレコードとCNAME:どちらを使うか

状況使うもの理由
ルートドメイン(example.com)で、ホストがIPアドレスを案内しているA(IPv6を案内された場合はAAAAも)apexにはAレコードを置ける
ルートドメインで、ホストがホスト名しか案内していないDNSプロバイダーが対応していればALIAS/ANAME/フラットニング。なければDNSを移すか、ホストのネームサーバーを使う標準のCNAMEはapexでは使えない
wwwサブドメインで、ホストがホスト名を案内しているCNAMEホストのサーバーが移転しても追従できる
サブドメインで、ホストがIPアドレスを案内しているACNAMEの指定先がない
SaaSツール用のサブドメイン(help、status、shopなど)CNAME指定先はベンダーが管理する
MXやTXTも必要な名前A、AAAA、またはALIAS系。CNAMEは不可CNAMEは他のレコードと共存できない
自分で管理している別の名前に向けるCNAME更新箇所が1か所で済む
メールサービス用レコード(DKIMセレクター)メールプロバイダーが指示した場合のみCNAMEプロバイダー固有の指示に従う

メール配送については、MXレコードの仕組みとTXTレコードの役割をご覧ください。

サイトビルダーでの設定例

ほとんどのウェブサイトビルダーやホスティングは、次の2つのパターンのどちらかに当てはまります。どちらに該当するかは、管理画面に表示されます。

パターン1:ホストがIPアドレスとホスト名の両方を案内する場合

両方を案内するホストは多くあります。典型的な設定は次のとおりです。

ホスト(名前)タイプ値
@(ルート)Aホストが案内するIPアドレス
wwwCNAMEホストが案内するホスト名

ほとんどのDNS管理画面では、@がapexを意味します。ホストが表示する値をそのまま使ってください。IPアドレスは変更されることがあるため、この記事を含め、ブログ記事から写さないでください。

パターン2:ホストがホスト名しか案内しない場合

固定IPを使わないプラットフォームもあります。その場合の選択肢は3つです。

  1. wwwにCNAMEを設定し、レジストラーの転送機能でルートドメインをwwwにリダイレクトする。
  2. DNSプロバイダーが対応していれば、apexにALIAS/ANAME/フラットニングのレコードを使う。
  3. ドメインのネームサーバーを、ホストまたはapexのエイリアスに対応したDNSプロバイダーに切り替える。

選択肢1は、どのレジストラーでもリダイレクトができるため最も移行しやすい方法です。ただし、ルートドメインでアクセスした訪問者にとっては、経由が1回増えます。

手順:ドメインをサイトビルダーに向ける

  1. ホストのDNS案内を確認します。 ドメインまたは独自ドメインの設定画面で、IP、ホスト名、またはその両方のどれが案内されているかを確認します。
  2. DNS管理画面を開きます。 ネームサーバーの向き先にあたる、レジストラーまたはDNSプロバイダーの画面です。
  3. 競合するレコードを削除します。 同じ名前にある古いAレコードやCNAME(多くはレジストラーのパーキングページ用)を、先に削除する必要があります。
  4. apexのレコードを追加します。 ホストのIPを使ったAレコード、またはホストのホスト名を使ったALIAS系レコードを設定します。
  5. wwwのレコードを追加します。 ホストが案内したホスト名を指すCNAMEを設定します。
  6. MXレコードとTXTレコードはそのままにします。 メールを意図的に変更する場合を除き、触らないでください。
  7. 古いレコードのTTLが切れるまで待ち、ブラウザーでドメインを確認します。変更の1日前にTTLを短くしておくと、切り替えが早くなります。
  8. ホスト側でドメインが接続済みと表示されていることと、HTTPSが発行されていることを確認します。証明書の発行には、通常、先にDNSが正しく解決される必要があります。

トラブルシューティング・チェックリスト

  • [ ] 同じ名前にCNAMEと他のレコードが同居していない
  • [ ] apexにCNAMEがない(プロバイダー独自のALIAS系レコードは除く)
  • [ ] CNAMEの指定先が実在のホスト名で、http://のURLやパスになっていない
  • [ ] AレコードにはIPv4アドレスだけが入っている(ポート番号やhttps://は不可)
  • [ ] 古いサーバーを指す古いAAAAレコードが残っていない
  • [ ] 実際にレコードを編集した場所が、現在のネームサーバーである
  • [ ] このドメインでメールを使っている場合、MXレコードが残っている

よくある間違い

  • wwwを「直す」ためにルートへCNAMEを置く。 代わりにメールや認証用のレコードが壊れます。AレコードまたはALIASの方法を使ってください。
  • 古いIPアドレスをそのままコピーする。 CNAMEが使えるなら、ホストの変更に自動で追従できます。どうしてもAレコードを使う場合は、動かなくなったときにホストの管理画面でIPを確認し直してください。
  • URLを指定先として貼り付ける。 DNSの値はホスト名またはIPのみで、https://や末尾のパスは入れません。
  • AAAAを忘れる。 IPv6レコードが残っていると、一部の訪問者が使っていないサーバーに誘導されることがあります。

プラットフォームをまだ選んでいない場合、We.Incの無料プランでは、用意されたテンプレートから最大3サイトを公開できます。プロンプトからサイトを下書きするAIビルダーは、月額$20のStarterプランから使えます。ここから無料で始めて、管理画面の案内に従ったレコードタイプでドメインを接続してください。

無料で始める · クレジットカード不要

Umair Ali Sadaqat

We.Inc創業者

UmairはWe.Incの創業者です。AIによるウェブサイト制作、制作会社、ウェブ制作スタジオの経営について執筆しています。

素晴らしいものを作る準備はできましたか?

立ち上げ、成長、自動化のすべてを1つのプラットフォームで行う15,000+社がWe.Incを利用しています。

無料で始める

クレジットカード不要 · 営業担当に相談する

関連: ブログ|デジタルマーケティングと集客のヒント

製品

ご利用いただける方

機能

リソース

会社情報

サイトマップを見る