Cloudflare Virtual Network 使用路由表将流量从 Cloudflare 的全球网络通过下一跳(next-hop)引导至您连接的网络。您可以通过静态路由配置或从 BGP 对等互连(BGP peering,Beta)中学习到的路由(适用于采用 Dataplane v2 的 CNI 以及 IPsec 和 GRE 隧道)向 Cloudflare Virtual Network 路由表 添加条目。
有关与以下内容相关的所有技术方面的更多信息,请参阅 流量引导(Traffic Steering):
- 路由的优先级和权重
- 流量的区域范围划分以降低延迟
- BGP 对等互连(BGP peering,Beta)
Cloudflare 虚拟网络(Virtual Network)路由表中允许使用以下 IPv4 地址范围:
- RFC 1918 地址空间,具体为
10.0.0.0/8、172.16.0.0/12和192.168.0.0/16。
当同时使用 Cloudflare WAN 和 Cloudflare Tunnel 时,在为 Cloudflare WAN 选择静态路由时,请考虑 Cloudflare Tunnel 静态路由中使用的 IP 范围。有关更多信息,请参阅 Cloudflare Tunnel。
对于 RFC 1918 之外的前缀,请联系您的 Cloudflare 客户服务经理。
- 转到 Routes(路由) 页面。
- 在 Routes(路由) 选项卡中,选择 Create route(创建路由),然后选择 WAN 作为路由类型。
-
在 Description(描述) 中为您的路由输入描述性名称。
-
在 Prefix(前缀) 中输入您的 IP 地址范围。例如,
10.10.10.100/24。 在 Tunnel/Next hop(隧道/下一跳) 中,从您在 配置隧道端点 中创建的隧道中选择一条作为路由。
-
选择路由的 Priority(优先级)。数字越低,优先级越高。
(可选)为您的路由选择 Weight(权重)。有关示例,请参阅 设置静态路由的优先级和权重。
-
(可选)如果需要将路由范围限定到特定区域,可以在 Region code(区域代码) 中进行设置。
-
(可选)我们强烈建议在添加路由之前,通过选择 Test routes(测试路由) 来测试您的路由。
-
选择 Add routes(添加路由)。
通过 API 创建一个 POST 请求以创建一个或多个静态路由。
示例:
Required API token permissions
At least one of the following token permissions is required:Magic WAN WriteMagic Transit Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/magic/routes" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"nexthop": "<IP_NEXT_HOP>",
"prefix": "<YOUR_IP_PREFIX>",
"priority": 0,
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"description": "<ROUTE_DESCRIPTION>",
"scope": {
"colo_names": [
"den01"
],
"colo_regions": [
"APAC"
]
},
"weight": 0
}'{
"errors": [
{
"code": 1000,
"message": "message"
}
],
"messages": [
{
"code": 1000,
"message": "message"
}
],
"result": {
"routes": [
{
"nexthop": "203.0.113.1",
"prefix": "192.0.2.0/24",
"priority": 0,
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"description": "New route for new prefix 203.0.113.1",
"scope": {
"colo_names": [
"den01"
],
"colo_regions": [
"APAC"
]
},
"weight": 0
}
]
},
"success": true
}- 在 Routes(路由) 选项卡中,找到要修改的路由。
- 选择其旁边的三个点 > Edit(编辑)。
- 输入更新后的路由信息。
- (可选)我们强烈建议在添加路由之前,通过选择 Test routes(测试路由) 来测试您的路由。
- 选择 Edit routes(编辑路由)。
通过 API 创建一个 PUT 请求以更新一个或多个静态路由。
示例:
Required API token permissions
At least one of the following token permissions is required:Magic WAN WriteMagic Transit Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/magic/routes/$ROUTE_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"nexthop": "<IP_NEXT_HOP>",
"prefix": "<YOUR_IP_PREFIX>",
"priority": 0,
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"description": "<ROUTE_DESCRIPTION>",
"scope": {
"colo_names": [
"den01"
],
"colo_regions": [
"APAC"
]
},
"weight": 0
}'{
"errors": [
{
"code": 1000,
"message": "message"
}
],
"messages": [
{
"code": 1000,
"message": "message"
}
],
"result": {
"modified": true,
"modified_route": {
"nexthop": "203.0.113.1",
"prefix": "192.0.2.0/24",
"priority": 0,
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"description": "New route for new prefix 203.0.113.1",
"scope": {
"colo_names": [
"den01"
],
"colo_regions": [
"APAC"
]
},
"weight": 0
}
},
"success": true
}- 在 Routes(路由) 选项卡中,找到要删除的静态路由。
- 选择其旁边的三个点 > Delete(删除)。
- 勾选复选框确认该操作,然后选择 Delete(删除)。
通过 API 创建一个 DELETE 请求以删除静态路由。
示例:
Required API token permissions
At least one of the following token permissions is required:Magic WAN WriteMagic Transit Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/magic/routes/$ROUTE_ID" \
--request DELETE \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{
"errors": [
{
"code": 1000,
"message": "message"
}
],
"messages": [
{
"code": 1000,
"message": "message"
}
],
"result": {
"deleted": true,
"deleted_route": {
"nexthop": "203.0.113.1",
"prefix": "192.0.2.0/24",
"priority": 0,
"id": "023e105f4ecef8ad9ca31a8372d0c353",
"description": "New route for new prefix 203.0.113.1",
"scope": {
"colo_names": [
"den01"
],
"colo_regions": [
"APAC"
]
},
"weight": 0
}
},
"success": true
}自动返回路由(ARR,Beta) 允许 Cloudflare 跟踪来自您已连接的 Cloudflare WAN(前称 Magic WAN)位置的网络流,从而确保返回流量被路由回接收它的连接,而不需要静态或动态路由。此功能需要新的 Unified Routing 模式(Beta)。
要启用 ARR:
- 遵循 添加隧道 信息,了解如何创建 IPsec 或 GRE 隧道。
- 在隧道的选项上,选择 Automatic return routing(自动回程路由)。
- 选择 Add tunnels(添加隧道) 以保存您的更改。
创建一个 POST 请求,以创建启用了 ARR 的 IPsec 或 GRE 隧道。例如:
Required API token permissions
At least one of the following token permissions is required:Magic WAN WriteMagic Transit Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/magic/ipsec_tunnels" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"cloudflare_endpoint": "<CLOUDFLARE_ENDPOINT>",
"interface_address": "<INTERFACE_ADDRESS>",
"name": "IPsec_1",
"customer_endpoint": "<CUSTOMER_ENDPOINT>",
"description": "Tunnel for ISP X",
"psk": "<PSK>",
"automatic_return_routing": "true"
}'使用以下 on-ramp 时可以使用 BGP 对等互连:
Cloudflare Virtual Network 路由表 由客户管理。您可以同时选择 Cloudflare 端的 ASN(自治系统号)和您客户设备的 ASN。客户设备 ASN 可以是 2 字节或 4 字节。
默认情况下,每个 BGP 对等互连会话都使用相同的 Cloudflare 端 ASN 来代表与 Cloudflare Virtual Network 路由表 的对等互连。此 ASN 称为 CF Account ASN(Cloudflare 账户 ASN),并设置为 13335。您可以将其配置为私有 2 字节 ASN(64512 到 65534 之间的任何值,例如 65000)。
设置此 ASN:
- 转到 Routes 页面。
- 选择 WAN configuration(WAN 配置)。
- 在 CF Account ASN(Cloudflare 账户 ASN) 中输入 Cloudflare 的 ASN。
- 选择 Update(更新)。
Cloudflare WAN 客户还应注意以下几点:
- 客户选择其设备 ASN,该 ASN 必须与 Cloudflare 端 ASN 不同。
- Cloudflare 端 ASN 将包含在向任何启用了 BGP 的 on-ramp(互连、IPsec 或 GRE 隧道)宣告路由的
AS_PATH中。 - 客户宣告的
AS_PATH在 on-ramp 之间是可传递的 —— 这意味着在通过 BGP 从 Cloudflare 接收到的路由的AS_PATH中,源(客户)ASN 是可见的。由于默认的 BGP 环路防范机制,路由器将拒绝在AS_PATH中包含其自身 ASN 的任何路由。例如,如果两个连接到 Cloudflare WAN 的站点都使用ASN 65000,则站点 A 将不接受来自站点 B 的路由,反之亦然,因为每个站点都在播发的AS_PATH中看到了自己的 ASN。
若要启用私有网络之间通过 Cloudflare WAN 的路由,您应该采取以下任一措施:- 为每个站点/网络分配一个唯一的 ASN,或者
- 配置您的边缘 CPE,以接受在
AS_PATH中包含其自身 ASN 的 BGP 路由。
您需要配置两个 ASN:
- 名为 CF Account ASN(Cloudflare 账户 ASN) 的 Cloudflare 账户范围的 ASN。
- 为您想要配置 BGP 的每个 on-ramp 分配一个 ASN。
如果您已经设置了 Cloudflare 账户 ASN,请跳过下面的第二和第三步。
- 转到 Routes 页面。
- 选择 WAN configuration(WAN 配置)。
- 在 CF Account ASN(Cloudflare 账户 ASN) 中输入 Cloudflare 的 ASN,然后选择 Update(更新)。
- 转到 Interconnects(互连)。
- 找到要配置 BGP 的带有 Dataplane v2 的 CNI 互连 > 选择其旁边的 三个点 > Configure BGP(配置 BGP)。
-
在 Customer device ASN 中,输入您的网络 ASN。
-
在 MD5 key 中,您可以选择输入网络的密钥。请注意,这旨在防止意外的误配置,而不是一种安全机制。
-
(可选)在 Additional Advertised prefix list 中,输入您想要与现有路由一起播发的任何其他前缀。如果您不想播发额外的路由,请将此项留空。此处配置的典型前缀包括:
- 指向
0.0.0.0/0(默认路由)的路由 —— 如果使用 Cloudflare WAN with Gateway,这将吸引所有发往互联网的流量。 - 指向
100.96.0.0/12的路由 —— 这是 Cloudflare One 客户端默认使用的 CGNAT 空间部分。
- 指向
100.64.0.0/12的路由 —— 这是 Cloudflare 源 IP 默认使用的 CGNAT 空间部分。
- 指向
-
选择 Save(保存)。
- 转到 Routes 页面。
- 选择 WAN configuration(WAN 配置)。
- 在 CF Account ASN(Cloudflare 账户 ASN) 中输入 Cloudflare 的 ASN,然后选择 Update(更新)。
- 转到 Connectors(连接器)。
- 在 IPsec/GRE tunnels(IPsec/GRE 隧道) 中,找到要配置 BGP 的隧道 > 选择其旁边的 三个点 > Configure BGP(配置 BGP)。
-
在 Customer device ASN 中,输入您的网络 ASN。
-
在 MD5 key 中,您可以选择输入网络的密钥。请注意,这旨在防止意外的误配置,而不是一种安全机制。
-
(可选)在 Additional Advertised prefix list 中,输入您想要与现有路由一起播发的任何其他前缀。如果您不想播发额外的路由,请将此项留空。此处配置的典型前缀包括:
- 指向
0.0.0.0/0(默认路由)的路由 —— 如果使用 Cloudflare WAN with Gateway,这将吸引所有发往互联网的流量。 - 指向
100.96.0.0/12的路由 —— 这是 Cloudflare One 客户端默认使用的 CGNAT 空间部分。
- 指向
100.64.0.0/12的路由 —— 这是 Cloudflare 源 IP 默认使用的 CGNAT 空间部分。
- 指向
-
选择 Save(保存)。
如果您正在为隧道(GRE 或 IPsec)配置 BGP 对等互连,您必须注意以下几点:
-
您的客户终端设备 (CPE) 必须发起 BGP 对等互连会话。Cloudflare 将不会主动发起。
-
您的 BGP 说话者(speaker)必须与隧道的 IPv4 接口地址进行对等互连。您的 CPE 可以使用任何 IPv4 地址作为其对等互连连接的本侧地址;它不需要使用来自
/31或/30接口子网的另一个地址。 -
保持时间(Hold time)必须大于 0 秒(需要 BGP
KEEPALIVE消息)。Cloudflare 建议至少为 45 秒。Cloudflare 为 GRE/IPsec 隧道播发的保持时间为 90 秒。如果您设置的值大于 90 秒,根据 BGP 协商保持时间的标准方式,协商后的保持时间将为 90 秒。 -
连接重试时间(Connect retry time)应该较低(例如,5 秒或 10 秒)。
-
您的 CPE 在一个 BGP 会话上最多可以播发 5,000 个前缀。
-
MD5 身份验证是可选的。您最多可以使用 80 个字符。支持的字符包括
a-zA-Z0-9'!@#$%^&*()+[]{}<>/.,;:_-~`= \\|
现在您已经配置了隧道和路由,下一步就是创建站点。
站点(Sites)代表数据中心、办公室或其他物理位置的本地网络,并结合了那里可用的所有 on-ramp。站点还允许您一目了然地检查 on-ramp 的状态并设置健康警报设置,以便 Cloudflare 在站点的 on-ramp 出现问题时通知您。
有关更多信息,请参阅 设置站点。