OPNsense配置高可用性

高可用性 (HA) 是指 IT 系统、组件或应用程序在一定时间内以较高级别一致且不中断地运行的能力。高可用性 (HA) 旨在保证系统满足预先设定的运行性能水平。高可用性架构旨在提供最佳性能并有效管理各种工作负载和故障,同时最大限度地减少或消除任何服务中断。

OPNsense采用通用地址冗余协议 (CARP) 来实现硬件故障转移。故障转移组是通过配置两个或多个防火墙来创建,如果主防火墙上的一个接口出现故障或主防火墙完全关闭,则辅助防火墙将变为活动状态。

利用这一强大的功能,我们可以建立一个完全冗余的防火墙系统,并具有自动且完美的故障转移功能。在过渡到备份网络期间,连接将保持运行,对用户造成的干扰基本可以忽略。

在本教程中,将展示如何在OPNsense 防火墙系统上配置高可用性。让您可以轻松地在 OPNsense 节点上配置高可用性 (HA)、CARP和pfSync功能。主要分以下几个步骤:

  1. 配置接口
  2. 配置防火墙规则
    1. 在主节点上添加防火墙规则
    2. 在备份节点上添加防火墙规则
  3. 配置虚拟IP地址
  4. 配置出站 NAT
  5. 配置DHCP 服务器
  6. 配置pfSync和HA 同步 (xmlrpc)
  7. 测试配置
OPNsense High Availability Topology

OPNsense HA 集群的基本要求

必备条件:

  • 两个OPNsense 防火墙设备:在本教程中,我们已经安装并配置了两个 OPNsense 防火墙,每个防火墙有三个网络接口。
  • 3 个广域网 (WAN) IP 地址:具有至少 3 个可访问 IP 地址的上行链路(主、备各一个固定 IP 地址,此外还有一个为主防火墙指定的虚拟 IP 地址)。
  • 3 个 LAN IP 地址:3 个可用 IP 地址(主、备各一个固定 IP 地址,另外还有一个为主防火墙指定的虚拟 IP 地址)。
注意:如果两个 OPNsense 集群节点是在虚拟机内运行,必须允许虚拟机更改 MAC 地址。

配置接口

本教程中,主防火墙和备份防火墙IP地址分配如下表所示:

接口 IP地址
lan 10.10.10.201/24
wan 192.168.0.201/24
pfSync 11.11.0.1

表 1. 主防火墙接口 IP 地址

接口 IP地址
lan 10.10.10.202/24
wan 192.168.0.202/24
pfSync 11.11.0.2

表 2. 备份防火墙接口 IP 地址

LAN interface overview on master node

图 2. 主节点上的 LAN 接口概览

WAN interface overview on master node

图 3. 主节点上的 WAN 接口概览

pfSync interface overview on master node

图 4. 主节点上的 pfSync 接口概述

LAN interface overview on backup node

图 5. 备份节点上的 LAN 接口概览

WAN interface overview on backup node

图 6. 备份节点上的 WAN 接口概览

pfSync interface overview on backup node

7. 备份节点上的 pfSync 接口概述

配置防火墙规则

必须在主防火墙和备份防火墙上创建防火墙规则。

2.1. 在主节点

按照以下步骤配置防火墙规则:

1、导航到防火墙→规则,确保可以在各种接口上使用正确的协议,确保 LAN 和 WAN 均接受 CARP 数据包。

Firewall rule to allow CARP on LAN interface of master

图 8. 允许主设备 LAN 接口上的 CARP 的防火墙规则

Firewall rules on LAN interface of master

图 9. 主设备 LAN 接口上的防火墙规则

Firewall rule to allow CARP on WAN interface of master

图 10. 允许主设备 WAN 接口上的 CARP 的防火墙规则

2、转到防火墙→规则菜单,选择pfSync接口,添加一条any to any规则。

Firewall rule to allow all packets on pfSync interface of master

图 11. 允许主设备 pfSync 接口上所有数据包的防火墙规则

2.2. 在备份节点

由于我们将在两台主机之间同步防火墙设置,因此初始配置仅要求 pfSync 接口可以从主机接收数据。通过执行以下步骤,将此规则应用于此接口,就像对主接口所做的那样:

导航到防火墙→规则,选择pfSync接口,添加一条any to any规则。

Firewall rule to allow all packets on pfSync interface of backup node

图 12. 允许备份节点 pfSync 接口上的所有数据包的防火墙规则

配置虚拟IP地址

我们将在主节点上配置虚拟 IP 地址。这些地址将被镜像,同步后辅助节点上的不平衡性更大。虚拟 IP 地址的设置包含以下内容:

选项 描述
模式 地址类型,例如 IP 别名、CARP、代理 ARP 等。
接口 与该地址关联的接口。
类型 网络或单个地址的影响仅限于 NAT 规则的创建,其中代理 ARP 和其他与扩展的组合为网络掩码中的每个元素生成唯一的地址。
扩张 如果适用,请在网络掩码内分隔地址。
地址 通常,在同一网络内指定多个地址时,要分配的地址和网络掩码应该对应。
网关 该字段仅适用于 IP 别名类型。虽然通常建议将其留空,但某些隧道设备 (ppp/pppoe/tun) 需要指定网关地址。
密码 用户主节点和后备节点加密网络上的 CARP 传输,主备两个的密码必须相同。
VHID组 虚拟主机的ID。这是一个独特的数值,用于区分冗余组与组内的其他节点以及区分在同一网络上运行的组。可接受值的范围在 1 到 255 之间。此要求适用于组中的每个设备。
通告频率 该参数指定将此接口通告为属于某个组的频率(以秒为单位),以及传输通告时应用的偏差。偏差越大表明偏好越少。
描述 用于该 VIP的描述

表 3. OPNsense 上的 VIP 设置

在本教程中,WAN 和 LAN 接口VIP设置的值如下表所示:

选项
类型 Carp
接口 WAN
IP地址 192.168.0.200 / 24
密码 opnsense
VHID组 1
通告频率 Base 1 / Skew 0
描述 VIP WAN

表 4. WAN 接口虚拟 IP 设置

选项
类型 Carp
接口 LAN
IP地址 10.10.10.200 / 24
密码 opnsense
VHID组 3
通告频率 Base 1 / Skew 0
描述 VIP LAN

表 5. LAN 接口虚拟 IP 设置

在主防火墙上,导航至接口→虚拟 IP →设置,点击右下角添加按钮,为WAN 接口创建新的虚拟 IP 地址,如下图所示:

Adding VIP address on WAN interface of master node

图 13. 在主节点 WAN 接口上添加 VIP 地址

输入完成以后,单击“保存”。并点击“应用”激活设置。

同时为LAN 接口创建新的虚拟 IP 地址,如下图所示:

Adding VIP address on LAN interface of master node

图 14. 在主节点 LAN 接口上添加 VIP 地址

输入完成以后,单击“保存”。并点击“应用”激活设置。

Applying VIP address configuration on master node

图 15. 在主节点上应用 VIP 地址配置

注意:要确保Carp VIP的子网掩码与其主接口相同,确保备份节点上的advskew选项具有更高的值,例如100。

配置出站NAT

为了保持平稳过渡,离开防火墙的流量应该使用与广域网 (WAN) 接口关联的虚拟 IP 地址。默认情况下,OPNsense的NAT出站为“自动出站 NAT规则生成”,这会影响数据流量的平滑过渡,必须修改为 WAN VIP 状态,以便来让来自10.10.10.0/24 网络的数据包使用 CARP 虚拟接口 (192.168.0.200)出站:

选项 价值
接口 WAN
源地址 LAN (10.10.10.0/24)
转换/目标 (192.168.0.200)(CARP虚拟IP)

表 6. *出站 nat 规则 *

在主防火墙上配置出站 NAT 规则:

1、导航到防火墙→ NAT →出站,选择手动出站 nat 规则生成。

Selecting Outbound NAT Mode on master node

图 16. 在主节点上选择出站 NAT 模式

2、单击添加按钮创建规则。接口选择WAN,源地址设置为LAN  net,转换/目标设置为192.168.0.200。

Adding Outbound NAT rule on master node

图 17. 在主节点上添加出站 NAT 规则

3、单击“保存”,单击“应用更改”来激活设置。

Viewing Outbound NAT rule on master node

图 18. 在主节点上查看出站 NAT 规则

配置 DHCP

