qemuで実行されるクエストオペレーティングシステムのネットワーキングとSamba

qemuで実行されるクエストオペレーティングシステムのネットワーキングとSamba

互換性を確認するために、ビッグエンディアンシステムでいくつかのソフトウェアをテストしようとしています。私の計画は、Ubuntu 12.04でqemuを使用してMIPSシステムをエミュレートすることです。これまでミッションシステムを正常に作成できましたが、ホストシステムとネットワークに接続できませんでした。ゲストシステム(wgetやapt-getなど)から外部の世界にアクセスできますが、Sambaの設定に失敗します。

~によるとこれ、QEmu 1.1以降では、ブリッジアシスタントは追加のスクリプトなしでtun / tapを設定できます。さまざまなバージョンのスクリプトを見たので、それを使用しようとしています。現在の状況はqemu-system-mips -version次のように報告されます。

QEMU emulator version 1.0.50 (Debian 1.0.50-2012.03-0ubuntu2.1), Copyright (c) 2003-2008 Fabrice Bellard

私は1.4.1ソースでコンパイルして使用しましたapt-get。どちらも同じ内容を報告しました。-version私が聞いた内容にもかかわらず、バージョン1.1以降があるとします。とにかく、次のガイドラインは、ネイティブネットワークヘルパーのsetuid属性をオンにすることです。

sudo chmod u+s /usr/local/libexec/qemu-bridge-helper

次に、権限を取得するためにファイルを作成しましたbridge.conf。ファイルの内容は次のとおりです。/etc/qemu//usr/local/etc/qemu-rw-r--r--

allow br0

次のようにQEmuを起動すると:

qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda disk.img -append "root=/dev/sda1 console=ttyS0" -nographic -net nic -net bridge,br=br0 -smb /home/uli/samba

または

qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda disk.img -append "root=/dev/sda1 console=ttyS0" -nographic -netdev bridge,id=hn0 -device virtio-net-pci,netdev=hn0,id=nic1

または

qemu-system-mips -M malta -kernel vmlinux-2.6.32-5-4kc-malta -hda disk.img -append "root=/dev/sda1 console=ttyS0" -nographic  -netdev tap,helper=/usr/local/libexec/qemu-bridge-helper,id=hn0 -device virtio-net-pci,netdev=hn0,id=nic1

次のエラーが発生します。

failed to get mtu of bridge `br0': No such device
failed to launch bridge helper
qemu-system-mips: -net bridge,br=br0: Device 'bridge' could not be initialized

公平に言えば、私はbr0ブリッジを作りませんでした。私は理解していないスクリプトを使って1つを作成しようとしましたが、私の作業MIPS QEmuシステムはもう何も接続されていません。 br0が表示されますが、IPアドレスを取得できません。明らかに私がここで何か間違っているようです。

ifconfig br0 down
brctl delbr br0

ifconfig eth2 0.0.0.0 promisc up

brctl addbr br0
brctl setfd br0 0
brctl addif br0 eth2

echo 1 > /proc/sys/net/ipv4/conf/br0/proxy_arp
echo 1 > /proc/sys/net/ipv4/conf/eth2/proxy_arp
echo 1 > /proc/sys/net/ipv4/ip_forward

dhclient br0
ifconfig br0 up

これを行うより簡単な方法はありますか?個人的には、説明したように\ 10.0.2.4 \ qemuのSMBサーバーを使用します。ここしかし、それは私には効果がありませんでした(共有をマウントしようとしたときに、おそらくネットワークの問題のために115エラーが発生しました)。

修正する

ブリッジを作成すると、ホストのifconfigに次の出力が表示されます。

br0       Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          inet addr:10.2.32.101  Bcast:10.2.32.255  Mask:255.255.255.0          
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:85 errors:0 dropped:0 overruns:0 frame:0
          TX packets:51 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:8235 (8.2 KB)  TX bytes:9227 (9.2 KB)

eth2      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:196581 errors:0 dropped:0 overruns:0 frame:0
          TX packets:44205 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:139517339 (139.5 MB)  TX bytes:3365206 (3.3 MB)

brctl show出力を確認すると、以下が表示されます。

bridge name     bridge id           STP enabled     interfaces
br0             8000.XXXXXXXXXXXX       no              eth2

これでQEmuでジョブシステムを起動します。 ifconfigを実行すると、次のようになります。

eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:536 errors:1 dropped:51 overruns:0 frame:0
          TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:55083 (53.7 KiB)  TX bytes:2862 (2.7 KiB)
          Interrupt:10 Base address:0x1020

足は次のとおりです。

bridge name     bridge id           STP enabled     interfaces
br0             8000.XXXXXXXXXXXX   no      eth2
                                                        tap0

残念ながら、この設定を使用すると、ジョブシステムは一時的に持っていた制限付き「ユーザーモード」ネットワーキングを失います(たとえば、wgetとapt-getは機能しなくなります)。私が見る唯一のIPアドレスはブリッジのIPアドレスなので、タスクがネットワークにどのように表示されるのかわかりません。ホストはまだbr0と同じIPアドレスで表示されます。

修正する

これは iptables -L の出力です。

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   

答え1

ブリッジを実行するときは、ブリッジ(eth2)のメンバーにIPアドレスが割り当てられなくなります。 br0は今IPを取得する必要があります。

はい

これは KVM を使用するシステムの出力です。内部的にはqemu-kvmを使用しているので、必要なものと同様に設定する必要があります。

$ ifconfig -a
br0       Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX
          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2929289877 errors:0 dropped:0 overruns:0 frame:0
          TX packets:842023980 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1992305504701 (1.8 TiB)  TX bytes:3609403664141 (3.2 TiB)

eth0      Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3737819958 errors:0 dropped:168 overruns:0 frame:0
          TX packets:1233468235 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2735097151685 (2.4 TiB)  TX bytes:4313257594064 (3.9 TiB)
          Interrupt:177 

eth0にIPアドレスがない理由を確認してください。私のbr0デバイスは次のとおりです。

$ brctl show
bridge name bridge id               STP enabled     interfaces
br0         8000.XXXXXXXXXXXX       no              vnet2
                                                    vnet1
                                                    vnet0
                                                    eth0

br0デバイスには3つの仮想マシンがあり、物理的な物理システムのようにネットワークに完全に参加できます。これは、Sambaの実行などのサービスを提供できることを意味します。 NATネットワークの背後にSambaを提供できるとは思いません。

関連情報