2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

IBM Cloud Internet Service(CIS)でCNAME setupを試してみた

Last updated at Posted at 2022-02-24

(2023/10/26追記)
CNAME setupについては、docsにも記載が追加されています。

1. はじめに

Cloudflareにはドメインを移行する方法(Full Setup)と、CNAMEで移行する方法(CNAME Setup mode)がある。CISでも実はCNAME Setupによるドメイン作成はCLIで可能であることが分かったため、実機にて試してみた。
https://support.cloudflare.com/hc/en-us/articles/360020348832-Understanding-a-CNAME-Setup

このやり方が素晴らしいのは、

  1. NSレコードによる移行ではなく、CNAMEによる移行が可能。
  2. 移行実施前に、ドメインをActiveにすることができる。
  3. 最終的にAレコード -> CNAMEレコードに移行する前に動作確認が可能

が可能であることである。ここでは、以下の環境であることを前提とする。

  • cnamexxxx.tk: 既存DNSで管理しているドメイン
  • www.cnamexxxx.tk: 既存DNSでAレコードで管理していたが、CISにCNAMEで移行したいFQDN
  • 162.133.xx.xx: www.cnamexxxx.tkのAレコードで元々登録していたIP。
  • 104.18.xx.xxx: Edge IP

2. 既存DNSの確認

www.cnamexxxx.tkは、AレコードでIPアドレスを登録している。

image.png

$ dig +noall +ans www.cnamexxxx.tk
www.cnamexxxx.tk.	900	IN	A	162.133.xx.xx

3. CNAME Setup用のドメイン(Partial Domain)を作成

  • ibmcloud cis domain-add <ドメイン名> --type partialでドメインを作成する。
  • Verification Keyが発行されるのでメモしておく。
$ ibmcloud cis instances
Retrieving service instances for service 'internet-svcs' ...
OK
Name                    ID                                                                                                                     Location   State    Service Name
CIS-Enterprise-Usage1   crn:v1:bluemix:public:internet-svcs:global:a/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx:cf4d8b04-b49e-4bf0-a99d-9303bba2cd90::   global     active   internet-svcs

$ ibmcloud cis instance-set CIS-Enterprise-Usage1
Setting context service instance to 'CIS-Enterprise-Usage1' ...
OK
Context service instance set succeeded.

$ ibmcloud cis domain-add www.cnamexxxx.tk --type partial
Adding domain 'www.cnamexxxx.tk' for service instance 'CIS-Enterprise-Usage1' ...
OK

ID                     a679988b4c9a86688e0c8fc00b6f3e59
Created On             2022-02-21 00:59:51.187543 +0000 UTC
Modified On            2022-02-21 00:59:51.187543 +0000 UTC
Name                   www.cnamexxxx.tk
Original Registrar
Origin DNS Host
Status                 pending
Paused                 false
Original Name Server   ns04.freenom.com, ns03.freenom.com, ns02.freenom.com, ns01.freenom.com
Name Servers
Type                   partial
Verification Key       3xxxxxxx8-5xxxxxxx4
Cname Suffix           cdn.cloudflare.net

Update NS record for domain 'www.cnamexxxx.tk' to '' to make the domain active.

4. VerificationCodeの追加とドメインのActivate化

上記で作成されたVerificationCodeをcloudflare-verify.<ドメイン名>という名前でTXTレコードとして登録する。

image.png

VerificationCodeの追加の確認
$ dig +noall +ans TXT cloudflare-verify.www.cnamexxxx.tk
cloudflare-verify.www.cnamexxxx.tk. 900	IN TXT	"314446538-523399114"

これで、30分〜1時間程度待っているとCIS/CloudflareによるVerificationが行われて、ドメインのステータスがPendingからActiveになる。

Pending状態
$ ibmcloud cis domain a679988b4c9a86688e0c8fc00b6f3e59
Getting domain 'a679988b4c9a86688e0c8fc00b6f3e59' for service instance 'CIS-Enterprise-Usage1' ...
OK

