使用bhyve和FreeBSD Guest桥接networking不起作用

我在rc.conf中有一个带有bhyve和以下IPconfiguration的FreeBSD10主机:

ifconfig_igb0="inet XXX146 netmask 255.255.255.0 broadcast XXX255" defaultrouter="XXX254" cloned_interfaces="bridge0" ifconfig_bridge0="addm igb0 up" 

tap设备通过vmrc脚本添加。 我有另一个子网中的主机的另一个IPv4地址: YYY176 。 主机给我以下指南configuration接networking与此IP: 桥接networking

根据这个指南,我configuration了guest(FreeBSD10)这样(主机提供给我一个IP的“虚拟MAC”):

 ifconfig_vtnet0="inet YYY176 netmask 255.255.255.255 ether 02:00:00:8c:46:32" static_routes="net1 net2" route_net1="-net XXX254/32 YYY176" route_net2="default XXX254" 

在启动虚拟机之前,我需要像这样设置桥接器:

 ifconfig bridge0 addm igb0 addm tap0 up 

tap0是虚拟机networking适配器的“主机端”。

这不起作用。 我无法从虚拟机内部到达网关,也无法从虚拟机到达主机。 这对我来说是有道理的,因为没有路线。 目前还不清楚这是如何工作的。

您可能需要这样做:

 ifconfig tap0 up 

和/或将net.link.tap.up_on_open=1添加到/etc/sysctl.conf以使其自动启动。

通常情况下,直到你给它一个IP,tap接口才会出现。

这应该使桥梁工作。

rc.confconfiguration网桥:

 cloned_interfaces="bridge0 tap0" ifconfig_bridge0="addm igb0 addm tap0 up" 

您还需要:

 if_bridge_load="YES" if_tap_load="YES" 

/boot/loader.conf以便点击可以在飞行中创build。

看到我写在这里的官方指示。

即使这个问题已经超过了半年,因为我也有同样的问题

不要在网桥的物理成员接口上configuration您的IP地址,而要configuration网桥接口本身。 这在有关桥接的FreeBSD手册部分中提到过。

我的理解是,这是由于数据包处理的方式。 if_bridge(4)在关于过滤的章节中介绍了其中的一些内容。

这并没有解决,而是绕过了这个问题:

我在主机上为所有IP分配了一个igb0 ,而不是虚拟机,并且分配了bridge0私有IP 10.0.0.1/24 ,虚拟机中的vtnet0接口被分配了10.0.0.2 ,默认网关为10.0.0.1 ,我使用pf创build一个binat。

主机上的rc.conf如下所示:

 ifconfig_igb0="inet XXX146 netmask 255.255.255.0 broadcast XXX255" defaultrouter="XXX254" ifconfig_igb0_alias0="inet YYY176/32" ifconfig_igb0_alias1="inet YYY177/32" ifconfig_igb0_alias2="inet YYY178/32" ifconfig_igb0_alias3="inet YYY179/32" cloned_interfaces="bridge0" ifconfig_bridge0="inet 10.0.0.1/24" 

和主机上的pf.conf

 vm_if1 = "YYY176" vm_if2 = "YYY177" vm_if3 = "YYY178" vm_if4 = "YYY179" slave = "10.0.0.4" binat on igb0 from $slave to any -> $vm_if1 nat on igb0 from bridge0:network to any -> (igb0) 

虚拟机rc.conf非常简单:

 ifconfig_vtnet0="10.0.0.2 netmask 255.255.255.0" defaultrouter="10.0.0.1" 

现在,每当我提供一个新的虚拟机,它需要在10.0.0.0/24范围内的一个IP,我需要调整主机pf.conf