将 2 个 Virtualbox VM 连接到另一个 Virtualbox VM 上运行的 Open vSwitch

将 2 个 Virtualbox VM 连接到另一个 Virtualbox VM 上运行的 Open vSwitch

Ubuntu 22.04使用 创建的 3 个虚拟机Virtualbox。我的主机是 Windows 10。其中一个运行 5G 核心模拟器,另一个运行 UEransim。我能够将 UE 连接到 5G 网络,但我需要在 和 之间有一个额外的虚拟机Open vSwitchSDN controller捕获流量并对其进行分析。如果 OVS 在虚拟机管理程序机器上运行,我只需创建 tap 接口并使用这些接口将 Virtualbox VM 设置为桥接模式。但是,由于 OVS 也在 Virtualbox VM 上运行,因此我很难让它工作。

到目前为止我尝试了两种方法:

  • 所有 3 台虚拟机均在 Virtualbox 中配置为在同一个“内部 Virtualbox 网络, subnet 10.0.1.0/24. Let's say VM1 has IP10.0.1.1 , VM2 has10.0.1.2 and VM3 with OVS running has10.0.1.100”中拥有一个适配器。我创建了 OVS 网桥,将内部网络的端口添加到此网桥 (enp0s8),并将 10.0.1.100 分配给我创建的 OVS 网桥。我可以从 OVS VM3 ping 到其他 2 台虚拟机,当然也可以在 VM1 和 VM2 之间 ping 通(因为在 VirtualBox 内部网络中,所有 3 台虚拟机都已连接到其他虚拟交换机)。但 VM1 和 VM2 之间的流量不会通过 VM3 和 OVS 进行 - 因此我认为我应该让 VM1 向 VM3 发送流量(并从 VM2 向 VM3 发送流量),并将流量添加到 OVS 网桥,以便将发往 OVS VM3 的 VM1 流量转发(复制)到 VM2,反之亦然。到目前为止,这种方法还没有奏效,但也许我只是还没有找到正确的流量操作。然而我不确定这是否是正确的方法或者这是否会让我走进死胡同。
  • OVS VM3 有两个适配器,一个VirtualBox internal network与 VM1 在同一个网络中,另一个与 VM2 在同一个网络中。VM1 和 VM2 在不同的子网中,因此它们无法直接互相 ping 通。我尝试了这种解决方案:将开放式 vswitch 与两个虚拟机连接添加两个 OVS 网桥(br0 和 br1)和每个网桥一个接口(enp0s8 到 br0,enp0s9 到 br1),然后将网桥作为网关(br0 用于 VM1,br1 用于 VM2),并在网桥之间添加补丁接口。这没用。例如,我可以从 VM1 ping 到 br0,但不能在 VM1 和 VM2 之间 ping 通。我也尝试运行POX controllerl3_learning module两个 OVS 网桥都连接到控制器)但仍然不起作用。

您能帮助我如何以正确的方式完成此操作吗?我是否遗漏了上述方法中的某些内容,或者我应该采取完全不同的做法?

相关内容