web-dev-qa-db-ja.com

ホスト側の仮想ブリッジを使用するようにqemu-systemを構成する

Qemu-systemをハイパーバイザーとして使用して次のセットアップを実行します。

Hostsetup:

Hypervisor machine (Ubuntu 16.04)           Second Machine 
qemuVm--tap0--br123--eth0--|Hardware hub|--eth42--SecondPC

したがって、これはqemu-systemによってホストされる仮想マシンを含むネットワークであり、タップインターフェースを介して仮想ブリッジに接続されます。仮想ブリッジはホストによって作成されます。仮想ブリッジは、libvirt/virt-managerまたは他のシステムのデフォルトのブリッジではありません。仮想ブリッジには、実際のeth0ネットワークカードがあります。このネットワークカードは、実際のハブと有線で接続されています。ハブに接続されているのは、他のReal PCです。すべてのクライアントは静的IPアドレスを使用します。接続されているすべてのマシン間でICMP、UDP、TCP、FTPなどのすべてのサービスを使用したい

IPリスト:

  • win7qemuVm: 10.0.0.10
  • br123: 10.0.0.100(qemuのデフォルトブリッジを使用したくない)
  • tap0: ? IPアドレスを割り当てることは可能/必要ですか?
  • eth0: ? IPアドレスを割り当てる必要がありますか?
  • eth42 10.0.0.201(2台目のPCのインターフェース)

古い-netdevではなく-device/-net nicを使用したいと思います。

win7qemuVmをタップデバイスに接続するために必要なコマンドラインパラメーターはどれですか?

IPルート、ipforwarding、iptablesがあります。そのようなネットワークを可能にするために、デフォルトのubuntu設定を変更する必要がありますか?

私のホストネットワークはすでにそのように構成されています:

iface tap11 inet manual
    pre-up tunctl -t tap0
    up ifconfig tap0 up
    down ifconfig tap0 down

auto br123
iface br123 inet static
   address 10.0.0.100
   netmask 255.255.255.0
   bridge_ports eth0
   bridge_ports tap0
   bridge_stp off
   bridge_fd 0.0
   pre-up ifdown eth0
   pre-up ifdown tap0
   pre-up ifup eth0
   pre-up ifup tap0
   post-down ifdown eth0
   post-down ifdown tap0

ネットワークマネージャーが無効になっています。

2
Cutton Eye

上の構成は問題を解決するために正しいです。最初の成功は、あなたの花嫁/タップなどがUPのままであるときです。つまり、これは使用され、システムは実行されているということです。次のようになります。

$ ip link show
# Output modified and formatted:
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast
   master br123 state UP 
   mode DEFAULT group default qlen 1000
   link/ether 68:05:ca:51:8e:ff brd ff:ff:ff:ff:ff:ff
5: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast 
   master br123 state UP
   mode DEFAULT group default qlen 1000
   link/ether ce:c4:55:91:86:6f brd ff:ff:ff:ff:ff:ff
6: br123: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 
   state UP mode DEFAULT group default qlen 1000
   link/ether 68:05:ca:51:8e:ff brd ff:ff:ff:ff:ff:ff

あなたはマスターと状態が言及されている行を見ることができます、それらは重要なものです。

次の課題は、このタップ機能をサポートするネットワークデバイスを見つけることです。 XP用にvirtio network deviceを使用し、virtio driverをダウンロードしました。私はまだ他のOSといくつかの仮想ネットワークカードだけをテストしていないので、他のOSも動作する可能性があるかもしれません。ただし、重要なのは、すべての仮想デバイスドライバーがタップデバイスで動作しているわけではないということです。 SOたとえば、Windowsのネットワークカードは稼働している可能性がありますが、pingを出し入れすることはできません。ファイアウォールがダウンしていて、他のすべてが正しく構成されている場合は、タップデバイスがサポートされていないアダプターを追加しました。

ネットワーク接続は1:1のペアなので、2つのステップを使用して行います。ホスト側の構成は-netdevで始まります。ここで、(ここで)ホストに接続されたネットワークアダプターを定義します。 tap0はこの一部です。重要なのは、IDを定義することです。

このIDは、ゲストのインターフェースが定義されているクライアント側の構成で使用されます。 -devicevirtio-net-pciは、この例で使用されているネットワークアダプターです。

exec qemu-system-x86_64 \
-enable-kvm \
-hda W_XP.img \
-m 1G \
-monitor stdio \
-cdrom /media/img/SharedImages/driver/W_XP/virtio-win-0.1.126.iso \
-netdev tap,id=mynet0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=mynet0,id=mynet0,mac=52:54:00:c9:18:27 \
$@

コマンドのソース

マシンの実行中または実行後のブリッジの状態の制御

$ dmesg
[time in sec ]
[13649.332345] br123: port 2(tap0) entered blocking state
[13649.332346] br123: port 2(tap0) entered forwarding state
  machine running
[13674.309067] br132: port 2(tap0) entered disabled state
  machine stopped

winXP SP3で次のアダプターを使用してセットアップを確認しましたが、すべてタップデバイスで機能します:

一部の場合のみ、外部ドライバーをインストールする必要があります。

rtl8139 Realtak RTL8139-Familie-PCI-Fast Ethernet-NIC   
   5.398.613.2003 RTL8139.sys   100 
ne2k_pci    Realtek RTL8029(AS)-basierender Ethernetadapter (Standard)
   5.508.803.2000 RTL8029.sys   10
e1000-82545em   Intel(R) PRO/1000 MT Network Connectiion
   Intel 8.10.3.0 e1000325.sys uvm. 1000
e1000   Intel(R) PRO/1000 MT Network Connectiion
   Intel 8.10.3.0 e1000325.sys uvm. 1000
virtio-net-pci  Red Hat VirtIO Ethnernet Adapter    
   51.73.104.12600 netkvm.sys 1000
1
Cutton Eye