虚拟网络是您的 Cloudflare 账户中的私有路由域。它定义了可以从 Cloudflare 网络到达哪些私有资源,并保持不同环境、合作伙伴或应用程序之间的流量隔离。
每个 Cloudflare 账户都有一个默认的虚拟网络。您可以创建其他虚拟网络,以在基础设施的不同部分之间隔离路由。
- 环境隔离 — 保持生产环境和暂存(staging)环境网络隔离。发往生产环境中
10.0.0.1的流量路由到的目的地,与暂存环境中10.0.0.1的流量路由到的目的地不同。 - 合作伙伴隔离 — 将多个合作伙伴连接到您的 Cloudflare 账户,但不允许它们互相访问。每个合作伙伴都会获得自己的虚拟网络。
- 重叠的 IP 空间 — 当不同的网络使用相同的 IP 范围时(在 RFC 1918 地址中很常见),虚拟网络允许您根据上下文而非仅仅 IP 地址路由到正确的目的地。
- 私有应用程序连接 — 将 Cloudflare Workers 或 CDN 连接到您私有网络中的后端。虚拟网络会告知 Cloudflare 将私有 IP 地址的流量路由到何处。
- 面向私有源站的公共 TCP/UDP — 在无需负载均衡器(Load Balancer)的情况下,通过 Spectrum 应用程序将私有后端向互联网公开,以传输 TCP 或 UDP 流量。虚拟网络决定了哪个隧道或 WAN 连接将流量传输到您的源站。
当流量进入 Cloudflare 并且其目的地是私有 IP 地址时,Cloudflare 会在虚拟网络路由表中查找该路由。虚拟网络将确定:
- 哪些私有目的地是可达的。
- 哪个连接器(Tunnel 或 WAN 连接)承载流量。
- 如何消除重叠 IP 地址的歧义。
flowchart TD
accTitle: 虚拟网络路由
accDescr: 显示 Cloudflare 账户如何包含三个虚拟网络,每个网络都有自己的路由表,并且连接器指向不同的目的地。相同的 CIDR 可以作为隔离的路由域存在于每个虚拟网络中。
subgraph account ["您的 Cloudflare 账户"]
direction LR
subgraph vnet_default ["虚拟网络:default"]
routes_d("10.0.0.0/8 通过 Tunnel
192.168.1.0/24 通过 IPsec")
routes_d --> tunnel_d(["Tunnel"])
routes_d --> ipsec_d(["IPsec"])
end
subgraph vnet_prod ["虚拟网络:production"]
routes_p("10.0.0.0/8 通过 Tunnel")
routes_p --> tunnel_p(["Tunnel (prod)"])
end
subgraph vnet_stg ["虚拟网络:staging"]
routes_s("10.0.0.0/8 通过 Tunnel")
routes_s --> tunnel_s(["Tunnel (stg)"])
end
end
tunnel_d --> dc_legacy("旧版数据中心
10.0.0.0/8")
ipsec_d --> dc_branch("分支机构 (IPsec)
192.168.1.0/24")
tunnel_p --> dc_prod("生产数据中心
10.0.0.0/8")
tunnel_s --> dc_stg("暂存数据中心
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)可以存在于每个虚拟网络中,因为它们是隔离的路由域。
每个虚拟网络都维护着自己的路由表。添加到某个虚拟网络的路由不会出现在另一个虚拟网络的路由表中。然而,如果流量与所选虚拟网络中的路由不匹配,Cloudflare 可能会回退到默认虚拟网络路由表以使用 WAN 路由。
您可以通过静态路由配置或通过 BGP 对等互联(Beta)学习到的路由,向虚拟网络路由表添加条目。静态路由适用于所有连接类型。目前,可通过 CNI 和 IPsec/GRE 隧道(Beta)使用 BGP 对等互联。有关如何在虚拟网络内对路由进行优先排序的更多信息,请参阅 流量引导。
对虚拟网络的支持因产品而异:
| 产品 | 虚拟网络支持 | 详细信息 |
|---|---|---|
| Cloudflare Tunnel | 多个虚拟网络 | 配置隧道时将 CIDR 路由分配给虚拟网络 |
| Cloudflare One Client | 多个虚拟网络 | 用户根据策略或客户端选择进入特定的虚拟网络 |
| Cloudflare Mesh | 目前不支持 | — |
| Cloudflare WAN | 仅限默认 | 所有 IPsec、GRE 和 CNI 连接均使用默认的虚拟网络 |
每个账户都有一个 default 虚拟网络。如果在创建路由或连接时未指定虚拟网络,它们将被分配给默认网络。
对于大多数使用单个私有网络的部署,默认的虚拟网络已足够满足您的需求。只有在需要路由隔离时,才创建额外的虚拟网络。
如果您熟悉企业网络概念,虚拟网络类似于 VRF(虚拟路由和转发):
- 每个虚拟网络都维护着自己的路由表。
- 路由在不同的虚拟网络之间是隔离的。
- 相同的 IP 前缀可以存在于多个虚拟网络中而不会发生冲突。
- 在连接上学习到的 BGP 路由仅填充该连接的虚拟网络路由表。目前,IPsec/GRE 隧道(Beta)和 CNI(Beta)支持 BGP 对等互联。
如果您熟悉云网络概念,虚拟网络类似于 VPC(虚拟私有云)。
要创建和配置虚拟网络,请参阅 虚拟网络(隧道配置)。
要配置哪些路由属于哪个虚拟网络,请参阅 添加路由。
要在 Cloudflare 虚拟网络路由表内添加静态路由或配置 BGP 对等互联,请参阅 配置路由。