labunix's blog

labunixのラボUnix

vmplayer内のXenを、ルーティングモードで接続する。

■環境は以下。
 簡単に言うと、ホストeth0->vmnet8のvmwareゲストとしてのXenホスト上のeth1->vif1.0->eth0ゲストに接続する。
 。。。と言うと、難しく聞こえるので。。。

 debian-amd64(Wheezy)(vmxフラグあり)の、
 vmplayerx2のVT-xをチェックオンにして、
 Xenカーネルのdebian-amd64(Wheezy)を稼働するとvmxフラグなしになって、
 ゲストとしてdebian-amd64(Wheezy)を稼働できる。

 vmplayer内のWheezyにXenを導入
 http://d.hatena.ne.jp/labunix/20130702

■上記の手順でXenカーネルで動かすと、vmxフラグが無いのでKVMサービスが稼働しない。

$ sudo chkconfig qemu-kvm off
$ sudo chkconfig --list qemu-kvm
qemu-kvm                  0:off  1:off  2:off  3:off  4:off  5:off  6:off

■vmplayer内のXenを、ルーティングモードでブリッジする。
 ホストOS側のeth0や、eth0.100(VLAN)は使わない方がベター。
 eth0だと使えなかったり、eth0.100だと仮想IPにブリッジしてしまったりするので、
 eth1をブリッジする。

$ grep vif /etc/xen/vmvm2.cfg
vif         = [ 'ip=192.168.152.61 ,mac=00:16:3E:5A:4E:EC' ]

$  grep "^(vif\|^(network" /etc/xen/xend-config.sxp
(network-script 'network-route netdev=eth1')
(vif-script     vif-route)

$ sudo /etc/init.d/xen restart

■eth1とvif1.0のHWaddrの確認。

$ env LANG=C /sbin/ifconfig eth1 | head -1
eth1      Link encap:Ethernet  HWaddr 00:0c:29:99:46:3a

■仮想マシンの起動

$ sudo xm create vmvm2.cfg
Using config file "/etc/xen/vmvm2.cfg".
Started domain vmvm2 (id=2)

■vifが作成される。
$ env LANG=C /sbin/ifconfig vif1.0 | head -2
vif1.0    Link encap:Ethernet  HWaddr fe:ff:ff:ff:ff:ff
          inet addr:192.168.152.91  Bcast:192.168.152.255  Mask:255.255.255.255

■sshでのログインも可能。

$ ssh 192.168.152.61

■「vmvm2.cfg」で指定したHWaddrと一致すること。

$ sudo xm network-list vmvm2
Idx BE     MAC Addr.     handle state evt-ch tx-/rx-ring-ref BE-path
0   0  00:16:3E:5A:4E:EC    0     4      10    768  /769     /local/domain/0/backend/vif/1/0

■これでホストdebian上のvmpalayer上のXen-debian上のdebianも普通のdebian。

$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             PHYSDEV match --physdev-out vif1.0 --physdev-is-bridged
ACCEPT     udp  --  anywhere             anywhere             PHYSDEV match --physdev-in vif1.0 --physdev-is-bridged udp spt:bootpc dpt:bootps
ACCEPT     all  --  anywhere             anywhere             PHYSDEV match --physdev-out vif1.0 --physdev-is-bridged
ACCEPT     all  --  vmvm2                 anywhere             PHYSDEV match --physdev-in vif1.0 --physdev-is-bridged

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination