它是如何工作的

它是如何工作的

我目前有两个 pfSense 盒子,并按照文档配备了标准鲤鱼设置,效果非常好。

这里有两个部分的问题:

  1. 怎么可能?我偶然在同一网络上拥有两个 IP 的经历并不愉快。那么,鲤鱼 IP 和物理 IP 是如何如此和谐地共存的呢?

这引出了真正的问题

  1. pfSense 盒子是否应该只为wan&lan和所有通信/路由/无论发生什么真实的 syncIP 地址和网卡?

即:我建议和wan没有lanips,只有syncnic有ip,会有一个carp wan ip和carp lan ip

答案1

它是如何工作的

carp 是一种协议,与 VRRP 非常相似,在多个主机之间共享 IP。

如果你在配置了 carp 的接口上运行 tcpdump,你将能够看到如下消息:

# tcpdump -vvni vlan1000 proto carp
tcpdump: listening on vlan1000, link-type EN10MB
19:34:59.688730 carp 1.2.3.4 > 224.0.0.18: CARPv2-advertise 36: vhid=1 advbase=10 advskew=5 demote=0 [tos 0x4] (ttl 255, id 25329, len 56)

 tcpdump -vvni vlan42 proto carp   
 tcpdump: listening on vlan42, link-type EN10MB
  19:35:56.610612 carp 10.42.42.5 > 224.0.0.18: CARPv2-advertise 36: vhid=42 advbase=10 advskew=5 demote=0 (DF) [tos 0x10] (ttl 255, id 13021, len 56)

Carp 成员会向多播地址发送消息,相互通告自己的存在。每个 Carp 组中只有一名成员会被选为主成员。

在主动-主动场景中,您仍然可以有两个或多个主机为同一个 carp 地址提供服务,假设 pf 状态在 carp 成员之间共享(pfsync)。

Carp 地址将根据您的 Carp VHID 解析为预测硬件地址:

# arp -na|grep 'carp.*permanent'
10.42.40.1                           00:00:5e:00:01:0b carp11 permanent  l
10.42.41.1                           00:00:5e:00:01:08  carp8 permanent  l
10.42.42.1                           00:00:5e:00:01:2a carp42 permanent  l
10.42.43.1                           00:00:5e:00:01:07  carp7 permanent  l
10.42.44.1                           00:00:5e:00:01:04  carp4 permanent  l
10.42.45.1                           00:00:5e:00:01:03  carp3 permanent  l
10.42.46.1                           00:00:5e:00:01:0a carp10 permanent  l
10.42.242.1                          00:00:5e:00:01:02  carp2 permanent  l
10.42.252.1                          00:00:5e:00:01:64 carp100 permanent  l
10.42.253.1                          00:00:5e:00:01:05  carp5 permanent  l
10.42.254.1                          00:00:5e:00:01:06  carp6 permanent  l
1.2.3.4                              00:00:5e:00:01:01  carp1 permanent  l
192.168.10.254                       00:00:5e:00:01:0c carp12 permanent  l

对于 VHID 1,我的 carp 地址会将其 mac 设置为00:00:5e:00:01:01,对于 VHID 2 00:00:5e:00:01:02,则设置为 ,... 依此类推。因此:无论哪个是您的 carp 主控,该网络中的客户端都不需要刷新其 ARP 缓存,它们将始终联系相同的硬件地址。

两台主机共享相同的 IP 通常是“不愉快的”原因,首先是因为:它们没有相同的 mac。根据谁回复了您的上一个 arp 请求,您可能会意外地从一个切换到另一个。此外,您的两个 pfSense 共享类似的配置,确保您的网络中具有相同的功能。而当错误地重新分配 IP 时,您通常会有两台完全不同的机器。

CARP 成员是否也应该拥有物理 IP

视情况而定。大多数情况下:不。我倾向于在管理或公共接口上设置一个,以确保我仍然可以访问备份主机(例如:监控、排除某些连接问题......),或者只是设置 pfSync。

使用 FreeBSD,您可能还会使用 hastd+ctld+ifstated 共享 HA LUN 设备。然后,我还会在主接口上设置一个物理 IP,因为无论谁是主设备,我都需要 hastd 来同步我的设备。

相关内容