我在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 。