はじめに
これまでの社会人人生でなんと2度ネイキッドドメインに対してCDN化をするということを経験したりしてちょっと大変だったり悩ましいシーンなどがあったためここでアウトプットして成仏させていく。
ネイキッドドメインの悩み
ネイキッドドメインとは
- ネイキッドドメイン(Zone Apexとも呼ぶ)
- 例:
example.com
- 例:
- サブドメイン
- 例:
www.example.com
- 例:
厳密にはサブドメインのように見えてもZone Apexであることもある。
例えばexample.com
ゾーン内で1.example.com
というレコードに対してNS委任を行い、委任された環境で1.example.com
ゾーンを作った場合は1.example.com
がZone Apex。
つまり権威DNSの設定情報(Zone)と同じレコードがApex(頂点)という扱いになる。
ネイキッドドメインの良さ(個人的感覚)
分かりやすくそのサービスを象徴しているので、かっこいい!
- 長らくネイキッドドメインのサービスを運用しているが本当にこれ以外に思いつかなかったりする
ネイキッドドメインのCDN化が結構大変
- サイトのCDN化の方法として一般的なのが対象サイトのレコードをCDN環境のFQDNにCNAMEすること
- しかしCNAMEには制約が存在しておりCNAMEレコードは他のレコードと同居ができない(RFC 1912)
- Zone Apexにはその他NSレコードやSOAレコードが存在しており、モロにこの制約に引っかかってしまう
- この問題を回避するために各CDN提供社が手法を用意している、いくつか参考例を記載する
ベンダー | 製品 | 手法 | 考慮ポイント |
---|---|---|---|
AWS | Route53 | Aliasレコード | ・AWSの特定サービスに対してのみネイキッドドメインだったとしてもエイリアスレコードで対応可能(参考) |
Akamai | Edge DNS | Zone Apex Mapping(ZAM) | ・AkamaiのEdge CDN環境に対してのみネイキッドドメインだったとしてもZAMで対応可能 |
色々 | 色々 | IP AnyCast | ・Aレコードとして払い出されたIP AnyCastを設定する ・EDNS Client Subnet(ECS)に対応していないDNSサーバーだと挙動がおかしかったりする ・非対応な場合にクライアントの所在地ではなくDNS問い合わせを行ってきた端末に最も近い環境を応答してしまい遅延に繋がる可能性がある ・プライバシーの観点からECSを有効化していないパブリックDNSサーバーも多々存在する |
- IP AnyCastは一見便利そうだがECSの観点など考慮ポイントが多々ある、それ以外の手法は基本的に使いたいCDNサービスを提供するベンダーの権威DNSへの移行もセットで考えなくてはいけなくなるため導入ハードルが一気に上がる
- DNSのサービスは可用性が高いものが多いためそこまで意識する必要がないかもしれないが各社の独自ロジックを使ってしまうと異なるサービスへのZONE転送などができなくなり冗長構成を取りづらかったりする
まとめ
- ドメイン設計は将来を見越して計画的にやろう