web-dev-qa-db-ja.com

GNOMEボックスでブリッジが機能しない問題

GNOME Boxesを使用してFedora VMを設定しました。私はそれを起動できます、すべて大丈夫です。

私はvirt-managerを使用しており、ネットワーク上でVM=を取得できるようにブリッジを作成しますが、毎回[〜#〜] nic [〜#〜]sermode networkingから共有デバイス名を指定へのモードエラーが返されます。

私は持っています virbr0およびvirbr0-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'
2
Daniel

gnome-boxesはqemu:///sessionを使用しますが、これにはいくつかの利点(ユーザーごとの独自のインスタンス、ユーザーごとのデータなど)がありますが、通常のUbuntuのデフォルトであるqemu:///systemと比較すると欠点もあります。ユーザーコンテキストで実行されるため、権限に関する.

したがって、高度なネットワーク(およびその他いくつかのこと)を行うには、ヘルパーとセットアップの変更が必要です。ネットワーキングにはqemu-bridge-helperが必要です。これは多くの理由で安全ではないと考えられているため、suidと、許可するデバイスをホワイトリストに登録する設定ファイルを設定する必要があります。

これは ブログ は必要な通常の手順の良い要約ですが、最近は再テストしていないため、最近は若干異なる可能性があります。その場合はご容赦ください(ここで話してください。それ)。

追伸virtbr0に接続している場合、ネットワークに到達できますが、これはNATブリッジであるため、外部からVMポート転送などを定義しない限り。外部から到達可能にする場合は、NAT以外のブリッジを定義し、それをゲストと結合する必要があります-これが素晴らしい netplanの例 実行方法そう。

1

更新:動作しました。 (同じ日に、ここに戻って報告するのを忘れていた)。

注:上記の答えを最初に読んでください

セットアップは正確にスムーズではなく、むしろエラーに悩まされています-特に、そのままの状態で機能する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

注:ファイルには、許可するブリッジインターフェースを示す行を含める必要があります。

allow virbr0 # according to your qemu command

または、代わりに

allow all

また、/ usr/lib/qemu/qemu-brdige-helperにsetuidビットが設定されていることを確認します。

Sudo chmod u+s $(locate -r /usr/.*/qemu-bridge-helper$)

これまでのところ良好ですが、それでも機能せず、ソケット関連のエラーが返されます。そして、それは通信をブロックしているapparmorによるものです-ソース:これに関するコメント post

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

apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd

これは最終的にはうまくいった。

2
Daniel