Cloudflare 与 Aruba 的 EdgeConnect SD-WAN 解决方案合作,为用户提供集成解决方案。EdgeConnect 设备管理与分支机构或零售场所关联的子网。EdgeConnect 设备与 Cloudflare 之间建立了 Anycast 隧道,以安全地路由流量。
本教程介绍如何针对东西向(分支机构到分支机构)和南北向(流向互联网)用例配置 EdgeConnect 设备。
在设置 EdgeConnect 与 Cloudflare 之间的连接之前,您必须具备:
- 包含 Cloudflare WAN(前称 Magic WAN)和 Secure Web Gateway 的合同。
- 已收到两个 Cloudflare 端点(Anycast IP 地址),可在租用 IP ↗ 中获取。
- 已确定用于每个隧道的私有静态 /31 IP 地址对。该 /31 IP 地址对应该来自不同的私有子网,并与每个 EdgeConnect 设备后面使用的私有子网分开。
- 本教程中使用的 EdgeConnect 设备且版本为 v9.0。
GRE 隧道配置
出于本教程的目的,该集成将引用一个具有两个分支机构(每个分支机构具有不同子网)的场景。
有 2 个分支机构,每个都拥有不同的子网。
- 东部分支机构拥有
10.3.0.0/16网络,并由 EdgeConnect 终结 Anycast GRE 隧道。 - 西部分支机构拥有
10.30.0.0/16网络,并由 EdgeConnect 终结 Anycast GRE 隧道。

注意:此图中的标签可能会反映以前的产品名称。
以下示例显示了 Orchestrator 上的 east_branch 部署。

部署截图显示了几个不同的 IP 地址和接口。从左到右:
- Next Hop 10.3.0.1 - 本例使用 Google Cloud。此 IP 定义了子网的默认网关 IP,并且是 GCP 内置的。
- IP/Mask (LAN) 10.3.0.2/24 - 这定义了 EdgeConnect 设备的 LAN0 接口 IP。
- IP/Mask (WAN) 10.2.0.2/24 - 这定义了 EdgeConnect 设备的 WAN0 接口 IP。
- Next Hop 10.2.0.1 - 本例使用 Google Cloud。此 IP 定义了子网的默认网关 IP,并且是 GCP 内置的。
IPsec 隧道配置
出于本教程的目的,该集成将引用一个具有两个分支机构(每个分支机构具有不同子网)的场景。
中部分支机构拥有 10.22.0.0/24 网络,并由 EdgeConnect 终结 Anycast IPsec 隧道。
西部分支机构拥有 10.77.0.0/24 网络,并由 EdgeConnect 终结 Anycast IPsec 隧道。

注意:此图中的标签可能会反映以前的产品名称。
以下示例显示了 Orchestrator 上的 central_branch 部署。

部署截图显示了几个不同的 IP 地址和接口。从左到右:
- Next Hop 10.22.0.1 - 本例使用 Google Cloud。此 IP 定义了子网的默认网关 IP,并且是 GCP 内置的。
- IP/Mask (LAN) 10.22.0.2/24 - 这定义了 EdgeConnect 设备的 LAN0 接口 IP。
- IP/Mask (WAN) 10.32.0.2/24 - 这定义了 EdgeConnect 设备的 WAN0 接口 IP。
- Next Hop 10.32.0.1 - 本例使用 Google Cloud。此 IP 定义了子网的默认网关 IP,并且是 GCP 内置的。
对于所有使用 Cloudflare 的 EdgeConnect 设备,修改设备以将其置于同一站点。这会禁用使用相同 WAN 接口标签的 EdgeConnect 设备之间的自动 IPsec 隧道创建。
仅当使用 Cloudflare 进行东西向流量路由时,才需要执行此步骤。
Aruba Orchestrator 的 Business Intent Overlays 可创建直观的策略,以自动识别应用流量并将其引导至 Cloudflare。本例创建了两个 Business Intent Overlay (BIO) 策略。
GRE 隧道配置
Cloudflare 的隧道健康检查是封装在 GRE 数据包中的 ping 回复数据包。源 IP 是用于建立隧道的 EdgeConnect WAN 接口,目标 IP 是 Cloudflare 服务器。这些数据包需要直接从 WAN 接口发送,而不是通过已建立的隧道。
要创建叠加策略:
- 创建一个复合应用程序,它是所有 Cloudflare 公共 IP ↗ 和 ICMP 数据包的组合。

