ZoneApexで運用しているWebサイトにCDNを導入するにはDNSサービスの切り替えが必要かも
ありふれた素朴な構成のWebサイトに対してCDNの導入を依頼されることがあるけど、DNSサービスまで話が及ぶケースがほとんどで大掛かりな作業になる
素朴な構成
Zone Apex
example.comのような、サブドメインをもたないドメイン
ネイキッドドメインともいう
1台のレンタルサーバがあって、DNSのAレコードでそれを参照するように設定されている
お名前.comなどをつかっている
これだと、DNSサービスの切り替えなしにCDNは導入できない
理由
CDNを使うにはCNAMEを設定する必要がある
コンテンツデリバリーネットワークっていうぐらいだから、サーバが複数ある
CNAMEを使って、最適なサーバのIPを返す
固定のIPなんてない
IPの設定が必要なAレコードへの設定が無理
Zone ApexにCNAMEは設定できない
RFC違反
参考RFC
RFC 1034 Section 3.6.2
RFC 2181 Section 10.1
要は、以下の仕様がバッティングするから無理
Zone ApexにはSOAやNSレコードが必ず存在
CNAMEは他のレコードと共存できない
解決方法
ALIASレコード機能を提供しているDNSサービスを使う
ALIASレコード機能
DNS側でCNAME->IPの解決をしてくれる
サービスによって呼び方は異なる
Cloudflare
CNAME Flattening
AWS Route 53
Alias Record
Akamai
Zone Apex Mapping
DNSベンダーの独自実装
使うCDNに合わせて、DNSサービスを切り替え
あくまで独自実装なので、事情はいろいろ
CNAMEをなんでも解決するDNSもあれば、自社のCNAMEしか解決しないDNSもある
AWS Route53はAWSのサービスしか無理
大手CDNベンダーはDNSも提供しているので合わせるのが無難
国内2大ドメイン取得サービスの事情
お名前.com
ALIASレコード機能はない
ムームードメイン
ALIASレコード機能はある
実際の作業
切り替え先のDNSプロバイダに既存のレコードをコピー
SOAとNSレコードを除く全レコード
TTLは短くする
60とか
コピーしたレコードの値にミスがあった場合にTTLが短いと修正がすぐ反映される
レコードの確認
新旧DNSサーバの設定値を確認
digコマンドで@を指定するとDNSサーバの指定ができる
dig @[DNSサーバのアドレス] example.com [レコードタイプ]
ドメインレジストラの管理画面でDNSを切り替え先のものに変更
例)お名前.comでドメインを買い、AWS Route53でDNSのレコードを管理する場合
ドメインレジストラ
お名前.com
DNSサービス
AWSRoute 53
注意
たいていドメインレジストラがDNSサービスも提供しているので分かりづらいが「外部のネームサーバを使う」みたいな設定をすると、外部のDNSサービスを使うことが可能
ドメインの移管ではない
ドメインの移管=ドメインレジストラの変更
あくまでDNSサービスだけの変更
お名前.comでの設定
切り替わったことを確認
digコマンドで確認
タイミングはレコード毎にまちまち
影響するサービスの確認
Webサイトにアクセスできるか
メールが正常に送受信できるか
MXレコードなど
DNSレコードを使った認証などが失敗していないか
TTLを長くする
3600とか