どちらもドメイン名のエイリアス(別名)を設定するために使用されますが、少し動作に違いがあります。
目次
CNAMEレコード
RFCで定義されている基本的なDNSレコードタイプで、以下のような特徴があります。
- 最上位ノード(Zone Apex、ネイキッドドメインと呼ばれます)に設定することができません。
- 他のレコード(TXTレコードなど)と共存できません。
- IPアドレスを返さないので、名前解決処理が複数回になります。(通常は2回だけども多段CNAMEの場合はそれ以上)
出力例
example.comとsub.example.comがあって、example.comのIPアドレスが、203.0.113.4の場合
user@server:~$ dig sub.example.com
;; QUESTION SECTION:
;sub.example.com. IN A
;; ANSWER SECTION:
sub.example.com. 1743 IN CNAME example.com.
example.com. 1743 IN A 203.0.113.4
ALIASレコード
まだRFCでも未定義な拡張DNSレコードタイプで、以下のような特徴があります。
- 最上位ノード(Zone Apex、ネイキッドドメインと呼ばれます)に設定することができます。
- 他のレコード(TXTレコードなど)と共存できます。
- DNSサーバー側の内部処理で、IPアドレスを返してくれるので名前解決処理が1回になります。
出力例
example.comとsub.example.comがあって、example.comのIPアドレスが、203.0.113.4の場合
user@server:~$ dig sub.example.com
;; QUESTION SECTION:
;sub.example.com. IN A
;; ANSWER SECTION:
sub.example.com. 1743 IN A 203.0.113.4
まとめ
元々はAWS系サービスでCNAMEレコードの制限を回避するために導入されたALIASレコード。それが、CloudFlareやさくらのクラウド(DNS)などの他社サービスでも導入が進んできているイメージです。
ALIASレコードの大きな利点は、最上位ノードに設定できることだと思います(※)が、名前解決処理の応答速度で影響がでるようなサービスを運営している場合にも良い選択肢となるかと思います。
※・・・CDNなどで最上位ノードにエイリアスを設定する必要がある場合などに使用できます。
また、類似レコードタイプとして、ANAMEレコードなんてものもあるようです。
ただ、CNAMEレコードがまったく不要かと言えばそういう訳でも無く、SPF設定などTXTレコードを複数のサブドメインで共有させたい時などは、CNAMEレコードの方が向いています。