Scientific Linux+KVMのネットワーク設定

前回に続いてKVMシリーズ、今回は前回作った3個のVMとネットワークを繋ごうと思います。
今回の内容は参考サイトさまさまな内容なんだな。

最初にbr0を作る。eth0からコピればOK。

[root@take ~]# cd /etc/sysconfig/network-scripts/
[root@take network-scripts]# cp ifcfg-eth0 ifcfg-br0

eth0にブリッジを記述する。

[root@take network-scripts]# vi ifcfg-eth0 
BRIDGE=br0

続いてbr0の記述だけど、ここは環境で異なるはずなのですが、TYPEとIPの記述をしていればOKの様子。
CATで見てみよう。

[root@take network-scripts]# cat ifcfg-br0 
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=none
IPADDR=192.168.44.132
PREFIX=24
GATEWAY=192.168.44.2
DNS1=192.168.44.2

次にeth0をpromiscモードにする、プロミスキャスモードの事で、何でも恋ってモード。

[root@take network-scripts]# ifconfig eth0 promisc

さて、次にブリッジ用のネットワークを立ち上げるスクリプト。これは参考サイトのものを拝借。

[root@take ~]# cat /etc/qemu-ifup 
#!/bin/sh

echo "Executing /etc/qemu-ifup" 
/sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
/usr/sbin/brctl addif br0 $1
sleep 3

[root@take ~]# cat /etc/qemu-ifdown 
#!/bin/sh

/usr/sbin/brctl delif br0 $1
/sbin/ifconfig $1 down

参考サイトの方が嵌ったとこらしいのだけど、見ながらやってるたけけんも嵌ってしまった・・・。
マニュアルはちゃんと読みましょうという典型的なパターンです。

chmod 775

[root@take ~]# ll /etc/qemu-if*
-rwxrwxr-x 1 root root  63  9月 16 20:22 2013 /etc/qemu-ifdown
-rwxrwxr-x 1 root root 146  9月 16 20:22 2013 /etc/qemu-ifup

これで下準備は完了です。あとはオリーブオイルをかけるだけ。

前回のコマンドに付け足すのはこの部分。

-net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap0,script=/etc/qemu-ifup -k j

もろにネットワークな記述ですなあ。

付け足してISOから起動してインストールするときはこんな感じに。

qemu-system-x86_64 -hda vm00.img -m 512 -monitor telnet::10001,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap1,script=/etc/qemu-ifup -k ja -vnc :0 -daemonize -boot d -cdrom /root/CentOS-6.4-x86_64-bin-DVD1.iso

インストールが終わって次に起動するときはCD-ROMのところは省かないと永遠にCDブートになりますので以下の部分を省略する。

-boot d -cdrom /root/CentOS-6.4-x86_64-bin-DVD1.iso
qemu-system-x86_64 -hda vm00.img -m 512 -monitor telnet::10001,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap1,script=/etc/qemu-ifup -k ja -vnc :0 -daemonize

これでVM1個は完成です。OSのインストール部分は省略しまっせ。後は好きなだけVMを追加してください。

追加するときはまたVMの作成からやろう。

[root@take ~]# qemu-img create -f qcow2 vm02.img 5G
Formatting 'vm02.img', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off

複数のVMを動かす時に気を付けるところは、VNCの番号とネットワークのTAPを変えないとエラーになります。
もちろんVMのファイル名も変えないとだね。
以下はqemuのエラー。

qemu-system-x86_64: -net tap,ifname=tap0,script=/etc/qemu-ifup: could not configure /dev/net/tun (tap0): Device or resource busy
qemu-system-x86_64: -net tap,ifname=tap0,script=/etc/qemu-ifup: Device 'tap' could not be initialized

VNCの方はBusyっていう表示が出て確認ができません。
コマンドで説明した方が早いのでコマンドで。以下のコマンドでOKです。

スクリプトにしてもいいかもね。

qemu-system-x86_64 -hda vm00.img -m 512 -monitor telnet::10001,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap1,script=/etc/qemu-ifup -k ja -vnc :0 -daemonize
qemu-system-x86_64 -hda vm01.img -m 512 -monitor telnet::10002,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap2,script=/etc/qemu-ifup -k ja -vnc :1 -daemonize
qemu-system-x86_64 -hda vm02.img -m 512 -monitor telnet::10003,server,nowait -net nic,macaddr=00:00:00:00:00:01 -net tap,ifname=tap3,script=/etc/qemu-ifup -k ja -vnc :2 -daemonize

そうそう、VMを落とす時はどうするのかというと、telnetで繋いでqします。
そのための起動オプションなのです。

[root@take ~]# telnet localhost  10001
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
QEMU 1.2.0 monitor - type 'help' for more information
(qemu) q
Connection closed by foreign host.

