1. 概要
既存でAkamaiのDNSサービス、CDN/WAFサービスを利用している100個のFQDNを、安全にCloudflareへ移行するための手順をまとめたものです。
手順の検証とか特にしてないです。Cloudflareのドキュメントをあさって、こういう風に移行すれば安全かなと考えてみたものです。
NSレコードで向き先変更すれば早い話かもしれませんが、ある程度1FQDNづつをコントロールできるように、まとめて移行するとリスクがあると思い、個別にテストしながら順に移行する方法を検討しました。またルートドメインは1つ(example.co.jp)としてそのドメインに複数のホスト(FQDN)があることを前提にしてます。
1.1 移行方式
安全性を第一優先として、以下の段階的アプローチを採用します:
- Partial Setup(CNAME方式)で段階的に検証
- 全FQDNの検証完了後、Full Setup(NS委任方式)へ変換
1.2 この方式の利点
- 段階的な移行によりリスクを最小化
- 問題発生時は即座にロールバック可能(CNAMEを戻すだけ)
- WAFルール等の設定を事前に十分検証可能
- Partial Setup時に作成した設定はFull Setup後も全て引き継がれる
1.3 前提条件
| 項目 | 要件 |
|---|---|
| Cloudflareプラン | Enterprise(Partial Setupに必要) |
| 移行対象FQDN数 | 100件 |
| DNS権威サーバー | 最終的にCloudflareへ委任 |
| 現行環境 | Akamai CDN/WAF + Akamai DNS |
2. サンプルドメイン構成
本手順書では、以下のサンプルドメインを例として使用します。
| # | FQDN | 用途 | 移行バッチ |
|---|---|---|---|
| 1 | www.example.co.jp | メインサイト | パイロット |
| 2 | api.example.co.jp | API | パイロット |
| 3 | shop.example.co.jp | ECサイト | Batch 1 |
| 4 | admin.example.co.jp | 管理画面 | Batch 1 |
| 5 | mobile.example.co.jp | モバイルサイト | Batch 1 |
| 6 | img.example.co.jp | 画像配信 | Batch 2 |
| 7 | static.example.co.jp | 静的コンテンツ | Batch 2 |
| 8 | cdn.example.co.jp | CDN配信 | Batch 2 |
| 9 | video.example.co.jp | 動画配信 | Batch 2 |
| 10 | download.example.co.jp | ダウンロード | Batch 2 |
| 11-100 | その他90件 | 各種サービス | Batch 3 |
3. Phase 1: 準備(1〜2週間)
3.1 作業一覧
| 手順 | 作業内容 | 詳細 |
|---|---|---|
| 1-1 | Cloudflareアカウント作成 | Enterpriseプラン契約 |
| 1-2 | Zone追加 | example.co.jp を追加 |
| 1-3 | SSL/TLS証明書準備 | Advanced Certificate Managerで事前発行 |
| 1-4 | WAFルール移行設計 | Akamaiルール → Cloudflare形式にマッピング |
| 1-5 | DNSレコードエクスポート | Akamai DNSからゾーンファイルを取得 |
3.2 SSL/TLS証明書について
出典: https://developers.cloudflare.com/dns/zone-setups/partial-setup/setup/
4. Phase 2: パイロット検証(1〜2週間)
4.1 作業一覧
| 手順 | 作業内容 | 詳細 |
|---|---|---|
| 2-1 | パイロット対象選定 | www.example.co.jp, api.example.co.jp の2件 |
| 2-2 | Cloudflare設定 | DNSレコード作成、WAFルール設定 |
| 2-3 | Akamai DNS変更 | CNAMEレコードをCloudflareに向ける |
| 2-4 | 動作検証 | SSL、WAF、キャッシュ、パフォーマンス確認 |
| 2-5 | 問題対応 | 問題発生時はロールバック |
4.2 Partial Setup の仕組み
出典: https://developers.cloudflare.com/dns/zone-setups/partial-setup/setup/
4.3 Akamai DNS側の設定変更
; Zone: example.co.jp
; Authoritative NS: a1-xxx.akam.net (変更なし)
; パイロット対象 → Cloudflare へ CNAME 変更
www.example.co.jp. 300 IN CNAME www.example.co.jp.cdn.cloudflare.net.
api.example.co.jp. 300 IN CNAME api.example.co.jp.cdn.cloudflare.net.
; 以下は Akamai のまま(変更なし)
shop.example.co.jp. 300 IN CNAME shop.example.co.jp.edgekey.net.
admin.example.co.jp. 300 IN CNAME admin.example.co.jp.edgekey.net.
mobile.example.co.jp. 300 IN CNAME mobile.example.co.jp.edgekey.net.
img.example.co.jp. 300 IN CNAME img.example.co.jp.edgekey.net.
static.example.co.jp. 300 IN CNAME static.example.co.jp.edgekey.net.
cdn.example.co.jp. 300 IN CNAME cdn.example.co.jp.edgekey.net.
video.example.co.jp. 300 IN CNAME video.example.co.jp.edgekey.net.
download.example.co.jp. 300 IN CNAME download.example.co.jp.edgekey.net.
; ... その他も Akamai のまま
4.4 検証項目チェックリスト
- SSL/TLS証明書が正しく適用されている
- WAFルールが期待通りに動作している
- キャッシュが正しく機能している
- レスポンスタイムが許容範囲内である
- エラーログに異常がない
4.5 ロールバック手順
復旧時間: 即時(DNS TTL依存、通常5〜10分)
5. Phase 3: 段階的拡大(2〜3週間)
5.1 バッチ計画
| バッチ | 対象FQDN | 件数 | 期間 |
|---|---|---|---|
| Batch 1 | shop, admin, mobile, img, static | 5件 | 1週間 |
| Batch 2 | cdn, video, download + 7件 | 10件 | 1週間 |
| Batch 3 | 残り全て | 20件 | 1週間 |
5.2 Phase 3 完了時のDNS設定
; Zone: example.co.jp
; Authoritative NS: a1-xxx.akam.net (まだ Akamai)
; 全100件が Cloudflare へ CNAME 変更済み
www.example.co.jp. 300 IN CNAME www.example.co.jp.cdn.cloudflare.net.
api.example.co.jp. 300 IN CNAME api.example.co.jp.cdn.cloudflare.net.
shop.example.co.jp. 300 IN CNAME shop.example.co.jp.cdn.cloudflare.net.
admin.example.co.jp. 300 IN CNAME admin.example.co.jp.cdn.cloudflare.net.
mobile.example.co.jp. 300 IN CNAME mobile.example.co.jp.cdn.cloudflare.net.
img.example.co.jp. 300 IN CNAME img.example.co.jp.cdn.cloudflare.net.
static.example.co.jp. 300 IN CNAME static.example.co.jp.cdn.cloudflare.net.
cdn.example.co.jp. 300 IN CNAME cdn.example.co.jp.cdn.cloudflare.net.
video.example.co.jp. 300 IN CNAME video.example.co.jp.cdn.cloudflare.net.
download.example.co.jp. 300 IN CNAME download.example.co.jp.cdn.cloudflare.net.
; ... その他も全て cdn.cloudflare.net を参照
・DNS権威サーバー: まだ Akamai
・CDN/WAF: 全て Cloudflare が処理
・Akamai の役割: DNS のみ
6. Phase 4: Full Setup変換(1週間)
6.1 変換手順
| 手順 | 作業内容 | 備考 |
|---|---|---|
| 4-1 | SSL証明書確認 | ステータスが「Active」であることを確認 |
| 4-2 | DNSレコード検証 | Cloudflare上の全レコードを確認 |
| 4-3 | DNSSEC無効化 | Akamai側で無効化し、TTL満了まで待機(24〜48時間) |
| 4-4 | NSレコード変更 | ドメインレジストラでCloudflareのNSに変更 |
| 4-5 | Zone Active確認 | Cloudflareダッシュボードで確認 |
| 4-6 | DNSSEC再有効化 | Cloudflare側で有効化 |
| 4-7 | 移行完了 | 監視期間を設けて安定稼働を確認 |
6.2 DNSSEC無効化の重要性
6.3 Phase 4 完了時のDNS設定
; Zone: example.co.jp
; Authoritative NS: xxx.ns.cloudflare.com (Cloudflare に移管完了)
; Cloudflare Dashboard上の設定(Proxy: ON)
; 実際のDNS応答では Cloudflare Edge IP (104.26.x.x) が返される
www.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
api.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
shop.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
admin.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
mobile.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
img.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
static.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
cdn.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
video.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
download.example.co.jp. 300 IN A 192.0.2.100 ; Proxy: ON
; ... その他も同様
7. ロールバック計画
| フェーズ | ロールバック方法 | 復旧時間目安 |
|---|---|---|
| Phase 2-3(Partial Setup中) | Akamai DNS側でCNAMEを元のedgekey.netに戻す | 即時(5〜10分) |
| Phase 4(Full Setup変換後) | レジストラでNSをAkamaiに戻す | 24〜48時間 |
・SSL/TLS証明書エラーが解消しない
・WAFが正常に動作せず、攻撃をブロックできない
・オリジンサーバーへの接続が不安定
・パフォーマンスが著しく低下
8. スケジュール例
| 期間 | フェーズ | 作業内容 |
|---|---|---|
| Week 1-2 | Phase 1: 準備 | アカウント作成、SSL証明書、WAFルール設計 |
| Week 3-4 | Phase 2: パイロット | 2件のFQDNで検証 |
| Week 5 | Phase 3: Batch 1 | 5件追加(計7件) |
| Week 6 | Phase 3: Batch 2 | 10件追加(計17件) |
| Week 7 | Phase 3: Batch 3 | 83件追加(全100件完了) |
| Week 8 | Phase 4: Full Setup | NS委任、DNSSEC設定 |
| Week 9-10 | 運用安定化 | 監視、最適化 |
9. チェックリスト
移行前
- Cloudflare Enterpriseプラン契約完了
- SSL/TLS証明書の事前発行完了
- WAFルールマッピング完了
- DNSレコードのエクスポート完了
- ロールバック手順の確認・承認
移行中
- パイロットFQDNの動作確認完了
- 全FQDNのPartial Setup移行完了
- DNSSEC無効化・TTL待機完了
- NSレコード変更完了
移行完了後
- Zone Activeステータス確認
- DNSSEC再有効化完了
- 全FQDNの動作確認完了
- 監視アラート設定完了
10. 参考情報
- Partial (CNAME) Setup: https://developers.cloudflare.com/dns/zone-setups/partial-setup/
- Convert Partial to Full: https://developers.cloudflare.com/dns/zone-setups/conversions/convert-partial-to-full/
- DNS Setup Conversions: https://developers.cloudflare.com/dns/zone-setups/conversions/
- WAF Managed Rules: https://developers.cloudflare.com/waf/managed-rules/
- Advanced Certificate Manager: https://developers.cloudflare.com/ssl/edge-certificates/advanced-certificate-manager/
# 各フェーズのDNS名前解決フロー
移行前: Akamai 環境での名前解決
| # | Phase 1: 移行前のDNSリクエストフロー |
|---|---|
| 1 |
User → DNS Resolver 「www.example.co.jp の IP アドレスを教えて」 |
| 2 |
DNS Resolver → Akamai DNS(権威サーバー) 「www.example.co.jp のレコードは?」 |
| 3 |
Akamai DNS ←応答www.example.co.jp. IN CNAME www.example.co.jp.edgekey.net.
|
| 4 |
DNS Resolver → Akamai Edge DNS 「www.example.co.jp.edgekey.net の IP は?」 |
| 5 |
Akamai Edge DNS ←応答www.example.co.jp.edgekey.net. IN A 203.0.113.10 ※応答IPはAkamai Edge IP |
| 6 |
DNS Resolver → User 「IPアドレスは 203.0.113.10 です」 |
| 7 |
User → Akamai Edge (203.0.113.10) HTTPS リクエスト送信 |
| 8 |
Akamai Edge WAF検査 → CDNキャッシュ確認 → キャッシュミス時はOriginへ |
| 9 |
Akamai Edge → Origin Server (192.0.2.100) オリジンへリクエスト転送 |
| 10 |
Origin Server → Akamai Edge → User レスポンス返却 |
Phase 2-3: Partial Setup での名前解決
| # | Phase 2-3: Partial Setup での名前解決 リクエスト(処理) |
|---|---|
| 1 |
User → DNS Resolver 「"www.example.co.jp" の IP アドレスを教えて」 |
| 2 |
DNS Resolver → Akamai DNS(権威サーバー) 「"www.example.co.jp" のレコードは?」 ※権威DNSはまだ Akamai |
| 3 |
Akamai DNS ←応答 www.example.co.jp. IN CNAME www.example.co.jp.cdn.cloudflare.net. ※CNAME先が Cloudflare に変更されている |
| 4 |
DNS Resolver → Cloudflare DNS 「"www.example.co.jp.cdn.cloudflare.net" の IP は?」 |
| 5 |
Cloudflare DNS ←応答www.example.co.jp.cdn.cloudflare.net. IN A 104.26.10.100 ※応答IPは Cloudflare Edge IP |
| 6 |
DNS Resolver → User 「IPアドレスは 104.26.10.100 です」 |
| 7 |
User → Cloudflare Edge (104.26.10.100) ユーザがHTTPS リクエスト送信 |
| 8 |
Cloudflare Edge WAF検査 → CDNキャッシュ確認 → キャッシュミス時はOriginへ |
| 9 |
Cloudflare Edge → Origin Server (192.0.2.100) オリジンへリクエスト転送 |
| 10 |
Origin Server → Cloudflare Edge レスポンス返却 |
| 11 |
Cloudflare Edge → User レスポンス返却 |
Phase 4: Full Setup での名前解決
| # | Phase 2-3: Partial Setup での名前解決 リクエスト(処理) |
|---|---|
| 1 |
User → DNS Resolver 「www.example.co.jp の IP アドレスを教えて」 |
| 2 |
DNS Resolver → Cloudflare DNS(権威サーバー) 「www.example.co.jp のレコードは?」 ※ 権威DNSが Cloudflare に移管済み |
| 3 |
Cloudflare DNS ←応答www.example.co.jp. IN A 104.26.10.100※応答IPはCloudflare Edge IP ※ Dashboard上は「A 192.0.2.100 (Proxy: ON)」と設定 ※ 実際の応答は Cloudflare Edge IP が返される |
| 4 |
DNS Resolver → User 「IPアドレスは 104.26.10.100 です」 ※ CNAME解決が不要になり、1ステップ短縮 |
| 5 |
User → Cloudflare Edge (104.26.10.100) HTTPS リクエスト送信 |
| 6 |
Cloudflare Edge WAF検査 → CDNキャッシュ確認 → キャッシュミス時はOriginへ ※ WAF/Cache設定は Phase 2-3 から引き継がれる |
| 7 |
Cloudflare Edge → Origin Server (192.0.2.100) オリジンへリクエスト転送 |
| 8 |
Origin Server → Cloudflare Edge レスポンス返却 |
| 9 |
Cloudflare Edge → User レスポンス返却 |
#補足:Cloudflare WAFルールについて
CloudflareのWAFは、ドメイン(ゾーン)レベルのWAFと、アカウントレベルのWAFがありますので、複数のゾーンをCloudflare WAFで管理する場合の共通WAFルールなどはアカウントレベルで設定することで管理を簡素化できる場合がある。
アカウントレベルのウェブアプリケーションファイアウォール(WAF)設定では、一度設定を定義して、アカウント内の複数のエンタープライズゾーンに適用できます