在局域网部署DHCP时,所有用户都应该使用虚拟地址来代替通常传输的物理地址。此外,值得注意的是,两台服务器将同时运行,并且它们应该了解彼此的池。当 OPNsense 转发 DNS 请求时,验证 DHCP 服务器是否提供正确的 IP 地址。在两个防火墙上的“服务” → “DHCPv4” → “LAN”下,选择以下参数。

主节点配置如下:

选项
DNS服务器 10.10.10.200
网关 10.10.10.200
故障转移对端 IP 10.10.10.202

表 7. 主节点上的 DHCP 服务器选项

备份节点上配置如下:

选项
DNS服务器 10.10.10.200
网关 10.10.10.200
故障转移对端 IP 10.10.10.201

表 8. 备份节点上的 DHCP 服务器选项

DHCP server settings on master node

图 19. 主节点上的 DHCP 服务器设置

配置pfSync和HA同步(xmlrpc )

为了启动同步过程,必须在主防火墙上分别配置 pfSync 和 HA 同步 (xmlrpc)。在主节点上启用 pfSync,可以按照以下步骤操作:

导航到系统→高可用性→设置,选中同步状态选项,选择PFSYNC作为同步接口,将同步对端 IP设置为 11.11.0.2。(这里使用备份防火墙的PFSYNC接口的IP地址)。将同步配置到IP设置为 11.11.0.2。输入远程系统用户名,例如root,输入远程系统密码,如opnsense。选择要同步的服务,例如仪表板、别名、NAT、DHCPD、虚拟 IP 和防火墙规则。

HA settings on master node

图 20. 主节点上的 HA 设置

随后在辅助防火墙上配置 pfSync。按照以下步骤操作:

  1. 导航到系统→高可用性→设置。
  2. 选中同步状态选项。
  3. 同步接口PFSYNC。
  4. 禁用“禁用抢占”选项,以便抢占保持活动状态。这确保了如果单个网络连接(例如来自主防火墙的 WAN 连接)失败,则所有 IP 地址(本例中为 WAN 和 LAN)都会移至第二个防火墙。
  5. 在“同步对端 IP”字段中输入主 IP(例如11.11.0.1)。
  6. 不在辅助防火墙上配置 XMLRPC 同步。

测试配置

可以按照以下步骤测试 OPNsense 高可用性配置:

1、在主防火墙仪表板上,单击添加 CARP 小部件,选择CARP,然后单击Save Settings

CARP and Interfaces widgets on master node dashboard

图 21. 主节点仪表板上的 CARP 和接口小部件

2、测试前重新启动两个防火墙。

3、导航到OPNsense Web UI 中的系统→高可用性→状态,验证两个设备是否已成功初始化。

Viewing HA status on master node

图 22. 查看主节点上的 HA 状态

4、将客户端连接到局域网,并与位于两个防火墙后面的主机建立 SSH 连接,以验证我们的配置。此时,两个 OPNsense 防火墙应在防火墙配置菜单(防火墙 → 诊断)的状态转储部分中显示相同的连接。

5、从主防火墙上拔下网络插头。这应该将连接转移到备份,而不会导致 SSH 连接丢失或冻结。

更新HA集群防火墙系统

为了最大限度地减少更新执行期间的中断,只需遵循以下步骤:

1、应用更新后重新启动辅助设备。

2、导航到主设备上的接口→虚拟 IP →状态,然后选择进入持久 CARP 维护模式。现在您的辅助设备已成为 MASTER,请验证所有服务(包括 DHCP、VPN 和 NAT)是否都可以运行。

3、验证更新成功后,继续更新您的主设备并禁用持久 CARP 维护模式。

Viewing VIP status on master node

图 23. 查看主节点上的 VIP 状态

4、不会丢失过多的数据包,并且当前的连接将被转移。此外,请注意,即使重新启动后,持久模式条目仍保持活动状态。

自动复制HA OPNsense节点

虽然建议在执行维护时保持备份防火墙的完整性,但也可以定期同步备份。OPNsense 在主防火墙节点上有一个 cron 操作,可以通过系统 → 设置 → Cron手动计划来完成。要启用自动复制功能,可以创建一个新的 cron 作业。

注意:为了限制非运行主机对活动主机的更新,只有当所有 carp 接口设置为 MASTER 模式时才会执行HA 更新和重新配置备份。

查看HA节点状态

