我在 rc.conf 中有一个带有 bhyve 和以下 IP 配置的 FreeBSD10 主机:
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"
在启动 VM 之前,我像这样设置网桥:
ifconfig bridge0 addm igb0 addm tap0 up
作为虚拟机网络适配器的tap0
“主机端”。
这不起作用。我无法从 VM 内访问网关,也无法从 VM 访问主机。这对我来说很有意义,因为没有路线。目前还不清楚这甚至是如何工作的。
您可能需要执行以下操作:
和/或添加
net.link.tap.up_on_open=1
以/etc/sysctl.conf
使其自动启动。通常,在您给它一个 IP 之前,tap 接口不会出现。
这应该使桥梁工作。
要在中配置网桥
rc.conf
:您还需要:
这样就
/boot/loader.conf
可以即时创建水龙头。请参阅我在这里写的官方说明。
即使问题已经超过半年了,因为我刚刚遇到了同样的问题
不要在网桥的物理成员接口上配置您的 IP 地址,而是在网桥接口本身上配置您的 IP 地址。FreeBSD 手册中有关桥接的部分中提到了这一点。
我的理解是,这是由于数据包的处理方式造成的。
if_bridge(4)
在有关过滤的部分中涵盖了其中的一些内容。这并没有解决,而是规避了这个问题:
我
igb0
在主机上分配了所有带有/32
网络掩码的 IP,而不是虚拟机,并为 bridge0 分配了私有 IP10.0.0.1/24
,vtnet0
虚拟机中的接口被分配10.0.0.2
了一个默认网关,10.0.0.1
我使用 pf 创建了一个 binat。主机上的
rc.conf
看起来是这样的:在
pf.conf
主机上:虚拟机
rc.conf
真的很简单:现在,每当我配置一个新的虚拟机时,它都需要一个
10.0.0.0/24
范围内的 IP,我需要调整 hostspf.conf
。