ID                     a679988b4c9a86688e0c8fc00b6f3e59
Created On             2022-02-21 00:59:51.187543 +0000 UTC
Modified On            2022-02-21 00:59:58.233934 +0000 UTC
Name                   www.cnamexxxx.tk
Original Registrar
Origin DNS Host
Status                 pending
Paused                 false
Original Name Server   ns04.freenom.com, ns03.freenom.com, ns02.freenom.com, ns01.freenom.com
Name Servers
Type                   partial
Verification Key       3xxxxxxx8-5xxxxxxx4
Cname Suffix           cdn.cloudflare.net
しばらく待つとActiveになる
$ ibmcloud cis domain a679988b4c9a86688e0c8fc00b6f3e59
Getting domain 'a679988b4c9a86688e0c8fc00b6f3e59' for service instance 'CIS-Enterprise-Usage1' ...
OK

ID                     a679988b4c9a86688e0c8fc00b6f3e59
Created On             2022-02-21 00:59:51.187543 +0000 UTC
Modified On            2022-02-22 04:57:11.164254 +0000 UTC
Active On              2022-02-22 04:57:11.164254 +0000 UTC
Name                   www.cnamexxxx.tk
Original Registrar
Origin DNS Host
Status                 active
Paused                 false
Original Name Server   ns04.freenom.com, ns03.freenom.com, ns02.freenom.com, ns01.freenom.com
Name Servers
Type                   partial
Verification Key       314446538-523399114
Cname Suffix           cdn.cloudflare.net

5. CISにDNSレコードを追加

  • CISに登録できるレコードは自分自身(@。ここではwww.cnamexxxx.tkに相当)に対するDNSレコード(Aレコードなど)のみである。ただし、Aレコードの代わりにwww.cnamexxxx.tkというFQDNのGLBを作成しても問題なかった(それでも動作確認できた)。
  • ドメインがActiveなのでProxy=Enabledで作成可能。
$ ibmcloud cis dns-record-create a679988b4c9a86688e0c8fc00b6f3e59  --name "@" --type A --content 162.133.xx.xx --ttl 900 --proxied true
Creating DNS Records in domain 'a679988b4c9a86688e0c8fc00b6f3e59' for service instance 'CIS-Enterprise-Usage1' ...
OK

ID            4edfebe751aa163aab9373665c8f9cda
Created On    2022-02-21 01:31:12.513887 +0000 UTC
Modified On   2022-02-21 01:31:12.513887 +0000 UTC
Name          www.cnamexxxx.tk
Type          A
Content       162.133.xx.xx
Domain ID     a679988b4c9a86688e0c8fc00b6f3e59
Domain Name   www.cnamexxxx.tk
Proxied       true
TTL           1

6. Edge証明書の作成

ドメインがActiveなのでEdge証明書が作成可能。

$ ibmcloud cis certificates a679988b4c9a86688e0c8fc00b6f3e59
Retrieving certificates for DNS domain 'a679988b4c9a86688e0c8fc00b6f3e59' ...
No certificates exist for DNS domain 'a679988b4c9a86688e0c8fc00b6f3e59'.
OK


$ ibmcloud cis certificate-order a679988b4c9a86688e0c8fc00b6f3e59 --hostnames www.cnamexxxx.tk
Ordering certificate pack for DNS domain 'a679988b4c9a86688e0c8fc00b6f3e59' ...
OK
Certificate pack is ordered successfully.

ID                    8efd5376-00ee-4781-a9a2-bea5c9e19131
Type                  advanced
Certificates

Hosts                 www.cnamexxxx.tk
Primary certificate

7. End-to-end CAからEnd-to-end flexibleに変更

Origin証明書を作成して、Webサーバーに登録するのが一番良いのだが、今回は面倒だったので手取り早く確認するためにEdge-Origin間は自己証明書のままである。

$ ibmcloud cis tls-settings a679988b4c9a86688e0c8fc00b6f3e59
Retrieving tls settings for DNS domain 'a679988b4c9a86688e0c8fc00b6f3e59' ...

universal         true
tls_1_2_only      Off
min_tls_version   1.2
ssl               End-to-end CA signed
tls_1_3           On


$ ibmcloud cis tls-settings-update a679988b4c9a86688e0c8fc00b6f3e59 --mode end-to-end-flexible

ssl   End-to-end flexible

8. 移行前の事前テスト

ここまで、まだwww.cnamexxxx.tkは既存DNSのAレコードを使って名前解決が行われている。

