Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

BYOIP を Magic Transit と CDN で使う

最終更新 Markdown で表示Agent セットアップ

BYOIP を使う Magic Transit のお客様は、HTTP ベースのアプリケーション向けに Cloudflare が提供する性能、信頼性、セキュリティも利用できます。サービスバインディング を使うと、BYOIP のお客様は IP アドレス単位でトラフィックを CDN パイプライン(CacheWeb 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/24

    CDN へアップグレードする 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.23

    203.0.113.16 に対して、ネットマスク /29 の CDN サービスバインディングを 1 つ追加します。

    サービスバインディングを作成(または削除)すると、Cloudflare のグローバルネットワークへ反映されるまで 4〜6 時間 かかります。このあいだ、対象 IP アドレスのサービスは中断される可能性が高いです。

1. アカウント情報を取得する

  1. Cloudflare アカウントにログインし、アカウント ID認証キーまたはトークン を取得します。API トークン を使う場合、権限に Account - IP Prefixes - Edit を含めてください。
  2. List Services エンドポイントへ GET リクエストを送り、CDN サービスに紐づく id を控えます。
  3. List Prefixes エンドポイントを使い、設定するプレフィックス(cidr)に紐づく id を控えます。

この時点で、 を続けると、次のような対応表になります。

変数 説明
{service_id} Cloudflare 内の CDN サービスの ID です。

例: 969xxxxxxxx000xxx0000000x00001bf
{prefix_id} 設定対象の Magic Transit プレフィックス(203.0.113.0/24)の ID です。

例: 6b25xxxxxxx000xxx0000000x0000cfc
  1. 現在 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: Write
  • IP Prefixes: Read
List Service Bindingsbash
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/addressing/prefixes/$PREFIX_ID/bindings" \
	--request GET \
	--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"

2. サービスバインディングを作成する

  1. 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
Create Service Bindingbash
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 エンドポイントで定期的に確認できます。

3. Address Maps を作成する

IP に CDN サービスを設定したら、Address Maps で、レコードが プロキシ されているときに Cloudflare が DNS 応答で使う IP を指定できます。

スコープは次の 2 つから選べます。

  • アカウントレベル: アカウント内のすべてのゾーンの、プロキシされた DNS レコードすべてに Address Map を使います。
  • ゾーンレベル: ゾーン内のプロキシされた DNS レコードすべてに Address Map を使います。
  1. Cloudflare ダッシュボードで Address Maps ページを開きます。

    Address maps を開く ↗
  2. Create an address map を選択します。

  3. Address Map のスコープを選びます。

  4. マッピングするゾーンと IP アドレスを追加します。

  5. Address Map に名前を付けます。

  6. 内容を確認し、Save and Deploy を選択します。

Create Address Map エンドポイントを使います。

正しい Key / Token と権限があることを確認してください。

4. DNS レコードを作成する

ダッシュボードで DNS レコードを作成する手順は次のとおりです。

  1. Cloudflare ダッシュボードで DNS Records ページを開きます。

    Records を開く ↗
  2. Add record を選択します。

  3. アドレス(A / AAAA)の レコードタイプ を選びます。

  4. 必須項目を入力し、Proxy statusproxied にします。

  5. 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 を使うよう指定し、上記レコードが同じゾーンにある場合、次のようになります。

  1. Cloudflare は DNS リクエストに 203.0.113.100 で応答します。

  2. Cloudflare はリクエストを CDN 経由でプロキシし、GRE または CNI でオリジンサーバー 203.0.113.150(Magic Transit で保護されたプレフィックス内)へルーティングします。

  3. Magic Transit を ダイレクトサーバーリターンモデルで実装するか、Magic Transit エグレスで実装するか に応じて、オリジンサーバーは次のいずれかで Cloudflare に応答します。

    • Magic Transit のダイレクトサーバーリターンモデルでは、インターネット経由で直接応答します
    • Magic Transit エグレスモデルでは、Magic GRE トンネル経由で戻します
  4. 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

5.(任意)レイヤー 7 の機能を追加する

必要に応じて、ほかの機能も活用してください。たとえば次のとおりです。

役に立ちましたか?