CentOS5.5/KVM/nat接続

Last-modified: 2011-04-09 (土) 19:23:10
最終更新:2011-04-09 (土) 19:23:10
アクセス数(合計):?
利用者; ? アクセス数(本日):? アクセス数(昨日):?

KVM nat接続

仮想化サーバ環境であるKVMを導入する。
KVMはKernel-based Virtual Machineの略。Intel VTまたはAMD-VをサポートするCPU上で完全仮想化を実現する。


「ゲストOS」をサーバ運用する場合、「Bridge接続」が用いられる。しかし、

  • LANに規制があり、「LANの口1portにつき1macアドレス」しか接続できない
  • 「ゲストOS」毎に、ルート制御を行いたい。(特定サーバのみと通信したい等)

等で「ゲストOS」をBridge接続できない場合、nat接続を行う。


目的

仮想化によりホストサーバ上で複数サーバをnat接続で稼動させる。

構築条件

構築機器

  • 東芝ノートPC(Satellite K30)上で構築
     CPU:インテル P8400
     メモリ:1GB

作成環境

OS    CentOS 5.5 64bit版

※動作CPUがIntel VT(インテルCPU)またはAMD-V(AMDCPU)をサポートしていること。
 インテルのどのCPUがサポートしているかは以下URLにて確認
http://www.pc-koubou.jp/info/win7_vt.php

サーバ作成条件

ホストOSサーバIP192.168.0.10/24
ホスト名hogehogeServer
user   hogehoge
userpasswdhogehogepass
ゲストOSサーバIP192.168.0.11/24
内部IP192.168.122.11/24
ホスト名KVMhogehoge
user   hogehoge
userpasswdhogehogepass

手順記入ルール

  • コマンド行頭記号で 「$」はユーザ権限 「#」はスーパーユーザー権限 を表示
  • コマンドが長くなる場合は、行末に「\」を記述し複数行に記述。

前準備

  1. CentOSインストール 実施
  2. yumリポジトリ設定 実施


パッケージ選択差分は以下の通り、Gnome、Xwindow、Kvm以外は選択しない

  • 13)パッケージ選択 「デスクトップ環境」
    「GNOMEデスクトップ環境」のみチェック
  • 16)パッケージ選択 「サーバー」
    全てチェックを外す
  • ★17)パッケージ選択 「仮想化」では以下のとおり設定を行う。
    ・「KVM」をチェック

ゲストOSインストール

(1)仮想マシンマネージャ

[gnome]

  • 仮想マシンマネージャー起動

「アプリケーション」→「システムツール」→「仮想マシンマネージャー」
→仮想マシンマネージャーが立ち上がる。

  • 仮想マシン立ち上げ

「ID:qemu」をクリック→「新規」
以下画面が立ち上げ

[添付]

(2)ゲストOSインストール

  1. 「Virtual Machine Creation」画面
    →「進む」をクリック
  2. 「Virtual Machine Name」画面
    →NameにホストOSのサーバ名「KVMhogehoge」を設定し「進む」をクリック
  3. 「Virtualization Method」画面
    →「Fully virtualized」,CPUアーキテクチャ「x86_64」,ハイパーバイザー「kvm」確認後「進む」をクリック
  4. 「Installation Method」画面
    →「ローカルインストールのメディア(ISOイメージ、又はCDROM)」
     OSタイプ「Linux」
     OS種別「Red Hat EnterPrise Linux 5.4 or later」 ←※CentOSをインストールする場合の指定
    選択後「進む」をクリック
  5. 「Installation Media」画面
    →「CD-ROMまたはDVD」
     インストールメディアへのパス「CentOS_5.5_Final(/dev/scd0)」
    選択後「進む」をクリック
  6. 「Storage」画面
    →「File(disk image)」選択,SIZE「8000」MB設定
    設定後「進む」をクリック
  7. 「NetWork」画面
    「仮想ネットワーク」選択,ネットワーク「default」選択
    選択後「進む」をクリック
  8. 「Memory and CPU Allocation」画面
    →メモリー:Max memory「512」,Startup memry「512」設定
     CPU :Virtual CPUs「1」
    設定後「進む」をクリック
  9. 「Finish Virtual Machine Creation」画面
    →設定情報確認後「完了」をクリック

★「仮想マシンを作成中」のダイヤログが表示 ※完了まで10分ぐらいかかる

通常のインストール画面になるので、そのままインストールを実施する

