IBM Cloud Internet Services (CIS)を使ってみた（オーダー・初期設定）

# はじめに
Cloudflare社とのパートナーシップにより、IBM CloudからCloudflareのインターネット関連サービス（DNS/DDoS防御/WAF/グローバルロードバランシング等）をオーダーし、利用できるようになりました。IBM Cloud Internet Services (CIS)というサービス名での提供となります。


https://cloud.ibm.com/catalog/services/internet-services

https://cloud.ibm.com/docs/cis?topic=cis-about-ibm-cloud-internet-services-cis

Free Early Accessとして、2018年5月末までCISの機能を無料で利用可能でしたので、試してみました。
2018/8追記　Free Early Access期間は終了しましたが、**30日間無料トライアルが機能制限なしで利用可能**です。

# オーダー
下記のStep 1の手順となります。
https://cloud.ibm.com/docs/cis?topic=cis-getting-started

IBM Cloudカタログのネットワークカテゴリに、Internet Servicesがあるので、ここからオーダーします。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/1c15ea4f-077e-f55d-0a29-864b379f5196.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/38c62571-e2c8-a05e-9478-2e8659ebc88e.png)

2018年5月末まで、Early AccessとしてCISの機能を無料で利用可能です！
2018/8追記　Free Early Access期間は終了しましたが、**30日間無料トライアルが機能制限なしで利用可能**です。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/e6c859bc-aa27-a4fc-a792-2f5f2671272c.png)

作成を押下すると、数分のうちに、ダッシュボード上でInternet Servicesが利用可能になります。（無料のEarly Accessでは、1アカウントにつき、1つのみオーダーできます）

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/ae1fc01f-051b-e23d-84b7-1e307226757a.png)

# ドメイン追加

まず、CISに自身が保有するドメインを追加します。追加するドメインは事前にレジストラに登録して、保有しておく必要があります。

ドメイン追加の手順は下記のStep 2の内容となります。（無料のEarly Accessでは、1つのドメインのみ追加できます）
https://cloud.ibm.com/docs/cis?topic=cis-getting-started

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/9c966050-fbbf-c5dd-6f29-a15f3b981eab.png)

Step 4が終わるまで、ドメインはpendingの状態となります。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/77a37f9d-3e64-780f-6564-5959130ff484.png)

# CISのDNSに自ドメインを設定

CISのDNSに、自身のドメインのレコードを登録します。下記のStep 3(Optional)の内容となります。
https://cloud.ibm.com/docs/cis?topic=cis-getting-started

このステップは必須ではありませんが、次のStep 4でNSレコードを書き換え、ドメインの名前解決を行うDNSがCISのDNSになった際に、スムーズに引き継げるようにあらかじめCIS側のDNSにレコードを書いておく、という目的があります。

今回、オリジンは、[別の記事](https://qiita.com/y_tama/items/92eb02612fb2b9902d44)で作成したIBM Cloud Load Balancer（と、その配下の実際のウェブサーバー）としたので、CNAMEとして、ロードバランサーのFQDNを設定しました。もちろんIBM Cloud Load Balancerを使わない構成も可能で、その場合は、普通にウェブサーバーのグローバルIPをAレコードとして登録します。
CISのセキュリティ機能を使うためには、DNSレコードのPROXY設定を有効にしてください。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/5f06a4ce-05d4-bbca-8c9e-c5d5e9b039d8.png)

# レジストラのNSレコードをCISのものに変更
ドメインを登録すると、CISで使うためのNSレコードが提供されますので、自身のドメインのNSレコードとして登録します。下記のStep 4の内容となります。
https://cloud.ibm.com/docs/cis?topic=cis-getting-started

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/35d98269-f085-41a4-725b-349388b0fa69.png)

この作業は、自身のドメインを登録しているレジストラ（またはDNSプロバイダ）の管理画面での作業となります。
今回は、IBM Cloud IaaSを通して取得したドメインのため、管理ポータル画面でNSレコードを変更します。（もし外部レジストラでドメイン取得している場合は、そちらの管理画面での作業となります。）

:::note warn
2023年6月に、IBM Cloudを通して取得したドメインの管理がHoverに変更（移管）されています。
IBM Cloudを通して取得したドメインのNSレコード変更は、Hoverの管理画面でHoverの操作手順に従ってください。
ご参考
https://cloud.ibm.com/docs/dns?topic=dns-domain-name-registration-domain-transfer
https://qiita.com/6onoda/items/3b6703bf6314025eeff5

IBM Cloudの管理画面でNSレコードの変更を行う下記の画面ショットは古いですが、記録のために残しておきます。
:::

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/062b63ac-b2bb-eb97-804f-7a5cb03d9969.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/c1073c42-4b36-0d4e-79d1-73d0be45475a.png)

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/b1cf7696-99a7-a877-7ff3-4c3a5653aa64.png)

NSレコードの変更が反映されると、CIS側のドメインのステータスがPendingからActiveに変わります。
最大で24時間程度かかると書いてありましたが、今回は1時間程度で反映されました。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/441ae94b-f6ac-09df-2dd4-835479544be3.png)

この時点で、自ドメインの名前解決先はCISのIPアドレスになります。

```
$ nslookup www.tama0921.com
Server:		x.x.x.x
Address:	x.x.x.x#53

Non-authoritative answer:
Name:	www.tama0921.com
Address: 104.20.30.221
Name:	www.tama0921.com
Address: 104.20.29.221

$ 
```

上記IPアドレスのwhois情報を見ると、CloudflareのIPアドレスとして登録されています。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/4e241240-1759-a37a-12c3-91aa4bb6f1a2.png)

# ブラウザからアクセスしてみる

ブラウザからアクセスすると、特にこれまでと変わらず表示されます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/3637079d-f9e8-4d41-7da0-fa9cdf78a43b.png)

ウェブサーバーのログでX-Forwarded-Forを記録するよう設定することで、下記の様に、エンドユーザーから、Cloudflare、IBM Cloud Load Balancerを経由してアクセスが来ていることが確認できます。

>219.xx.xx.147, 103.xx.xx.239 10.xx.xx.86 - - [14/Apr/2018:13:13:44 -0500] "GET / HTTP/1.1" 304 - "http://www.tama0921.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Firefox/52.0" 

ちなみに、オリジンサーバー側の設定をミスってエラーになった時は、下記のような画面となりました。CIS（Cloudflare）までは問題なく、オリジンに問題があることが分かります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/59627/3bdf65c4-d4f9-1de4-443b-8937be2ebe43.png)

以上で、自身のドメインにCIS経由でアクセスできるようになりました。

これまで、DDoS防御やWAFの機能を自前で用意しようとすると、技術的な難易度も高く、機器のコストや設定のための工数も、高額になっていたと思います。このように非常に簡単に、自身のウェブサーバーのセキュリティを高められるのはクラウドサービスの魅力の1つと思います。

下記に、CISのTLSオプションについて書きました。
https://qiita.com/y_tama/items/f6bddda9630052902e25