仮想ネットワークは、Cloudflare アカウント内のプライベートなルーティングドメインです。Cloudflare のネットワークから到達できるプライベートリソースを定義し、環境、パートナー、アプリケーションのあいだでトラフィックを分離します。
すべての Cloudflare アカウントには、デフォルトの仮想ネットワークがあります。インフラの異なる部分のあいだでルーティングを分離したい場合は、追加の仮想ネットワークを作成できます。
- 環境の分離 — 本番ネットワークとステージングネットワークを分離します。本番の
10.0.0.1向けトラフィックは、ステージングの10.0.0.1とは別の宛先へルーティングされます。 - パートナーの分離 — 複数のパートナーを Cloudflare アカウントに接続しつつ、互いに到達できないようにします。パートナーごとに仮想ネットワークを割り当てます。
- 重複する IP 空間 — 異なるネットワークが同じ IP 範囲を使う場合(RFC 1918 アドレスでよくあります)、仮想ネットワークにより、IP アドレスだけでなくコンテキストに基づいて正しい宛先へルーティングできます。
- プライベートアプリケーションへの接続 — Cloudflare Workers または CDN を、プライベートネットワーク内のバックエンドに接続します。仮想ネットワークは、プライベート IP アドレス向けトラフィックのルーティング先を Cloudflare に伝えます。
- 公開 TCP/UDP からプライベートオリジンへ — Spectrum アプリケーション を通じて、Load Balancer なしで、プライベートバックエンドをインターネットに公開し、TCP または UDP トラフィックを受けられます。仮想ネットワークは、オリジンへのトラフィックをどのトンネルまたは WAN 接続が運ぶかを決めます。
プライベート IP アドレス向けのトラフィックが Cloudflare に入ると、Cloudflare は仮想ネットワークのルーティングテーブルでルートを検索します。仮想ネットワークが決める内容は次のとおりです。
- 到達できるプライベート宛先
- トラフィックを運ぶコネクター(Tunnel または WAN 接続)
- 重複する IP アドレスの区別方法
flowchart TD
accTitle: 仮想ネットワークのルーティング
accDescr: Cloudflare アカウントに 3 つの仮想ネットワークがあり、それぞれ独自のルーティングテーブルとコネクターを持ち、別の宛先を指します。同じ CIDR を、分離されたルーティングドメインとして各仮想ネットワークに置けます。
subgraph account ["Cloudflare アカウント"]
direction LR
subgraph vnet_default ["仮想ネットワーク: default"]
routes_d("10.0.0.0/8 via Tunnel
192.168.1.0/24 via IPsec")
routes_d --> tunnel_d(["Tunnel"])
routes_d --> ipsec_d(["IPsec"])
end
subgraph vnet_prod ["仮想ネットワーク: production"]
routes_p("10.0.0.0/8 via Tunnel")
routes_p --> tunnel_p(["Tunnel (prod)"])
end
subgraph vnet_stg ["仮想ネットワーク: staging"]
routes_s("10.0.0.0/8 via Tunnel")
routes_s --> tunnel_s(["Tunnel (stg)"])
end
end
tunnel_d --> dc_legacy("レガシー DC
10.0.0.0/8")
ipsec_d --> dc_branch("拠点 (IPsec)
192.168.1.0/24")
tunnel_p --> dc_prod("本番 DC
10.0.0.0/8")
tunnel_s --> dc_stg("ステージング DC
10.0.0.0/8")
classDef orange fill:#f48120,stroke:#d6710e,color:#fff
classDef blue fill:#4b9fd5,stroke:#3a8bc2,color:#fff
class tunnel_d,tunnel_p,tunnel_s orange
class ipsec_d blue
style vnet_default stroke:#999,stroke-width:2px,stroke-dasharray: 5 5
style vnet_prod stroke:#f48120,stroke-width:2px
style vnet_stg stroke:#f48120,stroke-width:2px
同じ CIDR(10.0.0.0/8)を各仮想ネットワークに置けます。それぞれが分離されたルーティングドメインだからです。
各仮想ネットワークは、独自のルーティングテーブルを持ちます。ある仮想ネットワークに追加したルートは、別の仮想ネットワークのルーティングテーブルには現れません。ただし、選んだ仮想ネットワークのルートに一致しないトラフィックは、WAN ルートについてデフォルト仮想ネットワークのルーティングテーブルにフォールバックすることがあります。
仮想ネットワークのルーティングテーブルへのエントリ追加は、静的ルートの設定、または BGP ピアリング(ベータ)で学習したルートで行えます。静的ルートは、すべての接続種類で利用できます。BGP ピアリングは、現在は CNI と IPsec/GRE トンネル(ベータ)で利用できます。仮想ネットワーク内でのルート優先度の詳細は、Traffic steering を参照してください。
仮想ネットワークの対応は製品により異なります。
| 製品 | 仮想ネットワークの対応 | 詳細 |
|---|---|---|
| Cloudflare Tunnel | 複数の仮想ネットワーク | トンネル設定時に、CIDR ルートを仮想ネットワークへ割り当てます |
| Cloudflare One Client | 複数の仮想ネットワーク | ユーザーはポリシーまたはクライアントの選択に基づいて仮想ネットワークに入ります |
| Cloudflare Mesh | 現在は未対応 | — |
| Cloudflare WAN | デフォルトのみ | IPsec、GRE、CNI の接続はすべて、デフォルトの仮想ネットワークを使います |
すべてのアカウントには default 仮想ネットワークがあります。ルートや接続の作成時に仮想ネットワークを指定しない場合は、デフォルトに割り当てられます。
プライベートネットワークが 1 つだけの構成では、多くの場合、デフォルトの仮想ネットワークだけで十分です。ルーティングの分離が必要なときだけ、追加の仮想ネットワークを作成してください。
エンタープライズネットワーキングの概念に詳しい場合、仮想ネットワークは VRF(Virtual Routing and Forwarding)に相当します。
- 各仮想ネットワークは、独自のルーティングテーブルを持ちます。
- ルートは仮想ネットワーク間で分離されます。
- 同じ IP プレフィックスを、競合なく複数の仮想ネットワークに置けます。
- 接続上で学習した BGP ルートは、その接続の仮想ネットワークのルーティングテーブルにだけ入ります。BGP ピアリングは、現在は IPsec/GRE トンネル(ベータ)と CNI(ベータ)で対応しています。
クラウドネットワーキングの概念に詳しい場合、仮想ネットワークは VPC(Virtual Private Cloud)に相当します。
仮想ネットワークの作成と設定は、仮想ネットワーク(トンネル設定) を参照してください。
どのルートがどの仮想ネットワークに属するかを設定するには、ルートを追加する を参照してください。
Cloudflare Virtual Network のルーティングテーブルに静的ルートを追加したり、BGP ピアリングを設定したりするには、ルートを設定する を参照してください。
- プライベートネットワーク — インフラを Cloudflare に接続します
- ルート — コネクター経由の IP およびホスト名ルートを定義します
- Traffic steering — Cloudflare Virtual Network 内のルート優先度、ECMP、BGP