我正在使用 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。
我试过:
- VM1:
ip route add 192.168.3.4/24 via 192.168.3.3
- 主持人:
route add 192.168.3.4 mask 255.255.255.255 192.168.3.5
- 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)以防止首先添加直接路由。
我试过:
- VM1:ip route 通过 192.168.3.3 添加 192.168.3.4/24
- 主机:路由添加 192.168.3.4 掩码 255.255.255.255 192.168.3.5
- 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。