![将交换机连接到虚拟机仅主机网络](https://linux22.com/image/1555383/%E5%B0%86%E4%BA%A4%E6%8D%A2%E6%9C%BA%E8%BF%9E%E6%8E%A5%E5%88%B0%E8%99%9A%E6%8B%9F%E6%9C%BA%E4%BB%85%E4%B8%BB%E6%9C%BA%E7%BD%91%E7%BB%9C.png)
我有一台运行 Mac OS High Sierra 的 MacBook。它托管着三台运行 Ubuntu 16.04 的虚拟机。所有虚拟机都启用了两个适配器:NAT 和仅主机。这台 Mac 通过交换机连接到另一台主机。虚拟机相互协调并提供一项服务,我希望该服务可供连接到我的笔记本电脑的交换机另一端的主机使用。
en8
192.168.57.0 192.168.57.200 192.168.57.100 /---|VM1| 192.168.56.3
|------------| /--------------\ |--------------| /
| Host1 |--| switch |--| Host2 |------|VM2| 192.168.56.4
|------------| \--------------/ |--------------| \
192.168.56.1 \---|VM3| 192.168.56.5
vboxnet0
主机位于子网。笔记本电脑通过IP 地址为 的192.168.57.0\24
接口连接到交换机。笔记本电脑和交换机可以互相 ping 通。en8
192.168.57.100
192.168.56.1
Mac OS 通过接口上的网关连接到虚拟机vboxnet0
。虚拟机可以互相 ping 通,也可以 ping 通主机。主机可以与每个虚拟机进行通信。
我希望虚拟机能够控制交换机,因此我需要设置路由规则,以将流量从交换机连接到虚拟机并返回。我想使用我的 Mac 来充当路由器,以执行此操作。
我尝试遵循 Jeff Warren 的例子:Virtualbox:连接不同主机上的主机专用网络,但就我而言,它不起作用。
具体来说,我尝试过……
sudo route -n add -net 192.168.56.0/24 192.168.57.100
但这不起作用。我收到一条消息说文件已存在。
任何关于如何从虚拟机配置交换机的想法都非常感谢。谢谢。
我尝试过其他方法,例如将虚拟机放在与交换机相同的逻辑子网上。但是,当我这样做时,虚拟机与其主机之间的通信中断了。我也尝试过使用桥接网络而不是仅使用主机,但这也没有用。
答案1
假设虚拟机上的 192.168.56.0/24 接口是仅主机的(即非 NAT)。
您不需要在 MAC(host2)上设置路由,因为这是唯一一个直接连接到两个 /24 的 MAC。您需要让虚拟机通过这条路径到达交换机,并且交换机也通过这条路径到达虚拟机。
在虚拟机上,“ip route add 192.168.57.0/24 via 192.168.56.1”应该可以解决问题。
在交换机上...无论需要什么语法,都可能使 host2 成为其默认网关 (@192.168.57.100)