我有一台运行 Linux 的计算机。它已经安装了 qemu。它有一个桥接接口br0,配置了以下设置:
IP: 10.1.1.1
Netmask: 255.255.255.0
还有一个tap0接口添加到br0。tap0应该用于在 qemu 中运行的网络来宾。
我在 qemu 中从其 LiveCD 运行 Slax Linux,如下所示:
qemu -kernel-kqemu \
-net nic,vlan=0,macaddr=aa:aa:aa:aa:aa:aa,model=pcnet \
-net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup \
-m 512 \
-cdrom slax-6.0.7.iso \
1>stdout.log 2>stderr.log
我正在以文本模式启动 Slax(不需要 X,因为我的目标是测试网络)。我在来宾中配置网络接口,如下所示:
IP: 10.1.1.4
Netmask: 255.255.255.0
Gateway: 10.1.1.1
一切正常,我可以双向 ping:
10.1.1.1 -> 10.1.1.4
10.1.1.4 -> 10.1.1.1
现在我用 qemu 映像替换 Slax LiveCD,其中包含新安装的 OpenBSD 4.5。我这样运行它:
qemu -kernel-kqemu \
-net nic,vlan=0,macaddr=aa:aa:aa:aa:aa:aa,model=pcnet \
-net tap,vlan=0,ifname=tap0,script=/etc/qemu-ifup \
-m 512 \
-hda obsd.img \
1>stdout.log 2>stderr.log
OpenBSD 启动后,我以完全相同的方式配置其网络接口:
IP: 10.1.1.4
Netmask: 255.255.255.0
Gateway: 10.1.1.1
现在我无法向任何方向 ping。
qemu 日志不包含任何提示。
这也不是防火墙问题:OpenBSD 4.5 默认没有启用 pf。来自其/etc/rc.conf的片段:
pf=NO # Packet filter / NAT
这似乎是 QEMU 版本中的已知回归,包括但不限于 0.10.4 和 0.10.5。显然,使用 model=rtl8139 和 QEMU 0.9.1 有效,所以您可能想尝试一下。
我不认为 openbsd 会自己解决你的默认路由
您可以使用 route show -inet 检查
你应该得到类似的东西:
bash-3.2# route show -inet
Routing tables
Internet:
目标网关标志 Refs 使用 Mtu Prio Iface
默认 10.1.1.1 UGS 1 1600975 - 48 em0
...
如果它工作正常,如果默认不存在,那么您需要将 10.1.1.1 添加到 /etc/mygate 以便它在启动时添加它并使用手动创建路由
路由添加默认gw 10.1.1.1