导航至系统→高可用性→状态,查看先前配置的备份防火墙的状态。状态页面显示备份防火墙上运行的所有服务。如有必要,可以从此页面更新备份计算机并恢复服务。

可以导航到接口 → 虚拟IPs → 状态查看 HA 集群的状态。

状态页面列出了每个配置的 carp VHID 组的活动状态。此外,状态页面还包括用于强制节点进入维护模式和禁用 carp 的选项。每个 VIP 状态的详细描述如下。

  • INIT:这通常表示接口有问题;通常,这是由于接口未断开或其他技术问题造成的。
  • BACKUP:当处于备份状态时,此接口作为集群的一部分监视通告。如果暂时没有通告,它将过渡到主模式。
  • MASTER:在监视网络通告时识别活动节点。如果检测到具有高级通告的节点,它可能会转换为备份状态(受抢占设置限制,可通过系统→高可用性→设置页面访问)。
  • 禁用:选择此页面上的“暂时禁用 CARP”选项时禁用。
Viewing VIP status on backup node

图 24. 查看备份节点上的 VIP 状态

CARP和pfSync

在深入研究 OPNsense 上的 HA 设置之前,可以先了解与建立集群系统相关的术语。

什么是 CARP

通用地址冗余协议 (CARP) 支持在多个主机之间共享单个 IP 地址和虚拟主机 ID (VHID),从而确保一项或多项服务的高可用性。这意味着,如果一台或多台主机发生故障,其余主机将无缝接管控制权,确保用户不会遇到任何服务中断。

除了共享 IP 地址之外,每个主机还分配有一个唯一的 IP 地址用于管理和配置。共享 IP 地址的所有计算机都拥有相同的 VHID。网络接口广播域中的每个虚拟 IP 地址都必须具有唯一的虚拟主机标识符 (VHID)。

通用地址冗余协议 (CARP) 使用 IP 协议 112,基于 OpenBSD,并使用多播数据包将其状态传达给相邻设备。确保每个接口都能接收CARP报文。每个虚拟接口都需要拥有一个不同的虚拟主机 ID (vhid),该 ID 在物理计算机之间共享。规定的偏差用于确定具有较高优先级的物理机。偏度的降低对应于分数的增加。(在本教程中,我们的主防火墙使用0)。

提示:CARP 接口的虚拟 MAC 地址为00:00:5e:00:01:XX,其vhid填充最后两位数字。

提示:CARP采用IP协议112(0x70)来确定传输通告时的优先级;它通过224.0.0.18或 来实现FF02::12。

什么是 pfSync

pfsync 是一种计算机协议,用于在运行数据包过滤器 (PF) 的计算机之间同步防火墙状态,以实现高可用性。它与 CARP 结合使用,以确保备份防火墙维护与主防火墙相同的信息。如果防火墙集群中的主系统发生故障,辅助计算机能够无缝处理正在进行的连接,而不会造成任何损失。强烈建议使用专用接口在主机之间传输 pfSync 数据包,以增强安全性(防止状态注入)并提高速度。为了使状态信息准确地跨两个防火墙应用,它们必须使用相同的接口名称来访问相同的网络。举例来说,如果防火墙 1 的内部网络 (LAN) 通过 igb0 接口链接,则防火墙 2 也必须将 igb0 分配给该 LAN。作为补救措施,可以在两个具有唯一接口标识和网络设备的不同防火墙的情况下配置 LAGG。

什么是 XMLRPC 同步

OPNsense 的一项功能 XMLRPC 同步可确保备份服务器的配置与主服务器的配置保持一致。每次配置更改后,受支持区域的设置都会从主节点复制到辅助节点,并在启用 XMLRPC 同步时激活。XMLRPC 同步不是必需的,但它显着增加了维护集群所需的工作量。

您可以通过导航至OPNsense UI 上的系统→高可用性→设置来访问XMLRPC 同步选项。

XMLRPC sync options on OPNsense HA

图 25. OPNsense HA 上的 XMLRPC 同步选项

原文地址

评论

  1. niuhai
    2 月前
    2024-3-02 10:25:40

    老师,你好!
    我在虚拟机上部署OpenSense遇到了一点问题,想请教一下你,方便联系吗?

  2. 博主
    2 月前
    2024-3-03 10:37:49

    可以说一下问题情况,或参照相关文章自行解决。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