-
创建本地分流(breakout)Business Intent Overlay (BIO) 作为第一条策略以绕过 GRE 隧道,并使用此新创建的应用程序作为匹配标准。
-
定义至少一个附加叠加策略以及您希望通过 GRE 隧道发送到 Cloudflare 的流量。
在下一步中创建的用于通过隧道发送流量的服务名称为 Cloudflare_GRE。本例使用 **Match Everything(匹配一切)**通过已建立的隧道发送所有其他流量(包括私有东西向流量,以及通过 Cloudflare 的 Secure Web Gateway 发往互联网的南北向流量)。

注意:此图中的标签可能会反映以前的产品名称。
IPsec 隧道配置
Cloudflare 的隧道健康检查是封装在 IPsec 数据包中的 ping 回复数据包。源 IP 是用于建立隧道的 EdgeConnect WAN 接口,目标 IP 是 Cloudflare 服务器。这些数据包需要直接从 WAN 接口发送,而不是通过已建立的隧道。
要创建叠加策略:
- 创建一个复合应用程序,它是所有 Cloudflare 公共 IP ↗ 和 ICMP 数据包的组合。

-
创建本地分流(breakout)Business Intent Overlay (BIO) 作为第一条策略以绕过 IPsec 隧道,并使用此新创建的应用程序作为匹配标准。
-
定义至少一个附加叠加策略以及您希望通过 IPsec 隧道发送到 Cloudflare 的流量。
在下一步中创建的用于通过隧道发送流量的服务名称为 Cloudflare_IPsec。本例使用 **Match Everything(匹配一切)**通过已建立的隧道发送所有其他流量(包括私有东西向流量,以及通过 Cloudflare 的 Secure Web Gateway 发往互联网的南北向流量)。

注意:此图中的标签可能会反映以前的产品名称。
GRE 隧道配置

注意:此图中的标签可能会反映以前的产品名称。
- 在 EdgeConnect 上使用 Cloudflare 分配的公共 Anycast IP 以及在上一步的叠加策略中使用的服务来创建隧道。
- 使用与 Cloudflare GRE 隧道端点共享的私有 IP 对来创建虚拟隧道接口 (VTI),并使透传隧道与新创建的隧道别名匹配(在我们的示例中为 CF_GRE_east)。


- 在 Cloudflare 仪表板上使用 EdgeConnect 设备的公共 IP 和与该设备共享的私有 IP 对 /31 定义 GRE 隧道。

IPsec 隧道配置

注意:此图中的标签可能会反映以前的产品名称。
有关创建 IPsec 隧道的其他信息,请参阅 IPsec 隧道的 API 文档。
X-Auth-Email:您的 Cloudflare 电子邮件 IDX-Auth-Key:在 URL 中可见 (dash.cloudflare.com/<X-Auth-Key>/....)Account key:Cloudflare 仪表板中的全局 API 令牌
- 测试创建新的 IPsec 隧道
curl "https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/ipsec_tunnels?validate_only=true" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"ipsec_tunnels": [
{
"name": "EdgeConnect_IPSEC_1",
"customer_endpoint": "35.188.72.56",
"cloudflare_endpoint": "172.64.241.205",
"interface_address": "192.168.10.11/31",
"description": "Tunnel for EdgeConnect - GCP Central"
}
]
}'- 创建新的 IPsec 隧道
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/ipsec_tunnels \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"ipsec_tunnels": [
{
"name": "EdgeConnect_IPSEC_1",
"customer_endpoint": "35.188.72.56",
"cloudflare_endpoint": "172.64.241.205",
"interface_address": "192.168.10.11/31",
"description": "Tunnel for EdgeConnect - GCP Central"
}
]
}'{
"result": {
"ipsec_tunnels": [
{
"id": "tunnel_id",
"interface_address": "192.168.10.11/31",
"created_on": "2022-04-14T19:57:43.938376Z",
"modified_on": "2022-04-14T19:57:43.938376Z",
"name": "EdgeConnect_IPSEC_1",
"cloudflare_endpoint": "172.64.241.205",
"customer_endpoint": "35.188.72.56",
"description": "Tunnel for EdgeConnect - GCP Central",
"health_check": {
"enabled": true,
"target": "35.188.72.56",
"type": "reply"
}
}
]
},
"success": true,
"errors": [],
"messages": []
}- 为隧道生成预共享密钥 (PSK)
使用步骤 2 响应中的隧道 ID。保存此步骤中生成的预共享密钥,因为您在 Orchestrator 上设置隧道时需要它。
curl --request POST \
"https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/ipsec_tunnels/{tunnel_id}/psk_generate?validate_only=true" \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>"{
"result": {
"ipsec_id": "<ipsec_id>",
"ipsec_tunnel_id": "<tunnel_id>",
"psk": "XXXXXXXXXXXXXXXXX",
"psk_metadata": {
"last_generated_on": "2022-04-14T20:05:29.756514071Z"
}
},
"success": true,
"errors": [],
"messages": []
}在 EdgeConnect 上创建 IPsec 隧道
在定义了 Business Intent Overlay 策略之后,您可以创建隧道。使用在配置叠加策略中创建的正确策略或服务。本地 IP 是 EdgeConnect 设备的本地 WAN 接口,远程 IP 是作为隧道端点分配的 Cloudflare 公共 IP。



