Route53管理のDNSとZoneApexのリダイレクト設定をCloudflareに移設してみた

「developers.io」ドメインでCloudflareを利用するため、リダイレクト設定をページルールで再現、Route53のホストゾーン管理のDNSを移設を行いました。
2023.09.05

2019年よりクラスメソッドが保持している「developers.io」ドメイン。 これまでドメインレジストラ、DNSサーバは 共にAmazon Route53 を利用して、リダイレクト誘導用の環境を実現していました。

今回、このドメインを利用して Cloudflare を利用とするため、CloudFrontと S3の静的Webサイトホスティングで実現していたリダイレクトを Cloudflare の Page Rulesに移植。 Route53のホストゾーンで管理していたDNSレコードを Cloudflare DNSに 引き継ぐ切業を行う機会がありましたので、紹介させて頂きます。

概要図

変更前

変更前-構成図

変更後

変更後-構成図

事前作業

Route53 HostedZone

NSレコード設定

DNS設定の切り替え後、DNSキャッシュの保持時間を抑制するため、 「developers.io.」のNSレコード、TTLをデフォルトの172800秒(2日)から 3600(1時間)に短縮しました。

cloudflare-dns-400

ゾーン設定のエクスポート

Route53ダッシュボードはホストゾーンエクスポートをサポートしませんが、 DNS検証などのため多数存在したCNAMEレコードは「awscli」で取得、「jq」を利用してTSV形式に加工、Cloudflare DNSにインポート可能なデータを用意しました。

CNAMEレコード取得例
$ HosetdZoneId=`aws route53 list-hosted-zones | jq -r '.HostedZones[]|select(.Name == "developers.io.")|.Id'`
$ aws route53 list-resource-record-sets --hosted-zone-id "${HosetdZoneId}" | jq '.ResourceRecordSets[]|select(.Type=="CNAME")' | jq -r "[.Name, \"3600\", \"IN\", .Type , .ResourceRecords[0].Value ]|@tsv"
_XXXXXXXXXXXXXX.developers.io.        3600     IN      CNAME   _XXXXXXXXXXXXXX.acm-validations.aws.
_XXXXXXXXXXXXXX.developers.io.        3600    IN      CNAME   _XXXXXXXXXXXXXX.acm-validations.aws.

Cloudflare DNS

Cloudflare 管理画面で「Add a site」、ドメイン登録を実施しました。

cloudflare-dns-01

cloudflare-dns-02

有償提供されるCloudflareの機能は直近必要としないため、Cloudflareのプランは「Free」を利用しました。

cloudflare-dns-03

DNSレコード設定

Aレコード

Cloudflare DNSに自動反映されるレコード、リダイレクトに利用していた CloudFrontのIPアドレスを示す設定は削除。

Page Rulesを利用するため、

  • Type: A
  • Name: developers.io
  • Content: 192.0.2.1
  • Proxy Status: Proxied

としたレコードを設置しました。

cloudflare-dns-13

CNAME

予めCLIで作成したファイルをインポートしました。

cloudflare-dns-11

cloudflare-dns-12

ページルール

リダイレクトを実現するページルールを作成しました。

cloudflare-dns-504

  • URL: developers.io/*
  • 設定を選択する: URL の転送
  • ステータス コードを選択する: 301
  • 転送先 URL: https://dev.classmethod.jp/$1

従来環境(CloudFront+S3)では、以下のリダイレクトルールを利用していました。

[
    {
        "Redirect": {
            "HostName": "dev.classmethod.jp",
            "HttpRedirectCode": "301",
            "Protocol": "https"
        }
    }
]

S3のリダイレクト機能を改めて整理してみた: リダイレクトルールを使った設定

切替当日作業

Route53

Route53 ダッシュボード、登録済みドメインの管理画面を利用して、ネームサーバ(DNSサーバ)を、Route53で提供されるものから、Cloudflare指定のものに変更しました。

cloudflare-dns-502

Route53 ホストゾーンのNSレコード (developers.io.)の値も、Cloudflare指定のアドレスに変更しました。

cloudflare-dns-503

動作確認

リダイレクト(301) 動作の確認を行いました。

$ curl https://developers.io/ -v
* Connected to developers.io (172.67.222.189) port 443 (#0)

> GET / HTTP/2
> Host: developers.io

< HTTP/2 301 
 GET /articles/sunflower-furano-remotework/ HTTP/2
> Host: developers.io

< HTTP/2 301 
< location: https://dev.classmethod.jp/articles/sunflower-furano-remotework/

IPアドレスの保有者を whois コマンドで確認、Cloudflare である事を確認しました。

$ whois 172.67.222.189

NetRange:       172.64.0.0 - 172.71.255.255
CIDR:           172.64.0.0/13
NetName:        CLOUDFLARENET
NetHandle:      NET-172-64-0-0-1
Parent:         NET172 (NET-172-0-0-0-0)
NetType:        Direct Allocation
OriginAS:       AS13335
Organization:   Cloudflare, Inc. (CLOUD14)

まとめ

DNSサーバと、ページルール設定を行う事で、従来のリダイレクトを維持したまま Cloudflare の利用を開始する事が出来ました。

ドメインの一元管理を優先するため、レジストラとしてはAWS(Route53)の利用を継続する予定ですが、 卸売価格でドメインを利用できる、Cloudflare Registrarを利用する事で、「IO」ドメインの維持費を1/2に抑制可能です。

IOドメイン1年間の登録料金比較(2023年9月時点)

  • Cloudflare Registrar: 36ドル
  • Route53 レジストラ: 71ドル

今後、Cloudflareの有償プランへの切替や、継続的な利用が確定した場合には、レジストラの変更についても改めて検討したいと思います。