ゲストOS IP固定化

ゲストOS IP設定

nat接続設定

(1)フォワード設定

外部ネット⇔(ホストOS)⇔ゲストOS 間のIP転送を有効化する

  • sysctl.confフォワード設定
# vi /etc/sysctl.conf
# Controls IP packet forwarding
net.ipv4.ip_forward = 0

   ↓

net.ipv4.ip_forward = 1
  • ip_forwardフォワード設定確認
# cat /proc/sys/net/ipv4/ip_forward
1

※「0」の場合は「1に変更」

  • ネットワーク再起動
# service network restart
インターフェース eth0 を終了中:                            [  OK  ]
ループバックインターフェースを終了中                       [  OK  ]
IPv4 パケット転送を無効化中:  net.ipv4.ip_forward = 0
                                                           [  OK  ]
ループバックインターフェイスを呼び込み中                   [  OK  ]
インターフェース eth0 を活性化中:                          [  OK  ]

(2)仮想IP設定

外部ネット⇔192.168.0.11(ホストOS)⇔ゲストOS ゲストOS外部からアクセス用のIPアドレスを設定

  • 仮想IP設定
# ifconfig eth0:1 192.168.0.11 netmask 255.255.255.0
  • 仮想IP元データコピー
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0:1
  • 仮想IPデータ設定
# vi /etc/sysconfig/network-scripts/ifcfg-eth0:1
# Intel Corporation 82567V Gigabit Network Connection
DEVICE=eth0
BOOTPROTO=static
BROADCAST=10.107.16.255
HWADDR=00:1C:7E:E8:E3:B7
IPADDR=10.107.16.101
NETMASK=255.255.255.0
NETWORK=10.107.16.0
ONBOOT=yes

  ↓

# Intel Corporation 82567V Gigabit Network Connection
DEVICE=eth0:1
BOOTPROTO=none
BROADCAST=10.107.16.255
HWADDR=00:1C:7E:E8:E3:B7
IPADDR=10.107.16.103
NETMASK=255.255.255.0
NETWORK=10.107.16.0
ONBOOT=yes
  • ネットワーク再起動
# ifup eth0:1
  • 確認
# ifconfig

★eth0:1が出力されること

(3)nat設定

外部ネット⇔192.168.0.11(ホストOS)192.168.122.11⇔ゲストOS nat接続設定

  • テーブル情報クリア
# iptables -F
# iptables -F -t nat
  • 接続フィルター設定
# iptables -A INPUT -p all -j ACCEPT
# iptables -A FORWARD -p all -d 192.168.122.0/24 -j ACCEPT
# iptables -A FORWARD -p all -s 192.168.122.0/24 -j ACCEPT
  • nat設定
# iptables -t nat -A POSTROUTING -s 192.168.122.11 -j SNAT --to 192.168.0.11 -d! 192.168.122.0/24
# iptables -t nat -A PREROUTING -d 192.168.0.11 -p tcp -j DNAT --to 192.168.122.11
# iptables -t nat -A PREROUTING -d 192.168.0.11 -p icmp -j DNAT --to 192.168.122.11
  • 確認
# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             anywhere
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
ACCEPT     all  --  anywhere             192.168.122.0/24
ACCEPT     all  --  192.168.122.0/24     anywhere
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             192.168.0.11       to:192.168.122.11
DNAT       icmp --  anywhere             192.168.0.11       to:192.168.122.11
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
SNAT       all  --  192.168.122.11       !192.168.122.0/24    to:192.168.0.11
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

(4)nat保存

  • iptablesを保存し、再起動後も再設定されるようにする
# /etc/rc.d/init.d/iptables save
ファイアウォールのルールを /etc/sysconfig/iptables に保存中[  OK  ]

遭遇したトラブル

ゲストOSが作成できない

問題:
仮想マネージャーで仮想ホストを作成出来ない

原因:
CPUに仮想化支援機能が無い。・・特にインテルのモバイルCPUは最新CPUでも仮想化未対応の場合があるので注意!
以下URLにて仮想化対応しているか確認すること
http://www.pc-koubou.jp/info/win7_vt.php

謝辞

テキスト作成にあたり、以下サイトを参考にさせて頂きました。ありがとうございます。

http://tipspc.blogspot.com/2009/09/qemu-kvm.html
http://www.asahi-net.or.jp/~aa4t-nngk/kvm.html#differentnetways