如何使用 QEMU 使主机和客户机在互联网上可见?

如何使用 QEMU 使主机和客户机在互联网上可见?

这就是我想要实现的目标。使用此处描述的桥接助手维基百科我想要将我的主机和我的客户机都连接到互联网。

以下是我所做的,命令大致如下。我创建了一座桥梁

ip link add br0 type bridge

然后我将我的真实以太网接口添加到它,

ip link set enp2s0 master br0(或类似的东西,不记得确切的命令)

然后将以太网接口的状态设置为 up,与网桥相同,然后刷新以太网接口的 ip 地址并为网桥分配一个 ip,如下所示

dhclient br0

在此之后,我能够从主机 ping google.com,这意味着我可以解析 DNS 和其他内容,因此我已连接到互联网。

接下来,我像这样运行 qemu

qemu-system-i386 {the image} -netdev bridge,id=hn0 -device virtio-net-pci,netdev=hn0,id=nic1

这正是我现在输入的命令。请注意,我使用了 qemu-system-* 语法,因为它似乎取代了以前的语法。

之后,我的映像启动正常,在日志中我可以看到有关 virtio-pci 的信息,我想这意味着命令完全按照预期工作。我的客户机确实可以 ping google.com,它连接到互联网,就像安装在裸机上一样(它可以看到 eth0 设备,一切似乎都很好)。

这是我同时遇到的问题和疑问。

目前,主机和客户机的 IP 地址相同。这样可以吗?我之所以问这个问题,是因为客户机启动并 ping google.com 后,我无法从主机 ping google.com!但如果我运行

dhclient br0

从主机,我可以重新访问互联网并 ping google.com。

  • 我是否需要为主机和客户机分配不同的 IP 地址?如果需要,我该怎么做?
  • 或者问题出在 TAP 设备上?至少到目前为止,我认为 QEMU 应该按照我描述的设置处理所有事情,但也许我需要调整它创建的 TAP 设备的一些属性?

相关内容