有没有办法在少数节点(4)之间创建点对点虚拟专用,让每个数据包都直接到达目的地?
每个节点都有一个公共地址,并将托管一些具有私有网络地址的虚拟机。每个节点都能够通过其公共地址直接连接到其他节点。
需要的是:
- 无中心网络(无单点故障)
- 数据包直接到达目的地(节点到节点)
- 它应该是一个单一网络(无路由)
我可以想到一些解决方案,但它们没有检查这三点:
第一个解决方案(图中的 S1)是,在一个节点上创建一个桥接 VPN,并将其他节点连接到它。这两点没有得到尊重。事实上,存在一个单点故障(VPN 服务器),从一个 VPN 客户端发往另一个 VPN 客户端的数据包必须经过 VPN 服务器(点 2)。
另一个解决方案(图中的 S2)是在每个节点之间建立桥接(使用 VPN 客户端 - 服务器),并启用生成树来清除环路。在这里,我们遵守第一条规则,因为 STP 会在节点发生故障时重塑网络,但我们仍然不遵守第 2 点,因为生成树协议会切断一些链接。
对于第三个(图像中的 S3)解决方案,可以创建 3 个不同的私有网络(例如,节点 1 的 10.1.0.0/16、节点 2 的 10.2.0.0/16...)并使用节点到节点链接在服务器之间路由数据包。此解决方案将满足需求 1 和 2,但当然不能满足需求 3。
事实上,我希望所有节点都充当分布式交换机,仅将数据包发送到持有目标 IP 的节点。
有没有可以满足这三点的解决方案?
答案1
传输模式下的 IPsec 可以做到这一点,但这确实不可扩展。我甚至会想到最多四个节点。
我目前在 Linux 上使用 strongSwan 进行 IPsec,通过这种方式设置起来很容易。
由于您编辑了问题并稍微改变了要求,我建议您看看 Open vSwitch。