[root@take ~]# telnet localhost  10002
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
QEMU 1.2.0 monitor - type 'help' for more information
(qemu) q
Connection closed by foreign host.

[root@take ~]# telnet localhost  10003
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
QEMU 1.2.0 monitor - type 'help' for more information
(qemu) q
Connection closed by foreign host

ホストサーバーのifconfigはこんな感じになってました。

br0       Link encap:Ethernet  HWaddr 00:0C:29:95:48:9A
          inet addr:192.168.44.132  Bcast:192.168.44.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe95:489a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:39920 errors:0 dropped:0 overruns:0 frame:0
          TX packets:42802 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:21985664 (20.9 MiB)  TX bytes:4404942 (4.2 MiB)

eth0      Link encap:Ethernet  HWaddr 00:0C:29:95:48:9A
          inet6 addr: fe80::20c:29ff:fe95:489a/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:139141 errors:0 dropped:0 overruns:0 frame:0
          TX packets:109845 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:165754333 (158.0 MiB)  TX bytes:8533542 (8.1 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

tap1      Link encap:Ethernet  HWaddr FE:B7:63:66:89:D8
          inet6 addr: fe80::fcb7:63ff:fe66:89d8/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:65571 errors:0 dropped:0 overruns:0 frame:0
          TX packets:98957 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:4021085 (3.8 MiB)  TX bytes:140992676 (134.4 MiB)

tap2      Link encap:Ethernet  HWaddr 0A:89:08:6D:D7:F1
          inet6 addr: fe80::889:8ff:fe6d:d7f1/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:162 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1402 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:18553 (18.1 KiB)  TX bytes:1401122 (1.3 MiB)

tap3      Link encap:Ethernet  HWaddr 76:60:5D:B8:9E:1F
          inet6 addr: fe80::7460:5dff:feb8:9e1f/64 Scope:Link
          UP BROADCAST RUNNING PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:298 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1417 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:29906 (29.2 KiB)  TX bytes:1139641 (1.0 MiB)

これですべてのサーバーにSSHログインが可能になりました。

[root@take ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.000c2995489a       no              eth0
                                                        tap1
                                                        tap2
                                                        tap3

ちなみにこれをプライベートクラウドと言います。嘘です。

ある意味あってるかも?

 

でもこのままだとホストサーバーからゲストサーバーの管理ができないじゃん。って気づいている方も多いかも。
肝心なことです。

ちゃんとできるようで、virshというコマンドがあります。でもこれはまた今度。
まだ知らないって書いた方が正しいかなw

[root@take ~]# yum search libvirt
Loaded plugins: downloadonly, fastestmirror, security
Loading mirror speeds from cached hostfile
 * sl: ftp.scientificlinux.org
 * sl-security: ftp.scientificlinux.org
 * sl6x: ftp.scientificlinux.org
 * sl6x-security: ftp.scientificlinux.org
========================================= N/S Matched: libvirt =========================================
fence-virtd-libvirt.x86_64 : Libvirt backend for fence-virtd
fence-virtd-libvirt-qpid.x86_64 : Libvirt-qmf backend for fence-virtd
libvirt-cim.i686 : A CIM provider for libvirt
libvirt-cim.x86_64 : A CIM provider for libvirt
libvirt-client.i686 : Client side library and utilities of the libvirt library
libvirt-client.x86_64 : Client side library and utilities of the libvirt library
libvirt-devel.i686 : Libraries, includes, etc. to compile with the libvirt library
libvirt-devel.x86_64 : Libraries, includes, etc. to compile with the libvirt library
libvirt-java.noarch : Java bindings for the libvirt virtualization API
libvirt-java-devel.noarch : Compressed Java source files for libvirt-java
libvirt-java-javadoc.noarch : Java documentation for libvirt-java
libvirt-python.x86_64 : Python bindings for the libvirt library
libvirt-snmp.x86_64 : SNMP functionality for libvirt
ocaml-libvirt.x86_64 : OCaml binding for libvirt
ocaml-libvirt-devel.x86_64 : Development files for ocaml-libvirt
fence-virtd-checkpoint.x86_64 : Cluster+Libvirt backend for fence-virtd
libvirt.x86_64 : Library providing a simple virtualization API
libvirt-lock-sanlock.x86_64 : Sanlock lock manager plugin for QEMU driver
perl-Sys-Virt.x86_64 : Represent and manage a libvirt hypervisor connection

参考サイト

CentOS6.0、Windows、その他備忘録 KVMのネットワーク設定

さくらインターネット研究所 KVMを使う(ネットワーク設定編)

Related Posts


投稿者: Takeken

インターネット利用者のITリテラシーを向上したいという設定の2次元キャラです。 サーバー弄りからプログラミングまで手を付けた自称エッセイストなたけけんの物語。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です