本教程介绍如何将 Cloudflare WAN(原 Magic WAN)与以下版本的 SonicWall 设备配合使用:
- 已测试硬件:
- SonicWall NSv 470
- SonicWall 3700
- 已测试软件版本:
- SonicOS 7.0.1
您可以通过 IPsec 隧道将 SonicWall 设备连接到 Cloudflare WAN。SonicWall 不支持通用路由封装 (GRE)。
注意:此图片中的标签可能反映的是之前的产品名称。
以下说明介绍如何在 SonicWall 设备上设置 IPsec 连接。我们将使用上述拓扑示例中的 IP 范围来创建所需的连接。未明确提及的设置可保持默认值。
首先在 Cloudflare 上 创建 IPsec 隧道。根据需要命名和描述隧道,并添加以下设置:
- Interface address(接口地址):输入 IPsec 隧道 Cloudflare 侧的内部隧道 IP。在本示例中,它是
10.200.1.0/31。 - Customer endpoint(客户端点):输入 SonicWall 设备的 WAN IP 地址。在我们的示例中,这是
198.51.100.2。 - Cloudflare endpoint(Cloudflare 端点):输入分配给您账户的 Cloudflare anycast IP 地址之一,可在 Leased IPs ↗ 中查看。在我们的示例中,这是
1.2.3.4。 - Pre-shared key(预共享密钥):选择 Use my own pre-shared key(使用我自己的预共享密钥) 并粘贴您自己的安全密钥。
- Interface address(接口地址):输入 IPsec 隧道 Cloudflare 侧的内部隧道 IP。在本示例中,它是
-
完成后选择 Add tunnels(添加隧道)。
-
创建隧道后,Cloudflare 仪表板将加载为您的账户设置的隧道列表。选择箭头展开刚刚创建的隧道,并检查以下设置:
- Customer endpoint(客户端点):指 VPN 策略绑定的 SonicWall WAN IP(红色)。
- Cloudflare endpoint(Cloudflare 端点):指 Cloudflare anycast IP 地址(蓝色)。
- FQDN ID(FQDN 标识):在 SonicWall 的 VPN 策略中用于本地 IKE ID 的 ID。复制并保存此 ID,在 SonicWall 上配置隧道时需要用到(绿色)。

任何通过 IPsec 隧道到达的网络都需要配置静态路由。在我们的示例中,有两个网络:172.31.3.0/24 和隧道网络 10.200.1.0/31。
创建静态路由。根据需要命名和描述路由,并添加以下设置:
- 第一条隧道:按照我们的示例,添加
10.200.1.0/31作为 Prefix(前缀),10.200.1.1作为 Tunnel/Next hop(隧道/下一跳)。 - 第二条隧道:按照我们的示例,添加
172.31.3.0/24作为 Prefix(前缀),10.200.1.1作为 Tunnel/Next hop(隧道/下一跳)。
- 第一条隧道:按照我们的示例,添加
-
完成后选择 Add routes(添加路由)。
- 前往 Network(网络) > IPsec VPN > Rules and Settings(规则和设置)。
- 选择 Add(添加)。
- 在 General(常规) > Security Policy(安全策略) 组中,添加以下设置:
- Authentication Method(身份验证方法):IKE Using Preshared Secret。
- IPsec Primary Gateway Name or Address(IPsec 主网关名称或地址):输入主网关的 Cloudflare anycast IP 地址(蓝色)。
- 在 IKE Authentication(IKE 身份验证) 组中,添加以下设置:
- Shared secret(共享密钥):粘贴您在步骤 1 中用于创建 IPsec 隧道的预共享密钥(紫色)。
- Local IKE ID(本地 IKE ID):从下拉菜单中选择 Domain name,并粘贴您在步骤 1 中创建 IPsec 隧道后保存的 FQDN ID(绿色)。
- Peer IKE ID(对端 IKE ID):从下拉菜单中选择 IPv4 Address,并输入 Cloudflare anycast IP 地址(蓝色)。

