如何配置从 VM1 经主机到 VM2 的流量路由

如何配置从 VM1 经主机到 VM2 的流量路由

我正在使用 Virtualbox 来运行虚拟机的 Ubuntu 20.04。我的任务是配置网络,使来自 VM1 的流量通过主机(Windows 10)然后到达 VM2,反之亦然。

对于接口,我使用 Virtualbox Host-Only 以太网适配器。例如,任务如下所示:VM1-Ub-(192.168.3.4) <-> Host-Win-(192.168.3.3) <-> VM1-Ub-(192.168.3.5)

必须通过 Host-Win。

我试过:

  1. VM1:ip route add 192.168.3.4/24 via 192.168.3.3
  2. 主持人:route add 192.168.3.4 mask 255.255.255.255 192.168.3.5
  3. VM2:ip route add 192.168.3.5/24 via 192.168.3.3

以及其他方法。

答案1

需要通过 Host-Win

在这种情况下,你优选地不应将虚拟机放在同一子网中。当它们位于同一子网中时,它们将“知道”它们可以直接互相访问(通过 VirtualBox 的内部 vSwitch),并且不会尝试通过任何网关发送数据包。

(从技术上讲,交通穿过主机...

主持人应该仅主机适配器,配置为不同的子网,VM1 连接到一个子网,VM2 连接到另一个子网,并且每个 VM 都应将主机的 IP 地址作为网关(默认网关,或者只是“相反”子网的网关)。

话虽如此,当它们位于同一个子网时,这仍然是可行的,但您必须手动覆盖虚拟机具有的“本地子网”路由 - 例如通过删除它们,或者将网络掩码配置为/32(255.255.255.255)以防止首先添加直接路由。

我试过:

  1. VM1:ip route 通过 192.168.3.3 添加 192.168.3.4/24
  2. 主机:路由添加 192.168.3.4 掩码 255.255.255.255 192.168.3.5
  3. VM2:ip route 通过 192.168.3.3 添加 192.168.3.5/24

对于 1 和 3,如果您尝试为单个主机添加路由,则网络掩码需要为 /32(类似于您在路由 2 中使用 255.255.255.255 所做的操作)。无需指定网络的实际大小。

(路线是针对主机或者网络 – 不适用于“网络中的主机”;使用 /24 只会创建“192.168.3.0/24”路由,丢弃所有不适合 /24 的位。)

路由 2 总体上没有任何意义。您正确输入了 255.255.255.255,但目的地和网关的组合与您的拓扑完全不匹配 - VM1 并不落后于 VM2。

相关内容