既存DNSを使ってアクセス
$ dig +noall +ans www.cnamexxxx.tk
www.cnamexxxx.tk.	900	IN	A	162.133.xx.xx

$ curl -I http://www.cnamexxxx.tk
HTTP/1.1 200 OK
Date: Tue, 22 Feb 2022 05:56:45 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
Last-Modified: Tue, 01 Feb 2022 03:17:09 GMT
ETag: "153-5d6ec562aae98"
Accept-Ranges: bytes
Content-Length: 339
Content-Type: text/html; charset=UTF-8

$ curl -k -I https://www.cnamexxxx.tk
HTTP/1.1 200 OK
Date: Tue, 22 Feb 2022 05:57:16 GMT
Server: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16
Last-Modified: Tue, 01 Feb 2022 03:17:09 GMT
ETag: "153-5d6ec562aae98"
Accept-Ranges: bytes
Content-Length: 339
Content-Type: text/html; charset=UTF-8

www.cnamexxxx.tkを名前解決した時に104.18.xx.xxxが使われるようにローカル端末の/etc/hostsを編集しても良いのだが、curlには--resolveという便利なオプションがあるので今回はこちらを利用する。これによって、Edge IP経由での動作確認が可能である。

resolve指定をしてCISのEdge経由でアクセステスト。Edgeを経由していることがヘッダからわかる。
$ dig +noall +ans www.cnamexxxx.tk
www.cnamexxxx.tk.	900	IN	A	162.133.xx.xx

$ curl -I http://www.cnamexxxx.tk --resolve www.cnamexxxx.tk:80:104.18.xx.xxx
HTTP/1.1 200 OK
Date: Tue, 22 Feb 2022 05:58:07 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Last-Modified: Tue, 01 Feb 2022 03:17:09 GMT
Accept-Ranges: bytes
CF-Cache-Status: DYNAMIC
Server: cloudflare
CF-RAY: 6e15fb1a4a62342c-NRT

$ curl -I https://www.cnamexxxx.tk --resolve www.cnamexxxx.tk:443:104.18.xx.xxx
HTTP/2 200
date: Tue, 22 Feb 2022 05:58:20 GMT
content-type: text/html; charset=UTF-8
last-modified: Tue, 01 Feb 2022 03:17:09 GMT
accept-ranges: bytes
cf-cache-status: DYNAMIC
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 6e15fb6a3b5b8a86-NRT

9.上位DNSでのAレコードからCNAMEレコードへの切り替え

  • 十分動作確認ができたら、遂に既存DNSサーバーで、DNSレコードを移行する。
  • ibmcloud cis domain xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxの結果からわかるように、Cname Suffixcdn.cloudflare.netなので、今回のCNAME TARGETはwww.cnamexxxx.tk.cdn.cloudflare.netとなる。
  • よってwwwというDNSレコードに対する最終形は以下のようになる。
    • Before: Aレコード: 162.133.xx.xx
    • After: CNAMEレコード: www.cnamexxxx.tk.cdn.cloudflare.net

image.png

10.切り替え後の最終確認

$ dig +noall +ans www.cnamexxxx.tk
www.cnamexxxx.tk.	900	IN	CNAME	www.cnamexxxx.tk.cdn.cloudflare.net.
www.cnamexxxx.tk.cdn.cloudflare.net. 300 IN A	104.18.23.210
www.cnamexxxx.tk.cdn.cloudflare.net. 300 IN A	104.18.22.210

$ curl -I http://www.cnamexxxx.tk
HTTP/1.1 200 OK
Date: Tue, 22 Feb 2022 06:03:33 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Last-Modified: Tue, 01 Feb 2022 03:17:09 GMT
Accept-Ranges: bytes
CF-Cache-Status: DYNAMIC
Server: cloudflare
CF-RAY: 6e16030c6c413475-NRT


$ curl -I https://www.cnamexxxx.tk
HTTP/2 200
date: Tue, 22 Feb 2022 06:06:55 GMT
content-type: text/html; charset=UTF-8
last-modified: Tue, 01 Feb 2022 03:17:09 GMT
accept-ranges: bytes
cf-cache-status: DYNAMIC
expect-ct: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server: cloudflare
cf-ray: 6e1607fa8c408a9c-NRT
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?