KVMサーバをセットアップする
NIC1つでタグVLANを使って複数サブネットに属させる理由
サーバ用のM/Bや、サーバ機を購入すれば、NICが2つ以上乗っている事は当たり前ですが、サイトの目的がECOなので、低消費電力の為にはNICの数も削減させます。これによって、スイッチのポート数、LANケーブル、サーバ側のNICの利用数を削減してECOを目指します。
今回は、5000~6000円程度で購入可能なVLAN、QOS機能を搭載したNetGearのProSafe Plusスイッチ(GS116E、GS108E)と連携して、1つのNICしか持っていないサーバで、タグVLAN用のDMZネットワークを用いて外向けサーバを運用するための準備をします。
なので、eth0.2やbr0.2等のインターフェースが出てきますが、これらはタグ付きのパケットを受け取るインターフェースとなり、bridge-utilsをインストールすることにより利用可能となります。
CPUが仮想化をサポートしているかの確認
OS側の設定を行っていく前に、KVMサーバのセットアップで注意する事がいくつかあるので、事前に確認しておきます。
- BIOSによる仮想化サポートが有効である
- CPUが仮想化をサポートしている
- メモリは十分に積んでいる(8GB以上を推奨)
KVMが使えるようにIntelのCPUがサポートしている機能にVMX(仮想化拡張機能)が含まれているかを確認する。(Celeron等の一部のCPUは対応していないと思います)
sudo cat /proc/cpuinfo | grep vmx flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm pcid sse4_1 sse4_2 popcnt tsc_deadline_timer xsave lahf_lm arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms
タグVLANとKVMに必要なパッケージをインストールする
sudo apt-get install bridge-utils sudo apt-get install qemu-kvm virt-manager virt-viewer sudo apt-get install vlan sudo modprobe 8021q sudo echo "8021q" >> /etc/modules
virbr0を使わない場合には削除する
KVMをインストールすると、自動的にvirbr0が作られますが、ブリッジを使うため不要なので削除します(必要なら残してください)。
sudo virsh net-list 名前 状態 自動起動 永続 ---------------------------------------------------------- default 動作中 はい (yes) はい (yes)
virbr0を削除する。
sudo virsh net-destroy default sudo virsh net-autostart default --disable sudo virsh net-list --all
interfacesファイルを修正してタグVLANとブリッジ用インターフェースを作成する
- eth0を自動起動するようにする。
- vlan-raw-deviceの設定でタグVLANをに対応するeth0.2を作る。
- ブリッジインターフェースであるbr0、br0.2を作る
# /etc/network/interfaces auto lo iface lo inet loopback auto eth0 iface eth0 inet manual auto eth0.2 iface eth0.2 inet manual vlan-raw-device eth0 auto br0 iface br0 inet static address 172.20.1.250 netmask 255.255.255.0 network 172.20.1.0 broadcast 172.20.1.255 gateway 172.20.1.1 bridge_ports eth0 bridge_stp off bridge_fd 0 bridge_maxwait 0 auto br0.2 iface br0.2 inet static address 172.20.2.250 netmask 255.255.255.0 network 172.20.2.0 broadcast 172.20.2.255 dns-nameservers 172.20.2.230 bridge_ports eth0.2 bridge_stp off bridge_fd 0 bridge_maxwait 0
ネットワークを再起動させて、eth0.2、br0、br0.2のネットワーク設定が出来たことを確認します。pingが通ることも、確認しておいてください。
sudo service networking restart ifconfig
起動時にiptablesの設定がされるように設定する
iptablesのルールについては、環境毎となり、ここで説明すると長くなってしまうため、『Ubuntu&タグVLAN&KVM環境でのiptablesの設定』に記事を分離しました。iptablesの設定をする上での目的は、仮想マシンが攻撃され、乗っ取られた場合でも、ホストOSに対しての通信を制限する事です。
終了時にゲストOSをシャットダウンさせる
sudo vi /usr/lib/libvirt/libvirt-guests.sh URIS=default ON_BOOT=start ON_SHUTDOWN=shutdown SHUTDOWN_TIMEOUT=300 PARALLEL_SHUTDOWN=0 START_DELAY=30 BYPASS_CACHE=0
以上でKVMサーバのセットアップは完了です。