使用 bhyve 和 FreeBSD 客户端的桥接网络不起作用

使用 bhyve 和 FreeBSD 客户端的桥接网络不起作用

我有一台装有 bhyve 的 FreeBSD10 主机,rc.conf 中的 IP 配置如下:

ifconfig_igb0="inet X.X.X.146 netmask 255.255.255.0 broadcast X.X.X.255"
defaultrouter="X.X.X.254"
cloned_interfaces="bridge0"
ifconfig_bridge0="addm igb0 up"

Tap 设备通过 vmrc 脚本添加。我的主机提供商有另一个 IPv4 地址,位于另一个子网Y.Y.Y.176。主机提供商为我提供了以下使用此 IP 配置桥接网络的指南:桥接网络

根据该指南,我像这样配置了客户机(FreeBSD10)(主机提供商为我提供了 IP 的“虚拟 MAC”):

ifconfig_vtnet0="inet Y.Y.Y.176 netmask 255.255.255.255 ether 02:00:00:8c:46:32"
static_routes="net1 net2"
route_net1="-net X.X.X.254/32 Y.Y.Y.176"
route_net2="default X.X.X.254"

在启动虚拟机之前,我像这样设置了网桥:

ifconfig bridge0 addm igb0 addm tap0 up

作为tap0虚拟机网络适配器的“主机端”。

这不起作用。我无法从虚拟机内部访问网关,也无法从虚拟机访问主机。这对我来说很合理,因为没有路由。不清楚这怎么可能起作用。

答案1

您可能需要做:

ifconfig tap0 up

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

通常情况下,只有您指定 IP 地址,Tap 接口才会出现。

这应该能让桥梁正常运转。

要配置桥接器rc.conf

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

您还需要:

if_bridge_load="YES"
if_tap_load="YES"

以便/boot/loader.conf可以即时创建水龙头。

请参阅我写的官方说明这里

答案2

虽然这个问题已经存在半年多了,但我也遇到了同样的问题

不要在桥接的物理成员接口上配置 IP 地址,而是在桥接接口本身上配置。这在FreeBSD 手册中有关桥接的部分

我的理解是,这是由于数据包的处理方式造成的。if_bridge(4)在有关过滤的部​​分中涵盖了其中的一些内容。

答案3

这并没有解决问题,而是规避了问题:

igb0在主机上分配了所有带有/32网络掩码的 IP,而不是虚拟机,并为 bridge0 分配了私有 IP 10.0.0.1/24vtnet0虚拟机中的接口分配了10.0.0.2默认网关,10.0.0.1然后我使用 pf 创建了一个 binat。

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

ifconfig_igb0="inet X.X.X.146 netmask 255.255.255.0 broadcast X.X.X.255"
defaultrouter="X.X.X.254"

ifconfig_igb0_alias0="inet Y.Y.Y.176/32"
ifconfig_igb0_alias1="inet Y.Y.Y.177/32"
ifconfig_igb0_alias2="inet Y.Y.Y.178/32"
ifconfig_igb0_alias3="inet Y.Y.Y.179/32"

cloned_interfaces="bridge0"
ifconfig_bridge0="inet 10.0.0.1/24"

pf.conf主机上:

vm_if1 = "Y.Y.Y.176"
vm_if2 = "Y.Y.Y.177"
vm_if3 = "Y.Y.Y.178"
vm_if4 = "Y.Y.Y.179"

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"

现在,每当我配置一个新的虚拟机时,它都需要一个范围内的 IP 10.0.0.0/24,并且我需要调整主机pf.conf

相关内容