KVMの使い道 (8)

今まで知らなかった,KVMについて,実際にインストールして,無線クラブの会員向けサーバーとなる予定の仮想マシンのディスクイメージを作成しました.

そもそも,Slackwareは,KVMをサポートしていませんので,必要なソフトをいろいろかき集めてインストールして,最終的にはvirt-managerで,仮想マシンの作成,稼働,停止までできるようになりました.

無線クラブのサーバーの作成の他には,自宅サーバーのクローンを作成して,懸案だった,httpd 2.2→2.4の試行に利用して,その手順によって,実サーバーのhttpdを短いダウンタイムでupgradeすることができました.

というわけで,興味もポテンシャルも上がったのですが,では,次に何をするかとなると,思いつきません.

攻撃を受けやすい外部向けサービスを仮想マシンに移転するというのは,実利的かもしれません.実サーバーから仮想マシンへは入れるけど,仮想マシンから実マシンには入れないようにしておけば,仮に仮想マシンがクラックされても,実マシンへ侵入されにくくなります.

デメリットとしては,仮想マシンとはいえ,ちゃんと管理すべきで,お守りをするマシンが1台増えるということになります.

それから,GUIも動きますが,どうしてもモニターの表示領域をフルには使えませんから,GUIがメインの用途には今ひとつです.

ということで,いまひとつおもしろくないです^^; どうしたものか.

KVM (7) 完成

一週間前に,「ほぼ思った通りに」と書きましたが,その”ほぼ”に含まれない部分が実は重大でして,解決するのに一週間かかりました^^;

ホストのDNSサーバーにつながらないのです.解ってしまえば,どうってこと無いのですが,named.confのviewの設定でアクセスを”localnet”だけにするのが普通ですが,ホストから見たKVMのネットは,localnetに含まれません.そこで,

view "inside" {
        match-clients { localnet; 192.168.122.0/24; };

のようにする必要がありました.

あとは,得意のiptablesで,LAN内はIP NAT, 外向きには,IP Masqueradingでさくさくです^^;

ようやく,ゲストOSの本格的なセッティングに取りかかれます.

が,しばらくネットにつながらない^^;

KVM (6) ほぼ思った通りに

やっと,ネットの方も思った通りの挙動をしてくれるようになりました.

libvirtdを起動してから,iptablesを再度定義し直すことで,iptables関係のトラブルを回避できるようになりました.こちらが書き換えたiptablesをlibvirtdが,元に戻すような粘着質だったらどうしようかと思いましたが,起動時だけiptablesコマンド群を発行するようです.

某所では最終的に,ホストとは別のグローバルipを仮想マシンが持つことになるので,ホストには,

ifconfig eth0:1 グローバルip2 -netmask 255.255.255.0 up

として,このグローバルip2を,DNAT, SNATでホストと通信するゲストのipアドレスを変換します.

KVM (5) ネットの設定難航

ネットが実にわかりにくいですね.

ゲストのネットアクセスをどうするか,KVMにはいくつかの方法が用意されていますが,私のところで唯一動いたのは,NATを利用する方法です.ゲストに仮想的なNICを装着させて,ホスト側では,それを仮想的なディバイスで受け止めます.まあ,P-Pのような接続形態になります(ゲスト同士ではlocalnet内としてつながるかもしれませんが,それまでは予定していません^^; ).

外界へはどう出るかとなると,NATなのです.KVM(qemu)を走らせるためのデーモン,libvirtdが,起動時に,iptablesを書き換えてくれます.

ありふれたLANの中に1つだけインターフェースを持ったWSが特にiptablesを使わずに動いているというありふれた場合には,大変ありがたい機能です.

しかし^^; 私の管理しているWSは,どれも,2つ以上のLANアダプターを装着し,別の仮想的なネットワーク用のポートがいくつか装着されています.当然,iptablesを駆使して,かなりいろんな設定をしています^^;

これで,libvirtdに書き換えられてしまうと,なかなか面倒です.ということで,どうすれば,libvirtdが起動するときに,余計なことをしてくれないように設定すれば良いのか,というところにぶち当たってます.

KVM (4) やっと起動

起動はしていたんですが,やっとコンソールがつながりました(コンソールがつながらなければ,起動していてもしょうがないです^^; ).

Spice関係のインストールで,Gtkを明示的に3.0と指定することで,動くようになりました.

あとは,ネットのセッティングができれば,完成となると思います.

20141116-vm 20141116-vm2 20141116-vm3