--- title: KVMで仮想環境を整えてみる – (2) author: kazu634 date: 2011-07-04 wordtwit_post_info: - 'O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";i:1;s:5:"delay";i:0;s:7:"enabled";i:1;s:10:"separation";s:2:"60";s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:5437;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}' categories: - kvm - linux ---
前回はとりあえずOSイメージを指定して、OSをインストールするところまでできたと思います。OSインストール終了後にリブートすると、おそらくKVM上のゲストOSは再起動しないので、次のコマンドを実行してあげます:
$ sudo virsh start <ゲストOSの名前>
これで CD のマウントオプションを除いて、 virt-install で指示したオプション通りにゲストOSを起動してくれます。しかしここでつまずきの種が。。。
さて KVM で作成したゲスト OS はNATになります。ゲストOSから外部への通信はできるのですが、ホストOSを含む外部からゲストOSへのアクセスは出来ません。VMWareなんかだとNAT接続でもホスト-ゲスト間は通信できるのですが、KVMはそうではないみたいです。
そこでブリッジ接続(ホストOSと同じネットワークセグメントのIPアドレスで通信)をできるようにしてみます。
事前に次のコマンドを実行します:
$ sudo apt-get install libcap2-bin $ sudo setcap cap_net_admin=ei /usr/bin/qemu-system-x86_64 # x64の場合 $ sudo setcap cap_net_admin=ei /usr/bin/qemu # x32の場合
私のホストOSのUbuntuくんはNICが一枚です。初期状態だとネットワークの設定(/etc/network/interfaces)はこんな感じのはず:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet dhcp
静的にIPアドレスを割り当てている場合には、こんな感じになるのかな:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.11.8 netmask 255.255.255.0 network 192.168.11.0 broadcast 192.168.11.255 gateway 192.168.11.1
それを次のように変更してしまいます。なお、IPアドレス 192.168.11.8/24,ゲートウェイが192.168.11.1としてホストOSにアクセスすることとします:
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet manual auto br0 iface br0 inet static address 192.168.11.8 netmask 255.255.255.0 network 192.168.11.0 broadcast 192.168.11.255 gateway 192.168.11.1 bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0
参考:
ブリッジの接続設定を実施した後は、ゲストOSに割り当てたNICを変更してあげます。「/etc/libvirt/qemu/<ゲストOS名>」という名称の設定ファイルを書き換えます:
変更前:
<interface type='network'> <mac address='52:54:00:bc:d1:55'/> <source network='default'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </interface>
変更後:
<interface type='bridge'> <mac address='52:54:00:bc:d1:55'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
MACアドレスは変更しないほうがいいと思うよ。ネットワークの設定を変更後、設定を反映してあげます:
$ sudo virsh define <変更した設定ファイル名>
こんな感じでコマンドを指定します:
$ sudo virt-install --connect qemu:///system --name gateway --ram 256 --disk path=gateway.img,size=10 --network bridge=br0,model=virtio --vnc --cdrom /mnt/nas/kazu634/OSimages/ubuntu/ubuntu-10.04.2-server-amd64.iso
こんな感じで、–networkを複数指定します:
sudo virt-install --connect qemu:///system --name gateway --ram 256 --disk path=gateway.img,size=10 --network bridge=br0,model=virtio --network network=default,model=virtio --vnc --cdrom /mnt/nas/kazu634/OSimages/ubuntu/ubuntu-10.04.2-server-amd64.iso