跳转到内容
搜索文档

pfSense

最后更新 查看 MarkdownAgent 设置

本教程包含将 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

1. 配置 Cloudflare WAN IPsec 隧道

使用 Cloudflare 仪表板或 API 配置两条 IPsec 隧道。本指南在后续步骤中将使用以下 IPsec 隧道设置。

添加 IPsec 隧道

  1. 按照 添加隧道的说明,使用以下选项创建所需的 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(开启重放保护):启用
  2. 选择 Add pre-shared key later(稍后添加预共享密钥) > Add tunnels(添加隧道)
  3. 重复该过程,使用以下选项创建第二条 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(开启重放保护):启用
  4. 选择 Add pre-shared key later(稍后添加预共享密钥) > Add tunnels(添加隧道)

生成预共享密钥

使用 Add pre-shared key later(稍后添加预共享密钥) 选项创建 IPsec 隧道后,Cloudflare 仪表板将显示警告指示符。

  1. 选择 Edit(编辑) 编辑每条 IPsec 隧道的属性。
  2. 选择 Generate a new pre-shared key(生成新的预共享密钥) > Update and generate pre-shared key(更新并生成预共享密钥)
  3. 复制每条 IPsec 隧道的预共享密钥值并保存。然后选择 Done(完成)

IPsec 标识符 - 用户 ID

创建 IPsec 隧道后,Cloudflare 仪表板将在 Tunnels(隧道) 下列出这些隧道。要获取 IPsec 隧道的用户 ID:

  1. 前往 Connectors(连接器) 页面。
Go to Connectors ↗
  1. IPsec/GRE tunnels(IPsec/GRE 隧道) 选项卡中,选择 IPsec 隧道。
  2. 滚动至 User ID(用户 ID) 并复制该字符串。例如,ipsec@long_string_of_letters_and_numbers

在 pfSense 防火墙上配置 IKE 阶段 1 需要使用此用户 ID。

2. 创建 Cloudflare WAN 静态路由

为上一节配置的两条 IPsec 隧道各创建一条 静态路由,使用以下设置(未提及的设置可保持默认值):

隧道 01

  • Description(描述)PF_TUNNEL_01
  • Prefix(前缀)10.1.100.0/24
  • Tunnel/Next hop(隧道/下一跳)PF_TUNNEL_01

隧道 02

  • Description(描述)PF_TUNNEL_02
  • Prefix(前缀)10.1.100.0/24
  • Tunnel/Next hop(隧道/下一跳)PF_TUNNEL_02

3. 配置 pfSense 防火墙

安装 pfSense 并启动。然后,分配并设置 LAN 和 WAN 接口及 IP 地址。例如:

  • LAN203.0.113.254
  • WAN<YOUR_WAN_ADDRESS>

配置 IPsec 阶段 1

添加一个新的 IPsec 隧道 阶段 1 条目,使用以下设置:

  • General Information(常规信息)
    • Description(描述)CF1_IPsec_P1
  • 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

添加一个新的 IPsec 隧道 阶段 2 条目,使用以下设置。创建两个独立的阶段 2 条目(一个用于隧道 1,一个用于隧道 2),根据本地和远端网络相应调整 IP 地址:

  • General Information(常规信息)
    • Description(描述)CF1_IPsec_P2
    • Mode(模式)Routed (VTI)(虚拟隧道接口)
  • 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
  • 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 均已连接。

pfSense IPsec 概览

接口分配

Interfaces(接口) > Assignments(分配) > Add(添加) 中,创建一个新接口并分配给第一条 IPsec 隧道,使用以下设置:

  • General configuration(常规配置)
    • Description(描述)CF1_IPsec_1
    • MSS(MSS)1446
  • Interface Assignments(接口分配)
    • WAN:添加 WAN 接口。例如,vnet1
    • LAN:添加 LAN 接口。例如,vnet0
    • 从上述阶段 1 添加 CF_IPsec_1 接口。

选择 Save(保存) 应用更改。

为第一条 IPsec 隧道分配新接口
配置接口分配

网关

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

接口中应已配置网关

防火墙规则 IPsec

  1. Firewall Rules(防火墙规则) > IPsec interface(IPsec 接口) 中,允许所有类型的流量。
允许 IPsec 的所有流量
  1. 导航至 Status(状态) > Gateways(网关)CF1_IPSEC_1_VTIV4 现在应该处于在线状态。
网关现在应处于在线状态

防火墙规则 LAN

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

这篇文档对您有帮助吗?