在 EdgeConnect 设备上创建虚拟隧道接口 (VTI)

GRE 隧道配置
- 在 Cloudflare 仪表板上为连接到 EdgeConnect 设备的 LAN 子网定义静态路由。使用 EdgeConnect 隧道端点的私有 IP 对。在此示例中,流向连接到 east_branch EdgeConnect 设备的子网
10.3.0.0/16的流量的下一跳为10.40.8.10。

- 在 Orchestrator 上定义静态路由,以便 Cloudflare 可以在站点之间路由流量。本例为 west_branch 上的子网
10.30.0.0/24创建了一条路由,以通过在 EdgeConnect 设备和 Cloudflare 之间建立的 GRE 隧道进行路由。

IPsec 隧道配置

EdgeConnect 上中部分支机构的静态路由

EdgeConnect 上西部分支机构的静态路由

GRE 隧道配置
验证 Secure Web Gateway
要验证从本地子网通过 Cloudflare 的 Secure Web Gateway 的流量,请运行如本例所示的 cURL。

您可以通过 Cf-Team 响应头的存在来验证请求是否经过了 Gateway,或者通过在仪表板的 Logs > Gateway > HTTP 下查看日志来验证。

验证东西向流量
要验证东西向流量,请运行如示例所示的 traceroute。

该示例显示了 GCP East 中的一个客户端 (10.3.0.3),它可以 ping 通 GCP West 中一个客户端的私有 IP (10.30.0.4)。
traceroute 显示了从客户端 (10.3.0.3) 到以下位置的路径:
- EdgeConnect 上的 GCP East lan0 IP (
10.3.0.2) - Cloudflare 私有 GRE 端点 IP (
10.4.8.11) - West EdgeConnect 上的 GCP West lan0 IP (
10.30.0.3) - GCP West 客户端 (
10.30.0.4)
这验证了通过 Cloudflare WAN 的东西向流量。
IPsec 隧道配置
验证 Secure Web Gateway
要验证从本地子网通过 Cloudflare 的 Secure Web Gateway 的流量,请运行如本例所示的 cURL。

您可以通过 Cf-Team 响应头的存在来验证请求是否经过了 Secure Web Gateway,或者通过在仪表板的 Logs > Gateway > HTTP 下查看日志来验证。

验证东西向流量
要验证东西向流量,请运行如示例所示的 traceroute。

该示例显示了 GCP Central 中的一个客户端 (10.22.0.9),它可以 ping 通 GCP West 中一个客户端的私有 IP (10.77.0.10)。
traceroute 显示了从客户端 (10.22.0.9) 到以下位置的路径:
- EdgeConnect 上的 GCP Central lan0 IP (
10.22.0.2) - Cloudflare 私有 IPsec 端点 IP (
192.168.10.11) - GCP West EdgeConnect 私有 IPsec 端点 IP (
192.168.15.10) - GCP West 客户端 (
10.77.0.10)
这验证了通过 Cloudflare WAN 的东西向流量。
此时,GRE 或 IPsec 隧道应该已经从 EdgeConnect 设备连接到 Cloudflare 的全球网络,并且流量已被限定为使用 EdgeConnect Business Intent Overlays 通过隧道进行路由。
要开始过滤流量并收集分析数据,请参阅 Cloudflare Network Firewall 文档,以了解如何为东西向分支机构间的流量创建过滤器;如果决定将来自本地私有子网的流量通过 Cloudflare Gateway 发送到互联网,请参阅 Secure Web Gateway 文档以了解如何配置 Gateway 策略。