无法使用 GNOME Boxes 建立桥接器

Dan*_*iel 3 virtualization qemu fedora nic gnome-boxes

我使用GNOME Boxes设置了Fedora VM。我可以启动它,一切正常。

我正在使用 virt-manager 并且我想创建一个桥接器,以便我可以在网络上获取 VM,但是每次我尝试从用户模式网络切换NIC模式以指定共享设备名称时,都会返回一个错误。

我有virbr0virbr0-nic起来。

错误是:

Error starting domain: internal error: /usr/lib/qemu/qemu-bridge-helper --use-vnet --br=virbr0 --fd=26: failed to communicate with bridge helper: Transport endpoint is not connected
stderr=failed to parse default acl file `/etc/qemu/bridge.conf

Traceback (most recent call last):
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 89, in cb_wrapper
    callback(asyncjob, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/asyncjob.py", line 125, in tmpcb
    callback(*args, **kwargs)
  File "/usr/share/virt-manager/virtManager/libvirtobject.py", line 82, in newfn
    ret = fn(self, *args, **kwargs)
  File "/usr/share/virt-manager/virtManager/domain.py", line 1508, in startup
    self._backend.create()
  File "/usr/lib/python2.7/dist-packages/libvirt.py", line 1062, in create
    if ret == -1: raise libvirtError ('virDomainCreate() failed', dom=self)
libvirtError: internal error: /usr/lib/qemu/qemu-bridge-helper --use-vnet --br=virbr0 --fd=26: failed to communicate with bridge helper: Transport endpoint is not connected
stderr=failed to parse default acl file `/etc/qemu/bridge.conf'
Run Code Online (Sandbox Code Playgroud)

Dan*_*iel 5

更新:我让它工作了。(在同一天,但忘了在这里圈回来报告)。

注意:先阅读上面的答案

设置并不完全顺利,而且受到错误的困扰——尤其是与 virtualbox 相比时,它只是开箱即用,就像它一样。

无论如何,为了避免重复自己,当我不断收到我在上述问题中发布的错误时,我正在从我所在的地方开始。就我而言,它/etc/qemu/bridge.conf甚至不存在,所以我必须自己创建目录和文件。

返回的错误归结为权限。确保文件已打开读取位。

sudo touch /etc/qemu/bridge.conf # If the file does not exist yet
sudo chmod u+r /etc/qemu/bridge.conf
Run Code Online (Sandbox Code Playgroud)

注意:该文件应包含一行指示允许使用哪些桥接接口。

allow virbr0 # according to your qemu command
Run Code Online (Sandbox Code Playgroud)

或者,或者,

allow all
Run Code Online (Sandbox Code Playgroud)

您还需要确保 /usr/lib/qemu/qemu-brdige-helper 设置了 setuid 位。

sudo chmod u+s $(locate -r /usr/.*/qemu-bridge-helper$)
Run Code Online (Sandbox Code Playgroud)

到目前为止一切顺利,但它仍然无法工作,返回与套接字相关的错误。这是因为 apparmor 阻止了通信 - 来源:对这篇文章的评论。

ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/

apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
Run Code Online (Sandbox Code Playgroud)

这最终成功了。