- 选择 Proposals(提议)。VPN 策略具有一定灵活性。调整这些设置以匹配您组织的首选安全策略。例如,您可以使用以下示例中的设置。
- 在 IKE (Phase 1) Proposal(IKE(阶段 1)提议) 组中,选择以下设置:
- Exchange(交换):IKEv2 Mode
- DH Group(DH 组):Group 20
- Encryption(加密):AES-256
- Authentication(身份验证):SHA256
- Life Time (seconds)(生存时间(秒)):
86400
- 在 IPsec (Phase 2) Proposal(IPsec(阶段 2)提议) 组中,添加以下设置:
- Protocol(协议):ESP
- Encryption(加密):AESGCM16-256
- Authentication(身份验证):None
- Enable Perfect Forward Secrecy(启用完美前向保密):启用
- DH Group(DH 组):Group 20
- Life Time (seconds)(生存时间(秒)):
28800
- 选择 Advanced(高级)。
- 启用 Disable IPsec Anti-Replay(禁用 IPsec 抗重放)。
- 在 VPN Policy bound to(VPN 策略绑定到) 中,从下拉菜单选择您的 WAN 接口,将其绑定到 VPN。
- 选择 Save(保存)。

SonicOS 需要 VPN 隧道接口才能通过 Cloudflare WAN 路由流量。创建接口时,使用前缀 10.200.1.1/31。这与此隧道的 Cloudflare 侧(10.200.1.0)匹配。
- 前往 Network(网络) > System(系统) > Interfaces(接口)。
- 选择 Add interface(添加接口) > VPN Tunnel Interface(VPN 隧道接口)。
- 对于 IP Address,使用
10.200.1.1。 - 启用 Ping。这是确保接口可以被 ping 以进行调试和 Cloudflare WAN 健康检查所必需的。

- 选择 Advanced(高级)。
- 启用 Enable Asymmetric Route Support(启用非对称路由支持) 选项。这是 IPsec 隧道健康检查所必需的。

- 选择 OK(确定)。
地址对象是路由策略所必需的。在我们的示例中,还有一个站点将通过 Cloudflare WAN 到达。首先,您需要为每个网络创建地址对象。然后,您需要创建一个包含所有远端网络的地址组。此地址组将在下一步中用于创建正确的路由策略。
添加地址对象:
- 选择 Object(对象) > Match Objects(匹配对象) > Addresses(地址)。
- 选择 Address Objects(地址对象) > Add(添加)。
- 输入地址对象的信息——请参阅拓扑图获取本教程使用的示例。由于地址位于 VPN 区域,请将对象的 Zone Assignment(区域分配) 设置为 VPN。
- 选择 Save(保存)。窗口将保持打开以方便输入多个条目。选择 X 将其关闭。

- 选择 Address Groups(地址组) > Add(添加) 添加新地址组。
- 为您的地址组输入 Name(名称)。
- 在左侧菜单中选择您已创建的各个网络对象,然后选择中间列中的右向箭头将其添加到组中。
- 选择 Save(保存)。

使用刚创建的地址对象或组作为目标,添加路由。
- 选择 Policy(策略) > Rules and Policies(规则和策略) > Routing Rules(路由规则)。
- 选择 Add(添加) 添加您的路由策略。
- Next Hop(下一跳) 应为之前在接口面板中创建的 VPN 隧道接口。
Cloudflare WAN 健康检查正常工作需要额外的访问规则。这将使 WAN IP 能够通过隧道接收 ICMP ping,并通过 WAN 返回。
- 选择 Policy(策略) > Rules and Policies(规则和策略)。
- 选择 Access Rules(访问规则) > Add(添加)。
- 为您的策略输入描述性名称。
- 在 Source / Destination(源/目标) > Destination > Port/Services(目标 > 端口/服务) 中,从下拉菜单选择 ICMP。
- 选择 Optional Settings(可选设置)。
- 在 Others(其他) 中,启用 Allow Management traffic(允许管理流量)。
您必须正确配置 Cloudflare WAN 健康检查。以下是设置健康检查的示例:
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/magic/ipsec_tunnels/{tunnel_id} \
--header "X-Auth-Email: <EMAIL>" \
--header "X-Auth-Key: <API_KEY>" \
--header "Content-Type: application/json" \
--data '{
"health_check": {
"direction": "bidirectional",
"enabled": true,
"type": "request",
"rate": "low"
}
}'更改配置后,健康检查可能需要一些时间才能稳定。
Cloudflare 仪表板监控您账户上所有 anycast 隧道的健康状况,这些隧道将流量从 Cloudflare 路由到您的源网络。有关更多信息,请参阅 在仪表板中检查隧道健康状况。