Zone Apex (Naked Domain) CDN


Zone APEXとは?

(DNS)ゾーンAPEX(エイペックス)とは、以下のようにサブドメインを含まないドメイン名を指します:

  • example.jp (not www.example.jp)
  • example.com  (not www.example.com)

“APEX”とは”頂点”を意味し、”ゾーンAPEX”=”ゾーンの頂点”=”サブドメインを含まない、ドメインのもっとも短い表記”を意味します。また、別名としては以下のようなものがあります:

  • Apex Domain(アペックス・ドメイン)
    • “APEXドメイン”=”ドメインの頂点”という意味で同様に使われます
  • Naked Domain (ネイキッド・ドメイン), Bare Domain(ベア・ドメイン)
    • 余計なものがないという意味で裸を意味する”ネイキッド”もしくは”ベア”が使われます
  • Root Domain(ルート・ドメイン)
    • 大本という意味のRoot(根)を使ったルート・ドメインを”ゾーンAPEX”の意味で使うことがあります。

また、Apex(Root)レコードとは、以下のようなゾーンAPEXに対するDNS定義のことです:

  • example.com 1800 A 192.168.0.10

紛らわしい用語として以下のものがあります:

  • トップレベルドメイン(TLD)
    • .jpや.comなどの一番上(トップレベル)の部分を意味します。

そして、Zone APEXは、従来、メールアドレス等で使用され、WWWサイトではあまり使われませんでした。しかし、最近ではサイト表記を短くするためにZone APEXでWWWサイトを運用することが増えています。

Zone APEX CName

ここで、Zone APEXの大きな制限としてCNameが使えないという事があります。これはRFC1912 (Common DNS Operational and Configuration Errors)の2.4 章CNAME recrodにある以下の規定によります:

  • CNAMEレコードは他のデータと共存できない(A CNAME record is not allowed to coexist with any other data)

具体的には、DNSドメインの設定では、最低でもNS(ネームサーバ)レコードの指定が必要です。つまり、Zone APEXには以下のようなNSレコード(権威DNSサーバ)の定義が必須となります

  • IN NS ns.example.jp

一方、以下のようなCNAME定義をZone APEXに指定すると、

  • IN CNAME example.jp.cdnext.jp

RFC1912の規定によりNSレコードが存在できなくなり、そのドメインは使用できない(権威DNSサーバを定義できない)ことになります。つまり、RFC1912の規定は、Zone APEXにCNAMEを設定すると、MXが指定できずメールが届かないというものではなく、ドメイン自体がInternetで存在し得ないことを意味しています。

MX Domain CNAME

Zone APEXと同様に、MX設定を行っているサブドメイン(例:mail.example.jp)についても、CNAMEを設定することはできません。

RFC1912の影響

RFC1912はInformationalであり、強制力はありません。しかし、いくつかの具体的な悪影響が報告されています

  • Microsoft Exchangeにおけるメール配送

また、規定に反する設定は未知の問題を発生させる可能性があり、一般的な商用サイトでの使用は推奨されません。

Zone APEX / MX Domain CDN

CDNでは、WWWサイトとCDNを、以下のようにCNameにより結び付けています:

  • www.example.jp -(CNAME)-> www.example.jp.cdnext.jp

一方、Zone APEXやMXが設定されたサブドメインでは前述のようにCNAMEが使用できないため、CNAME以外を使用したサイトとCDNの結びつけが必要になります。

  • example.jp -(何らかの方法)->CNAME化

これにはいくつかの方法があります:

GSLBへのドメイン登録

CDN事業者が運用しているGSLB(広域分散装置)にドメイン(example.jp)を登録する方法です。この方法では、ドメインに関する他の情報(ネームサーバ、メールサーバ情報等)もCDN事業者に登録する必要があります。つまり、この方法は、DNSについてもCDN事業者に依存する使い方になります。また、対応状況は、CDN事業者により異なります:

  • 対応していない
  • 対応している(DNS操作についてはメールベースの設定依頼)
  • 対応している(DNS操作についてもUIを提供しており、NSやMXレコードの編集も自分で可能)

リダイレクト(ドメイン転送)

Zone Apexサイト(example.jp)やMXドメインサイト(mail.example.jp)について、www.example.jp(これはCDNで配信)等へリダイレクトさせる方法です。

単純な方法としては、実サーバ(オリジンサイト)の利用があります。もしくは、以下のようなDNS関連サービス(ドメイン登録販売、DNSホスティング)会社は、Zone Apexサイトに対するリダイレクトサービスも使用できます(ドメイン登録販売会社のドメイン転送サービスは多くの場合無料です):

さらに、Amazon S3などを含むWWWホスティングサービスでも任意のサイトに対するリダイレクトサービスを行っています。ただし、これらのリダイレクトサービスを使う際には、パフォーマンス上限に注意する必要があります。例えば、S3の場合、800リクエスト/秒が上限の目安になります(リクエスト率およびリクエストパフォーマンスに関する留意事項)

また、リダイレクトについては、301と302がありますが、301(恒久)リダイレクトを利用すれば、ブラウザはリダイレクト情報をキャッシュし、2回目以降のアクセスについてオリジンサイトへアクセスしなくなます(Zone Apexサイトの負荷を下げることが出来ます)。

CNAME Flattening

Flatteningは(コンピュータ用語では)展開を意味します。つまり、CNAME Flatteningとは、「Zone APEX等への設定としてはCNAMEを登録するが、IPアドレスを返す権威DNSサービス」と定義されます。権威DNSサーバの実装としては、次の図のようになります:

  1. Zone APEX等に対するDNSクエリーを受けとる
  2. CNAMEに対するAレコードを検索する
  3. その結果(IPアドレス)を受け取る
  4. IPアドレスをクライアントに返す

CNAME-flattening

注意点として、CDNでは、地理分散のためにクライアントのIPアドレスを元に、CNAMEに対するIPアドレスを返します。しかし、Flatteningを使用した場合、CDNは、権威DNSサービスのIPアドレスをベースにCNAMEに対するIPアドレスを決定することになり、地理分散の精度が落ちます。

Flatteningの実装としては、以下のようなものがあります:

  • CloudFlare
    • 無料CDNとして有名な会社ですが、無料DNSサービスとして(CloudFlare CDNとは関係なしに)使用できます。
  • Gehirn DNS
    • 有料ですが安価なサービスです。
  • Route53
    • AWSのインスタンスのみに使用できます。