qemu networking
以下エントリを参考にしつつ云々してみます。
上記エントリの QEMU networking の項では /etc/qemu-if{down, up} を云々とあります。でローカル側確認してみたらファイルがありました。
$ ls /etc/qemu* /etc/qemu-ifdown /etc/qemu-ifup /etc/qemu: target-x86_64.conf $
中身を確認してみます。
$ cat /etc/qemu-ifdown #!/bin/sh # NOTE: This script is intended to run in conjunction with qemu-ifup # which uses the same logic to find your bridge/switch nic=$1 if [ -f /etc/default/qemu-kvm ]; then . /etc/default/qemu-kvm fi if [ -z "$TAPBR" ]; then switch=$(ip route list | awk '/^default / { print $5 }') if [ ! -d "/sys/class/net/${switch}/bridge" ]; then switch=virbr0 fi else switch=$TAPBR fi brctl delif $switch $nic ifconfig $nic 0.0.0.0 down $
あるいは ifup
$ cat /etc/qemu-ifup #!/bin/sh nic=$1 if [ -f /etc/default/qemu-kvm ]; then . /etc/default/qemu-kvm fi if [ -z "$TAPBR" ]; then switch=$(ip route list | awk '/^default / { print $5 }') if [ ! -d "/sys/class/net/${switch}/bridge" ]; then switch=virbr0 fi else switch=$TAPBR fi ifconfig $nic 0.0.0.0 up brctl addif ${switch} $nic $
これってもしかして bridge-utils って思ったんですが違う模様。ええと話を元に戻すと上記エントリでは ifup は以下に、とのこと。
#qemu-ifup /sbin/ifconfig eth1 down /sbin/ifconfig eth1 0.0.0.0 promisc up openvpn --mktun --dev tap0 ifconfig tap 0 0.0.0.0 up brctl addbr br0 brctl addif br0 eth1 brctl addif br0 tap0 brctl stp br0 off ifconfig br0 10.10.10.2 netmask 255.255.255.0
むむ。とりあえず実行してみるか。
$ sudo /etc/qemu-ifup 0.0.0.0: ERROR while getting interface flags: No such device Incorrect number of arguments for command Usage: brctl addif <bridge> <device> add interface to bridge $
あらら。こうかな。
$ sudo /etc/qemu-ifup wlan0 bridge virbr0 does not exist! $
む。しかも通信できなくなっとるな。ちなみに /etc/qemu-ifdown wlan0 したら接続復帰しました。これ、現状 eth0 は使ってないのでソレを使う方が良いのかなぁ。
そもそもこのあたりの原理というか知識が皆無orz
とりあえず
virbr0 なデバイスファイルが無いのがアレ。
$ brctl show bridge name bridge id STP enabled interfaces $
うーん、Ubuntu で kvm を導入すれば云々て話がありますね。確かに kvm というパケジはありますが現状では導入されていないな。
$ sudo apt-get install kvm -s Reading package lists... Done Building dependency tree Reading state information... Done The following packages were automatically installed and are no longer required: gnome-backgrounds gnome-search-tool libgdict-common gnome-icon-theme-extras libgdict-1.0-6 fonts-cantarell gdm gnome-dictionary dconf-tools Use 'apt-get autoremove' to remove them. The following NEW packages will be installed: kvm 0 upgraded, 1 newly installed, 0 to remove and 60 not upgraded. Inst kvm (1:84+dfsg-0ubuntu16+1.0+noroms+0ubuntu14.1 Ubuntu:12.04/precise-updates [amd64]) Conf kvm (1:84+dfsg-0ubuntu16+1.0+noroms+0ubuntu14.1 Ubuntu:12.04/precise-updates [amd64]) $
入れてみるか。導入後も様子は変わらず。virsh というコマンドで云々、って libvirt-bin パケジが必要とか言われるなど。
$ virsh net-list The program 'virsh' is currently not installed. You can install it by typing: sudo apt-get install libvirt-bin $
導入して確認も微妙。と、brctl で virbr0 が出てきました。
$ brctl show bridge name bridge id STP enabled interfaces virbr0 8000.000000000000 yes $
これで qemu 起動してみたらどうなるんだろ。つうかコマンドの副作用をきちんと確認した方が良いな。
以下か。
$ brctl show bridge name bridge id STP enabled interfaces virbr0 8000.60eb69b67529 yes eth0 $
一応、eth0 は UP になってますね。
eth0 Link encap:Ethernet HWaddr 60:eb:69:b6:75:29 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) Interrupt:41 Base address:0xa000
うーん、とりあえず別件対応が出てるので一旦割り込み対応する、ということでエントリ投入します。もう少し基本的なあたりから確認しないと駄目な気がしてます。
追記
tap0 は uml-utilities パケジを導入して tunctl したらできた。
つうか、無理やりヤッてみました。openvpn パケジを導入して /etc/qemu-ifup が以下。
$ cat /etc/qemu-ifup #qemu-ifup /sbin/ifconfig eth0 down /sbin/ifconfig eth0 0.0.0.0 promisc up openvpn --mktun --dev tap0 ifconfig tap0 0.0.0.0 up brctl addbr br0 brctl addif br0 eth0 brctl addif br0 tap0 brctl stp br0 off ifconfig br0 10.10.10.2 netmask 255.255.255.0 $
eth0 は使ってないデバイスです。あるいは /etc/qemu-ifdown を以下に。
$ cat /etc/qemu-ifdown #qemu-ifdown ifconfig eth0 down ifconfig eth0 -promisc ifup eth0 ifconfig br0 down brctl delbr br0 openvpn --rmtun --dev tap0 $
ある意味コピペ状態です
で、/etc/qemu-ifup を実行して qemu な VM を起動。例えば以下。
$ sudo qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile \ -initrd initrd.img-2.6.32-5-versatile -hda hda.img.qcow2 \ -append "root=/dev/sda1" -net nic -net tap,ifname=tap0,script=no
これもドキュメントのまんまです。で、vm 起動したら以下なコマンドを投入したら
# ifconfig eth0 10.10.10.100 netmask 255.255.255.0
ホスト側とゲスト側で ping の返答が戻ってきている (らしい) ことが分かりました。が、ホストとゲストの間の通信しかできなさげ、なことも確認できてます。
ゲストがインターネットと通信
一旦 shutdown してインターネット接続なナニが可能かどうかを確認してみます。shutdown した後で以下。
$ sudo /etc/qemu-ifdown Thu Aug 9 22:36:38 2012 TUN/TAP device tap0 opened Thu Aug 9 22:36:38 2012 Persist state set to: OFF $
この状態で再度 qemu 起動してみます。
$ sudo qemu-system-arm -M versatilepb -kernel vmlinuz-2.6.32-5-versatile \ -initrd initrd.img-2.6.32-5-versatile -hda hda.img.qcow2 \ -append "root=/dev/sda1"
これで外とやりとりができるのか。つうか普通にどっちもデキて欲しいんだけどorz
通信できてるのかどうか
ping してみたら名前解決はできてるようです。が通信不能らしい。これはこれで微妙だなぁ。もう少し色々確認してみますが今日はもう駄目。