blog/content/post/2011/07/04/2011-07-04-kvmで仮想環境を整えてみる-2.md

227 lines
12 KiB
Markdown
Raw Normal View History

2019-03-31 11:00:21 +00:00
---
title: KVMで仮想環境を整えてみる (2)
author: kazu634
date: 2011-07-04
url: /2011/07/04/_1716/
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
---
<div class="section">
<p>
前回はとりあえずOSイメージを指定して、OSをインストールするところまでできたと思います。OSインストール終了後にリブートすると、おそらくKVM上のゲストOSは再起動しないので、次のコマンドを実行してあげます:
</p>
<pre class="syntax-highlight">
$ sudo virsh <span class="synStatement">start</span> <span class="synStatement">&#60;</span>ゲストOSの名前<span class="synStatement">&#62;</span>
</pre>
<p>
これで CD のマウントオプションを除いて、 virt-install で指示したオプション通りにゲストOSを起動してくれます。しかしここでつまずきの種が。。。
</p>
<h4>
ゲストOSのネットワーク設定について
</h4>
<p>
さて KVM で作成したゲスト OS はNATになります。ゲストOSから外部への通信はできるのですが、ホストOSを含む外部からゲストOSへのアクセスは出来ません。VMWareなんかだとNAT接続でもホスト-ゲスト間は通信できるのですが、KVMはそうではないみたいです。
</p>
<p>
そこでブリッジ接続(ホストOSと同じネットワークセグメントのIPアドレスで通信)をできるようにしてみます。
</p>
<h4>
事前準備
</h4>
<p>
事前に次のコマンドを実行します:
</p>
<pre class="syntax-highlight">
$ sudo apt-get <span class="synStatement">install</span> libcap2-bin
$ sudo setcap <span class="synIdentifier">cap_net_admin</span>=ei /usr/bin/qemu-system-x86_64<span class="synComment"> # x64の場合</span>
$ sudo setcap <span class="synIdentifier">cap_net_admin</span>=ei /usr/bin/qemu <span class="synComment"> # x32の場合</span>
</pre>
<h4>
ブリッジ接続の設定方法
</h4>
<p>
私のホストOSのUbuntuくんはNICが一枚です。初期状態だとネットワークの設定(/etc/network/interfaces)はこんな感じのはず:
</p>
<pre class="syntax-highlight">
<span class="synComment"># This file describes the network interfaces available on your system</span>
<span class="synComment"># and how to activate them. For more information, see interfaces(5).</span>
<span class="synComment"># The loopback network interface</span>
auto lo
iface lo inet loopback
<span class="synComment"># The primary network interface</span>
auto eth0
iface eth0 inet dhcp
</pre>
<p>
静的にIPアドレスを割り当てている場合には、こんな感じになるのかな:
</p>
<pre class="syntax-highlight">
<span class="synComment"># This file describes the network interfaces available on your system</span>
<span class="synComment"># and how to activate them. For more information, see interfaces(5).</span>
<span class="synComment"># The loopback network interface</span>
auto lo
iface lo inet loopback
<span class="synComment"># The primary network interface</span>
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
</pre>
<p>
それを次のように変更してしまいます。なお、IPアドレス 192.168.11.8/24,ゲートウェイが192.168.11.1としてホストOSにアクセスすることとします:
</p>
<pre class="syntax-highlight">
<span class="synComment"># This file describes the network interfaces available on your system</span>
<span class="synComment"># and how to activate them. For more information, see interfaces(5).</span>
<span class="synComment"># The loopback network interface</span>
auto lo
iface lo inet loopback
<span class="synComment"># The primary network interface</span>
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
</pre>
<p>
参考:
</p>
<ul>
<li>
<a href="https://help.ubuntu.com/community/KVM/Networking" onclick="__gaTracker('send', 'event', 'outbound-article', 'https://help.ubuntu.com/community/KVM/Networking', 'KVM/Networking &#8211; Community Help Wiki');" target="_blank">KVM/Networking &#8211; Community Help Wiki</a>
</li>
</ul>
<h4>
ゲストOSのNICを変更する
</h4>
<p>
ブリッジの接続設定を実施した後は、ゲストOSに割り当てたNICを変更してあげます。「/etc/libvirt/qemu/<ゲストOS名>」という名称の設定ファイルを書き換えます:
</p>
<p>
変更前:
</p>
<pre class="syntax-highlight">
&#60;interface type=<span class="synConstant">'network'</span>&#62;
&#60;mac address=<span class="synConstant">'52:54:00:bc:d1:55'</span>/&#62;
&#60;source network=<span class="synConstant">'default'</span>/&#62;
&#60;model type=<span class="synConstant">'virtio'</span>/&#62;
&#60;address type=<span class="synConstant">'pci'</span> domain=<span class="synConstant">'0x0000'</span> bus=<span class="synConstant">'0x00'</span> slot=<span class="synConstant">'0x04'</span> function=<span class="synConstant">'0x0'</span>/&#62;
&#60;/interface&#62;
</pre>
<p>
変更後:
</p>
<pre class="syntax-highlight">
&#60;interface type=<span class="synConstant">'bridge'</span>&#62;
&#60;mac address=<span class="synConstant">'52:54:00:bc:d1:55'</span>/&#62;
&#60;source bridge=<span class="synConstant">'br0'</span>/&#62;
&#60;model type=<span class="synConstant">'virtio'</span>/&#62;
&#60;address type=<span class="synConstant">'pci'</span> domain=<span class="synConstant">'0x0000'</span> bus=<span class="synConstant">'0x00'</span> slot=<span class="synConstant">'0x03'</span> function=<span class="synConstant">'0x0'</span>/&#62;
&#60;/interface&#62;
</pre>
<p>
MACアドレスは変更しないほうがいいと思うよ。ネットワークの設定を変更後、設定を反映してあげます:
</p>
<pre class="syntax-highlight">
$ sudo virsh define <span class="synStatement">&#60;</span>変更した設定ファイル名<span class="synStatement">&#62;</span>
</pre>
<h4>
virt-installコマンドでブリッジ接続のNICをゲストOSに割り当てる
</h4>
<p>
こんな感じでコマンドを指定します:
</p>
<pre class="syntax-highlight">
$ sudo virt-<span class="synStatement">install</span> <span class="synSpecial">--connect</span> qemu:///system <span class="synSpecial">--name</span> gateway <span class="synSpecial">--ram</span> <span class="synConstant">256</span> <span class="synSpecial">--disk</span> <span class="synIdentifier">path</span>=<span class="synIdentifier">gateway.img,size</span>=<span class="synConstant">10</span> <span class="synSpecial">--network</span> <span class="synIdentifier">bridge</span>=<span class="synIdentifier">br0,model</span>=virtio <span class="synSpecial">--vnc</span> <span class="synSpecial">--cdrom</span> /mnt/nas/kazu634/OSimages/ubuntu/ubuntu<span class="synConstant">-10</span>.<span class="synConstant">04</span>.<span class="synConstant">2</span>-server-amd64.iso
</pre>
<h4>
virt-installコマンドで複数NICになるようしてゲストOSを作成する
</h4>
<p>
こんな感じで、&#8211;networkを複数指定します:
</p>
<pre class="syntax-highlight">
sudo virt-<span class="synStatement">install</span> <span class="synSpecial">--connect</span> qemu:///system <span class="synSpecial">--name</span> gateway <span class="synSpecial">--ram</span> <span class="synConstant">256</span> <span class="synSpecial">--disk</span> <span class="synIdentifier">path</span>=<span class="synIdentifier">gateway.img,size</span>=<span class="synConstant">10</span> <span class="synSpecial">--network</span> <span class="synIdentifier">bridge</span>=<span class="synIdentifier">br0,model</span>=virtio <span class="synSpecial">--network</span> <span class="synIdentifier">network</span>=<span class="synIdentifier">default,model</span>=virtio <span class="synSpecial">--vnc</span> <span class="synSpecial">--cdrom</span> /mnt/nas/kazu634/OSimages/ubuntu/ubuntu<span class="synConstant">-10</span>.<span class="synConstant">04</span>.<span class="synConstant">2</span>-server-amd64.iso
</pre>
<div class="hatena-asin-detail">
<a href="http://www.amazon.co.jp/dp/4798121401/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4798121401/?tag=hatena_st1-22&ascsubtag=d-7ibv', '');"><img src="https://images-na.ssl-images-amazon.com/images/I/51BpsUti-5L._SL160_.jpg" class="hatena-asin-detail-image" alt="KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド" title="KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド" /></a></p>
<div class="hatena-asin-detail-info">
<p class="hatena-asin-detail-title">
<a href="http://www.amazon.co.jp/dp/4798121401/?tag=hatena_st1-22&ascsubtag=d-7ibv" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://www.amazon.co.jp/dp/4798121401/?tag=hatena_st1-22&ascsubtag=d-7ibv', 'KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド');">KVM徹底入門 Linuxカーネル仮想化基盤構築ガイド</a>
</p>
<ul>
<li>
<span class="hatena-asin-detail-label">作者:</span> <a href="http://d.hatena.ne.jp/keyword/%CA%BF%BD%E9" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%CA%BF%BD%E9', '平初');" class="keyword">平初</a>,<a href="http://d.hatena.ne.jp/keyword/%BF%B9%BC%E3%CF%C2%CD%BA" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%BF%B9%BC%E3%CF%C2%CD%BA', '森若和雄');" class="keyword">森若和雄</a>,<a href="http://d.hatena.ne.jp/keyword/%C4%E1%CC%EE%CE%B6%B0%EC%CF%BA" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%C4%E1%CC%EE%CE%B6%B0%EC%CF%BA', '鶴野龍一郎');" class="keyword">鶴野龍一郎</a>,<a href="http://d.hatena.ne.jp/keyword/%A4%DE%A4%A8%A4%C0%A4%B3%A4%A6%A4%D8%A4%A4" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%A4%DE%A4%A8%A4%C0%A4%B3%A4%A6%A4%D8%A4%A4', 'まえだこうへい');" class="keyword">まえだこうへい</a>
</li>
<li>
<span class="hatena-asin-detail-label">出版社/メーカー:</span> <a href="http://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/keyword/%E6%C6%B1%CB%BC%D2', '翔泳社');" class="keyword">翔泳社</a>
</li>
<li>
<span class="hatena-asin-detail-label">発売日:</span> 2010/07/08
</li>
<li>
<span class="hatena-asin-detail-label">メディア:</span> 大型本
</li>
<li>
<span class="hatena-asin-detail-label">購入</span>: 5人 <span class="hatena-asin-detail-label">クリック</span>: 227回
</li>
<li>
<a href="http://d.hatena.ne.jp/asin/4798121401" onclick="__gaTracker('send', 'event', 'outbound-article', 'http://d.hatena.ne.jp/asin/4798121401', 'この商品を含むブログ (15件) を見る');" target="_blank">この商品を含むブログ (15件) を見る</a>
</li>
</ul>
</div>
<div class="hatena-asin-detail-foot">
</div>
</div>
</div>