BYOIP を使う Magic Transit のお客様は、HTTP ベースのアプリケーション向けに Cloudflare が提供する性能、信頼性、セキュリティも利用できます。サービスバインディング を使うと、BYOIP のお客様は IP アドレス単位でトラフィックを CDN パイプライン(Cache、Web Application Firewall (WAF) など)へ選択的にルーティングできます。
このガイドでは、Cloudflare API を使って Magic Transit と CDN を設定します。Spectrum パイプラインへトラフィックを選択的に送るサービスバインディングも定義できます。可能な構成の一覧とほかのガイドは スコープ を参照してください。
CDN パイプラインへ送ったトラフィックは、レイヤー 3 および 4 で、CDN パイプライン標準の DDoS 保護機能によって守られます。
-
契約に、必要な範囲の CDN が含まれていることを確認してください。次の手順でサブスクリプションに関する問題が出た場合は、担当チームに連絡してください。
-
使う IP を計画します。
Cloudflare は、サービスバインディングを 集約した CIDR ブロックで実装することを 強く 推奨します。連続していない CIDR ブロックに個別のバインディングを足すより効率的です。
例
Magic Transit で保護されているプレフィックス:
203.0.113.0/24CDN へアップグレードする IP:
203.0.113.16
203.0.113.17
203.0.113.18
203.0.113.19
203.0.113.20
203.0.113.21
203.0.113.22
203.0.113.23203.0.113.16に対して、ネットマスク/29の CDN サービスバインディングを 1 つ追加します。サービスバインディングを作成(または削除)すると、Cloudflare のグローバルネットワークへ反映されるまで 4〜6 時間 かかります。このあいだ、対象 IP アドレスのサービスは中断される可能性が高いです。
- Cloudflare アカウントにログインし、アカウント ID と 認証キーまたはトークン を取得します。API トークン を使う場合、権限に
Account-IP Prefixes-Editを含めてください。 - List Services エンドポイントへ
GETリクエストを送り、CDN サービスに紐づくidを控えます。 - List Prefixes エンドポイントを使い、設定するプレフィックス(
cidr)に紐づくidを控えます。
この時点で、例 を続けると、次のような対応表になります。
| 変数 | 説明 |
|---|---|
{service_id} |
Cloudflare 内の CDN サービスの ID です。 例: 969xxxxxxxx000xxx0000000x00001bf |
{prefix_id} |
設定対象の Magic Transit プレフィックス(203.0.113.0/24)の ID です。例: 6b25xxxxxxx000xxx0000000x0000cfc |
- 現在 Magic Transit のサービスバインディングがあり、プレフィックス全体を覆っていることを確認するには、List Service Bindings エンドポイントへ
GETリクエストを送ります。URI パスの{prefix_id}は、前の手順で取得した実際のプレフィックス ID に置き換えます。
Required API token permissions
At least one of the following token permissions is required:IP Prefixes: WriteIP Prefixes: Read
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/addressing/prefixes/$PREFIX_ID/bindings" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"- Create service binding エンドポイントに
POSTリクエストを送り、CDN にバインドする IP アドレスを指定します。必要に応じて 対応するネットワークマスク を指定します。
例の続きです。203.0.113.100/32 は、Magic Transit のプレフィックス 203.0.113.0/24 に含まれる IP アドレスです。
URI の {prefix_id} を、前の手順で取得したプレフィックス ID に置き換えます。リクエスト本文の cidr 値は、CDN で使う IP アドレスまたはサブネットに対応させます。
Required API token permissions
At least one of the following token permissions is required:IP Prefixes: Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/addressing/prefixes/$PREFIX_ID/bindings" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"cidr": "203.0.113.100/32",
"service_id": "<SERVICE_ID>"
}'レスポンス本文では、初期のプロビジョニング状態が provisioning になっている必要があります。
{
"errors": [],
"messages": [],
"success": true,
"result": {
"cidr": "203.0.113.100/32",
"id": "<SERVICE_BINDING_ID>",
"provisioning": {
"state": "provisioning"
},
"service_id": "<SERVICE_ID>",
"service_name": "<SERVICE_NAME>"
}
}サービスバインディングの状態は、List Service Bindings エンドポイントで定期的に確認できます。
IP に CDN サービスを設定したら、Address Maps で、レコードが プロキシ されているときに Cloudflare が DNS 応答で使う IP を指定できます。
スコープは次の 2 つから選べます。
- アカウントレベル: アカウント内のすべてのゾーンの、プロキシされた DNS レコードすべてに Address Map を使います。
- ゾーンレベル: ゾーン内のプロキシされた DNS レコードすべてに Address Map を使います。
-
Cloudflare ダッシュボードで Address Maps ページを開きます。
Address maps を開く ↗ -
Create an address map を選択します。
-
Address Map のスコープを選びます。
-
マッピングするゾーンと IP アドレスを追加します。
-
Address Map に名前を付けます。
-
内容を確認し、Save and Deploy を選択します。
Create Address Map エンドポイントを使います。
正しい Key / Token と権限があることを確認してください。
ダッシュボードで DNS レコードを作成する手順は次のとおりです。
-
Cloudflare ダッシュボードで DNS Records ページを開きます。
Records を開く ↗ -
Add record を選択します。
-
アドレス(
A/AAAA)の レコードタイプ を選びます。 -
必須項目を入力し、Proxy status を proxied にします。
-
Save を選択します。
API でレコードを作成するには、POST リクエスト を使います。フィールド定義は、リクエストボディ仕様のレコードタイプを選択してください。
DNS レコードのプロキシ状態と Address Map は、ホスト名へのリクエストに対する Cloudflare の権威 DNS の応答を決めます。一方、A / AAAA レコードに指定した IP アドレスは、Cloudflare が設定済みオリジンへ到達する方法 を決めます。
例
| 種類 | 名前 | IP アドレス | プロキシ状態 | TTL |
|---|---|---|---|---|
A |
www |
203.0.113.150 |
Proxied |
Auto |
この時点で、ゾーン example.com の Address Map がプロキシされたレコードに 203.0.113.100 を使うよう指定し、上記レコードが同じゾーンにある場合、次のようになります。
-
Cloudflare は DNS リクエストに
203.0.113.100で応答します。 -
Cloudflare はリクエストを CDN 経由でプロキシし、GRE または CNI でオリジンサーバー
203.0.113.150(Magic Transit で保護されたプレフィックス内)へルーティングします。 -
Magic Transit を ダイレクトサーバーリターンモデルで実装するか、Magic Transit エグレスで実装するか に応じて、オリジンサーバーは次のいずれかで Cloudflare に応答します。
- Magic Transit のダイレクトサーバーリターンモデルでは、インターネット経由で直接応答します
- Magic Transit エグレスモデルでは、Magic GRE トンネル経由で戻します
-
HTTP レスポンスが Cloudflare ネットワークからクライアント側へ出るとき、レスポンスの送信元 IP アドレスは
203.0.113.100(HTTP リクエストが最初に到着した IP アドレス)になります。
例
203.0.113.100 がオリジン IP でもある場合、DNS レコードは次のようになります。
| 種類 | 名前 | IP アドレス | プロキシ状態 | TTL |
|---|---|---|---|---|
A |
www |
203.0.113.100 |
Proxied |
Auto |
必要に応じて、ほかの機能も活用してください。たとえば次のとおりです。