libvirt での KVM/QEMU ネットワーク TAP の問題
質問
libvirt と virsh を使用して kvm/qemu VM を管理しようとしています。私が抱えている問題は、パブリック IP で動作させることです。サーバーはubuntu 8.04を実行しています。
libvirt は次のように実行を試行し続けます。
/usr/bin/kvm -M pc -m 256 -smp 3 -monitor pty -no-acpi \
-drive file=/opt/virtual-machines/calculon/root.qcow2,if=ide,boot=on \
-net nic,vlan=0,model=virtio -net tap,fd=10,vlan=0 -usb -vnc 127.0.0.1:0
起動はしますが、ネットワークにアクセスできません (ping がどこにも送信されません)。fd=10 を指定せずに実行すると、kvm が必要な TAP デバイスを作成し、ホスト内でネットワークが機能するため、正常に動作します。私が見たすべてのセットアップ ガイドはマスカレードのセットアップに重点を置いていますが、私は単純なブリッジとネットへのフィルターなしのアクセス (ゲストとホストの両方がパブリック IP を使用する必要がある) を必要としているだけです。
ホスト上で ifconfig を実行するとこれが得られ、ブリッジは /etc/network/interfaces ファイルで手動でセットアップされます。:
br0 Link encap:Ethernet HWaddr 00:1e:c9:3c:59:b8
inet addr:12.34.56.78 Bcast:12.34.56.79 Mask:255.255.255.240
inet6 addr: fe80::21e:c9ff:fe3c:59b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3359 errors:0 dropped:0 overruns:0 frame:0
TX packets:3025 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:180646 (176.4 KB) TX bytes:230908 (225.4 KB)
eth0 Link encap:Ethernet HWaddr 00:1e:c9:3c:59:b8
inet6 addr: fe80::21e:c9ff:fe3c:59b8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6088386 errors:0 dropped:0 overruns:0 frame:0
TX packets:3058 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:680236624 (648.7 MB) TX bytes:261696 (255.5 KB)
Interrupt:33
ご協力をいただければ幸いです。
解決
次のブリッジ ネットワーキング ガイドに従いました。 https://help.ubuntu.com/community/KVM /etc/network/interfaces には次のものがあります。
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.0.10
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
gateway 192.168.0.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
libvirt ネットワーク設定を変更していないため、kvm イメージは次のように起動されます。
/usr/bin/kvm -M pc -no-kqemu -m 256 -smp 1 -monitor pty -boot c -hda \
/libvirt/apt.img -net nic,macaddr=00:16:3e:77:32:1d,vlan=0 -net \
tap,fd=11,script=,vlan=0 -usb -vnc 127.0.0.1:0
次に、通常どおり、kvm イメージで静的ネットワーク設定を指定します。ガイドに従ってからすべてうまくいきました。
/etc/libvirt/qemu/ の xml ファイルには、devices の下に次の設定があります。
<interface type='bridge'>
<mac address='00:16:3e:77:32:1d'/>
<source bridge='br0'/>
</interface>
他のヒント
タップデバイスが ifconfig に表示されるはずだと思います。
「brctl show」を実行します
ブリッジとトンネルデバイスの接続が表示されます。
すべてのパケットがブリッジ経由でルーティングされることを示す iptable エントリを追加する必要がある場合があります
iptables -I INPUT -i br0 -j ACCEPT