我正在尝试在 OVH 公共云 (OpenStack) 中部署两个 pfSense。每个都有自己的公共 IP,并且公共连接没有任何问题。
vRack 部分(私有网络)的情况变得更加复杂。
使用如下所示的区域和子网创建网络(未定义 DNS 和路由):
"GRA": {
"start":"10.127.0.1",
"end":"10.127.127.254",
},
"SBG": {
"start":"10.127.128.1",
"end":"10.127.255.254",
},
"network":"10.127.0.0/16",
"vlanId": 37
"enableDhcp":False,
"enableGatewayIp":False,
每个 pfSense 在其区域如下:
"pf1": {
"ip":"10.127.0.1/16",
"MTU": 9000,
"region":"GRA",
},
"pf2": {
"ip":"10.127.128.1/16",
"MTU": 9000,
"region":"SBG",
},
即使网络上禁用了 DHCP,网络的每个端口上仍会分配一个 IP。(由 OpenStack 提供,仅从 OVH 的 Horizon 界面可见)。可以为分配给 VM 的端口分配一个静态地址。(我对 pfSense 1 和 2 就是这么做的)如果我为每个 pfSense 分配相应的 IP,通信就可以正常工作(ping、curl,可能一切)。
另一方面,如果我在同一区域/网络中添加第三台机器(名为 CL1)(pf1 是 DHCP 服务器)。
使用 DHCP:
- 防火墙收到 DHCP 请求
- 防火墙发送 DHCP 回复
- 客户端未收到 DHCP 回复。
- 使用防火墙分配的静态 IP(静态 ARP)会导致相同的行为
使用静态 IP:
- 使用防火墙分配给客户端的静态 IP(静态 ARP),但手动或随机 IP(网络内)会导致相同的行为:
- 从 pf2 ping 到 CL1:
- pf1 的 tcpdump 看到 ping 请求但没有回复。
- pf2 没有收到任何回复。
- CL1接收并回复。
- 从 CL1 ping 到 pf2:
- CL1 发送 ping。
- pf1 和 pf2 什么也没看到。
- 从 pf2 ping 到 CL1:
- 使用 OpenStack 分配的 IP 地址:
- CL1 ping 和 curl 工作:
- 如果 CL1 ping pf1 => 仅 pf1 看到流量,则 ping 有效。
- 如果 CL1 ping pf2 => pf1 和 pf2 都看到流量,则 ping 有效。
- 如果 pf2 ping CL1 => pf1 没有看到流量,则 ping 有效。
- CL1 ping 和 curl 工作:
我由此得出结论:
- pf1 和 pf2 可以通信,因为它们使用 OpenStack 分配的 IP。
- CL1 的流量只有在使用 OpenStack 分配的地址时才有效。
- 如果 CL1 在网络上发出 ARP 请求,则 pf1 和 pf2 都无法收到该请求。
供参考:
- vRack 是 OVH 提供的第 2 层网络。
- OpenStack 需要 VLAN ID 才能工作(根据 OVH 文件)。
- 虽然我使用 JSON 来表达一些信息,但这不是用于创建所述网络或接口实例的代码。
- pf1&2 LAN 中的规则:接受进出 LAN 的所有内容(所有协议,仅 IPv4 流量)。
- 安全组:授权所有内容(所有协议,仅 IPv4 流量)。
我在这里想要实现的目标:
- 由 pfSense 管理的 DHCP 网络。
- 稍后:在 HA 所需的 vRack(跨区域)中使用 vRack 多播功能
- 稍后:在 vRack 上启用 pfSense HA(届时将创建另一个跨区域网络)
所有这些都可以通过裸机实现,但这不是我想要的:我只使用 OVH 公共云虚拟机。
如果您能给我任何建议、可以尝试的方法或任何可以解决这个问题的方法,请提前谢谢您。
如果您需要更多信息,请咨询。问候,Dboy