本教程包含将 pfSense 防火墙通过 IPsec 隧道连接到 Cloudflare WAN(原 Magic WAN)所需的配置步骤。
| 制造商 | 固件版本 |
|---|---|
| pfSense | 24.03 |
本教程需要以下信息:
- Anycast IP 地址(由 Cloudflare 提供)
- 外部 IP 地址
- 内部 IP 地址范围
- 隧道内部
/31范围
本教程使用以下 IP 地址。这些示例将合法可路由的 IP 地址替换为 IPv4 地址块(保留用于文档,RFC 5737 ↗),位于 203.0.113.0/24 子网内。
| 隧道名称 | PF_TUNNEL_01 |
PF_TUNNEL_02 |
|---|---|---|
| 接口地址 | 10.252.2.26/31 |
10.252.2.28/31 |
| 客户端节点 | 203.0.113.254 |
203.0.113.254 |
| Cloudflare 节点 | <YOUR_ANYCAST_IP_ADDRESS_1> |
<YOUR_ANYCAST_IP_ADDRESS_2> |
| pfSense IPsec 阶段 2 本地 IP | 10.252.2.27 |
10.252.2.29 |
| pfSense IPsec 阶段 2 远端 IP | 10.252.2.26 |
10.252.2.28 |
| Cloudflare WAN 静态路由 - 前缀 | 10.1.100.0/24 |
10.1.100.0/24 |
| Cloudflare WAN 静态路由 - 下一跳 | PF_TUNNEL_01 |
PF_TUNNEL_02 |
使用 Cloudflare 仪表板或 API 配置两条 IPsec 隧道。本指南在后续步骤中将使用以下 IPsec 隧道设置。
- 按照 添加隧道的说明,使用以下选项创建所需的 IPsec 隧道:
- Tunnel name(隧道名称):
PF_TUNNEL_01 - Interface address(接口地址):
10.252.2.26/31 - Customer endpoint(客户端点):
203.0.113.254 - Cloudflare endpoint(Cloudflare 端点):输入分配给您账户的 anycast IP 地址之一,可在 Leased IPs ↗ 中查看。
- Health check rate(健康检查频率):Medium
- Health check type(运行状况检查类型):Request
- Health check direction(健康检查方向):Bidirectional
- Turn on replay protection(开启重放保护):启用
- Tunnel name(隧道名称):
- 选择 Add pre-shared key later(稍后添加预共享密钥) > Add tunnels(添加隧道)。
- 重复该过程,使用以下选项创建第二条 IPsec 隧道:
- Tunnel name(隧道名称):
PF_TUNNEL_02 - Interface address(接口地址):
10.252.2.28/31 - Customer endpoint(客户端点):
203.0.113.254 - Cloudflare endpoint(Cloudflare 端点):输入分配给您账户的第二个 anycast IP 地址。
- Health check rate(健康检查频率):Medium
- Health check type(运行状况检查类型):Request
- Health check direction(健康检查方向):Bidirectional
- Turn on replay protection(开启重放保护):启用
- Tunnel name(隧道名称):
- 选择 Add pre-shared key later(稍后添加预共享密钥) > Add tunnels(添加隧道)。
使用 Add pre-shared key later(稍后添加预共享密钥) 选项创建 IPsec 隧道后,Cloudflare 仪表板将显示警告指示符。
- 选择 Edit(编辑) 编辑每条 IPsec 隧道的属性。
- 选择 Generate a new pre-shared key(生成新的预共享密钥) > Update and generate pre-shared key(更新并生成预共享密钥)。
- 复制每条 IPsec 隧道的预共享密钥值并保存。然后选择 Done(完成)。
创建 IPsec 隧道后,Cloudflare 仪表板将在 Tunnels(隧道) 下列出这些隧道。要获取 IPsec 隧道的用户 ID:
- 前往 Connectors(连接器) 页面。
- 在 IPsec/GRE tunnels(IPsec/GRE 隧道) 选项卡中,选择 IPsec 隧道。
- 滚动至 User ID(用户 ID) 并复制该字符串。例如,
ipsec@long_string_of_letters_and_numbers。
在 pfSense 防火墙上配置 IKE 阶段 1 需要使用此用户 ID。
为上一节配置的两条 IPsec 隧道各创建一条 静态路由,使用以下设置(未提及的设置可保持默认值):
- Description(描述):
PF_TUNNEL_01 - Prefix(前缀):
10.1.100.0/24 - Tunnel/Next hop(隧道/下一跳):
PF_TUNNEL_01
- Description(描述):
PF_TUNNEL_02 - Prefix(前缀):
10.1.100.0/24 - Tunnel/Next hop(隧道/下一跳):
PF_TUNNEL_02
安装 pfSense 并启动。然后,分配并设置 LAN 和 WAN 接口及 IP 地址。例如:
- LAN:
203.0.113.254 - WAN:
<YOUR_WAN_ADDRESS>
添加一个新的 IPsec 隧道 阶段 1 条目 ↗,使用以下设置:
- General Information(常规信息)
- Description(描述):
CF1_IPsec_P1
- Description(描述):
- IKE Endpoint Configuration(IKE 端点配置)
- Key exchange version(密钥交换版本):IKE_v2
- Internet Protocol(互联网协议):IPv4
- Interface(接口):WAN
- Remote gateway(远程网关):输入 Cloudflare Anycast IP 地址。
- Phase 1 Proposal (Authentication)(阶段 1 提议(身份验证))
- Authentication method(身份验证方法):Mutual PSK
- My identifier(我的标识符):User Fully qualified domain name >
ipsec@long_string_of_letters_and_numbers
(在 Cloudflare IPsec 隧道配置 > User ID(用户 ID) 中查找此标识符) - Peer identifier(对等标识符):Peer IP Address(Cloudflare Anycast IP)
- Pre-Shared Key (PSK)(预共享密钥 (PSK)):输入来自 Cloudflare IPsec 隧道的预共享密钥。
- Phase 1 proposal (Encryption algorithm)(阶段 1 提议(加密算法))
- Encryption algorithm(加密算法):AES 256 bits
- Key length(密钥长度):256 bits
- Hash algorithm(哈希算法):SHA256
- DH key group(DH 密钥组):20
- Lifetime(生存期):
86400
添加一个新的 IPsec 隧道 阶段 2 条目 ↗,使用以下设置。创建两个独立的阶段 2 条目(一个用于隧道 1,一个用于隧道 2),根据本地和远端网络相应调整 IP 地址:
- General Information(常规信息)
- Description(描述):
CF1_IPsec_P2 - Mode(模式):Routed (VTI)(虚拟隧道接口)
- Description(描述):
- Networks(网络)
- Local Network(本地网络):Address > Cloudflare 隧道中分配的
/31的较高 IP 地址。例如,隧道 1 为10.252.2.27,隧道 2 为10.252.2.29。 - Remote Network(远程网络):Address > Cloudflare 侧
/31的较低 IP 地址。例如,隧道 1 为10.252.2.26,隧道 2 为10.252.2.28。
- Local Network(本地网络):Address > Cloudflare 隧道中分配的
- Phase 2 Proposal (SA/Key Exchange)(阶段 2 提议(SA/密钥交换))
- Protocol(协议):ESP(封装安全有效载荷)
- Encryption algorithm(加密算法):AES 256 bits
- Hash algorithm(哈希算法):SHA256
- DH key group(DH 密钥组):20
- Lifetime(生存期):
28800
应用更改。导航至 Status(状态) > IPsec 验证阶段 1 和阶段 2 均已连接。

在 Interfaces(接口) > Assignments(分配) > Add(添加) 中,创建一个新接口并分配给第一条 IPsec 隧道,使用以下设置:
- General configuration(常规配置)
- Description(描述):
CF1_IPsec_1 - MSS(MSS):
1446
- Description(描述):
- Interface Assignments(接口分配)
- WAN:添加 WAN 接口。例如,
vnet1。 - LAN:添加 LAN 接口。例如,
vnet0。 - 从上述阶段 1 添加 CF_IPsec_1 接口。
- WAN:添加 WAN 接口。例如,
选择 Save(保存) 应用更改。


在 System(系统) > Routing(路由) > Gateways(网关) 中,应该已经存在一个网关。在本示例中,它被命名为 CF1_IPSEC_1_VTIV4。

- 在 Firewall Rules(防火墙规则) > IPsec interface(IPsec 接口) 中,允许所有类型的流量。

- 导航至 Status(状态) > Gateways(网关)。
CF1_IPSEC_1_VTIV4现在应该处于在线状态。

- 在 Firewall(防火墙) > Rules(规则) > LAN 中,允许所有类型的流量。
- 展开 Advanced(高级) 部分。
- 将网关更改为
CF1_IPSEC_1_VTIV4。
