qemu中如何允许guest OS访问Internet?

bod*_*ydo 8 networking kvm dhcp bridge qemu

我已经创建了一个 Windows XP 映像,并且正在使用 qemu 启动它。当通过 使用“用户模式网络”时-net user,我的来宾操作系统(windows xp)获得分配的 10.0.2.15 IP,我可以 ping 10.0.2.2,以便正确安装 Windows 驱动程序。

不幸的是,我无法访问其他任何内容。我阅读了教程,发现“用户模式网络”不会将连接转发到互联网,我必须使用 TAP 设备或桥接设备。

我不熟悉这些设备,教程非常混乱和复杂。

其中一个教程建议我使用 qemu-bridge-helper。我将 /etc/qemu/bridge.conf 配置为允许 br0 桥接设备并通过brctl addbr br0.

我按照教程并以这种方式启动了我的 winxp:

qemu-system-x86_64 --enable-kvm -m 2048 \
  -drive file=winxp.img,if=virtio \
  -net nic,model=virtio \
  -net bridge,br=br0
Run Code Online (Sandbox Code Playgroud)

图像启动良好,但我没有获得 IP 地址。原因是 Windows 被配置为使用 DHCP,但“br0”没有提供 DHCP 地址,因为它只是一个桥接接口(不知何故与 tap0 绑定,但我不确定这意味着什么)。

我的问题是 - 如何配置“br0”以通过 DHCP 为 winxp 提供地址?我必须在 tap0 接口上运行 dhcp 服务器吗?br0、tap0 和 eth0 有什么关系?(eth0 是我的静态 IP 接口,唯一的 Internet 接口。)

我的第二个问题是 - 是否有更简单的方法来配置所有这些以允许对来宾操作系统进行简单的互联网访问?

Cre*_*ave 9

我的第二个问题是 - 是否有更简单的方法来配置所有这些以允许对来宾操作系统进行简单的互联网访问?

您不需要(或者至少不应该)为简单的互联网访问手动配置任何东西;QEMU 会自动处理它。它有一些限制,例如不支持 ICMP 协议(​​由 使用ping),对外部网络不可见,也不能与其他以相同方式运行的虚拟机对话,但它适用于简单使用。有关更多信息,请参阅Arch Wiki

  • “不支持 ICMP 协议”——感谢您提到这一点!我通过`ping`测试了我的互联网连接,假设互联网无法正常工作并继续尝试“修复”它几个小时。谢谢! (7认同)

Khi*_*ail 0

在执行命令后,brctl addbr br0您需要将新网桥连接到真实网络接口,例如eth0,女巫已连接到互联网。使用下一个命令brctl addif br0 eth0