TUN/TAP の復習
あとでまとめる予定
kvm on debian (centos 5.5-i386ゲスト編)
導入するパッケージは kvmとbridge-utils
# apt-get install kvm bridge-utils
インストール後、kvmを実行するユーザーをkvmグループのメンバーにします
めんどうなので /etc/group直編集
http://www.atmarkit.co.jp/flinux/rensai/kvm02/kvm02a.html
ML115でやってみた。VMwareとかにくらべて癖がない分いいかも
centos5(i386)をゲストOS(つーのか? 注正解は
親を仮想ホストとか物理サーバとか、子は仮想マシン、仮想サーバ、VM
とよぶのが正解らしい)にする場合は
hirasawa@deb505-64-38:~$ kvm-img create -f qcow2 cent55-i386.img 50G 50GBFormatting 'cent55-i386.img', fmt=qcow2, size=52428800 kB hirasawa@deb505-64-38:~$ hirasawa@deb505-64-38:~$ kvm -hda cent55-i386.img -cdrom /home/hirasawa/CentOS-5.5-i386-netinstall.iso -boot d -m 2GB -monitor stdio
てな感じでnetinstall.isoのisoイメージを直指定でうまくいく
(注 /var/lib/libvirt/images がdefaultな置き場でストレージプールとよぶ
そうだ、知らんかったよ)
プロトコルはhttpまたはftpで
指定先は
ftpサーバの指定はftp.riken.jp
ディレクトリは/Linux/centos/5/os/i386
まずは無難にdhcpによるアドレス配布をつかってみる
インストール終了後は以下のようにkvmを機動
(network越しにkvmサーバがある場合は Xプロトコルが通貨できるように設定するのをわすれないように)
hirasawa@deb505-64-38:~$ kvm -hda cent55-i386.img -boot c -m 2GB -monitor stdio QEMU 0.9.1 monitor - type 'help' for more information (qemu)
起動したcentosのethernetaddr/ipは次のようになる。
eth0 52:54:00:12:34:56
inet 10.0.2.15/24
default routeは
default via 10.0.2.2 dev eth0
resolov.confをみると
nameserverが10.0.2.3
になっている。
ふーん
この状態だと、ゲストOSはホストOSを介してのみ、外部に接続できる、って仕組みなんですな。
(これではなんともなりませんなw)
nmapで調べてみると
10.0.2.2では、22(ssh),25(smtp),111(rpcbind),513(login),514(shell),631(ipp)
なる6つのportが開いている。ちなみにMACは52:54:00:12:35:02(QEMU)。
10.0.2.3では、22(ssh),53(domain),111(rpcbind),513(login),514(shell),625(unknown)
なる6つのportが開いている。ちなみにMACは52:54:00:12:35:03(QEMU)。
kvm独自の文化があることがわかりますな
-net userオプションでは、デフォルトゲートウェイとしてDHCPサーバが組み込ま れたQEMU FW/DHCP(10.0.2.2)が、DNSのリゾルバとしてQEMU DNS(10.0.2.3)が自 動的に指定されます。ゲストOSは、QEMUを介して外部ネットワークにアクセスするこ とはできますが、10.0.2.2 がファイアウォールとして機能するため、ホストOSの外 部ノードはもちろん、ホストOSからも、ゲストOSに対しネットワーク経由でアクセス することはできません。
だそうです。
ちなみにx86_64のcentos5(as guest OS)だとカーネルパニックをおこすしてインストールは成功しなかった。(速攻であきらめw)
kvmネットワークの設定方法(redir)
1)先にやったような10.0.2.xなるクローズドな環境の場合、
ただし、192.168.1.x(host OSの属する物理LAN網)にはhostOS(ルータとして動く)越しでアクセス可能。
HostOSの属する物理LAN網から10.0.2.xにはアクセス不可(10.0.2.2もNGと思う)
hirasawa@deb505-64-38:~$ kvm -hda cent55-i386.img -boot c -m 2GB -monitor stdio
2) redir オプション (redir tcp:2222::22) ... hostの2222ポートとguestの22ポートをバインドして、 host:2222 から guest:22へリダイレクト
これにて、特定のポート(ここではguest:22ポート)へのアクセスができるようになる
LAN内の外部PCからホストPCにnmapをかけると
hirasawa@ubuntu910-11:~$ nmap 192.168.1.38 Starting Nmap 5.00 ( http://nmap.org ) at 2011-02-07 11:53 JST Interesting ports on deb505-64-38.hirasawa.local (192.168.1.38): Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 111/tcp open rpcbind 2222/tcp open unknown Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds hirasawa@ubuntu910-11:~$
LAN内の外部PCからport2222にsshをかけてみるですよ
hirasawa@ubuntu910-11:~$ ssh -p 2222 192.168.1.38 The authenticity of host '[192.168.1.38]:2222 ([192.168.1.38]:2222)' can't be established. RSA key fingerprint is 9b:2e:2d:71:6c:56:f0:c4:f5:c6:75:e1:4e:5e:c4:a4. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[192.168.1.38]:2222' (RSA) to the list of known hosts. hirasawa@192.168.1.38's password: [hirasawa@localhost ~]$
ぱちぱち
kvmネットワークの設定方法(bridgeを使用)
(注意! network越しの向う側のサーバでこの手順でやると、networkが切断されてしまい、
はるばるそのサーバ実機のところまで出かけるはめになりまする)
どうやって回避するか考え中www
(もうそろそろGUI(virt_managerだっけ?)に移行かwww)
まず、ホストOSのetherPortをpromiscにする。
設定前と設定後はこうなる。(promiscにする必要あるかね?)
deb505-64-38:~# ip addr 1: lo:mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 18:a9:05:55:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.1.38/24 brd 192.168.1.255 scope global eth0 inet6 2001:c90:ea4:3011:1aa9:5ff:fe55:xxxx/64 scope global dynamic valid_lft 2591977sec preferred_lft 604777sec inet6 fe80::1aa9:5ff:fe55:xxxx/64 scope link valid_lft forever preferred_lft forever deb505-64-38:~# ip link set eth0 promisc on deb505-64-38:~# ip addr 1: lo: mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 18:a9:05:55:xx:xx brd ff:ff:ff:ff:ff:ff inet 192.168.1.38/24 brd 192.168.1.255 scope global eth0 inet6 2001:c90:ea4:3011:1aa9:5ff:fe55:xxxx/64 scope global dynamic valid_lft 2591924sec preferred_lft 604724sec inet6 fe80::1aa9:5ff:fe55:xxxx/64 scope link valid_lft forever preferred_lft forever deb505-64-38:~#
つづいて brctlコマンドでbr0なるether bridgeを作成
(注意! network越しの向う側のサーバでこの手順でやると、networkが切断されてしまい、
そのサーバのところまでいかなくてはなりませぬ。)
なにかいい手ないか?
結局一番最初にすましてけってことかな?(redhat系の場合)
http://research.sakura.ad.jp/2010/03/12/kvm-network/
いやいや、結局こっちでしょ (debian系の場合)
http://www.usupi.org/sysad/162.html
結局、設定ファイルで逃げてみました (弱っ!)
deb505-64-32:~# cat /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface #allow-hotplug eth0 #iface eth0 inet static #address 192.168.1.32 #netmask 255.255.255.0 #gateway 192.168.1.1 #auto eth0 ######################### brctl 201102 for kvm auto eth0 iface eth0 inet static address 0.0.0.0 auto br0 iface br0 inet static address 192.168.1.32 netmask 255.255.255.0 network 192.168.1.255 bridge_ports eth0 bridge_stp off gateway 192.168.1.1 deb505-64-32:~#
38サーバでの事前の準備は
1) /etc/sudoersにkvmグループに所属するuserを登録(ここではhirasawa)
2) てけとーなディレクトリにkvm imageをコピー
ssh -X にてXプロトコルを透過するようにしつつ、38サーバにログイン
んで、
hirasawa@deb505-64-38:/mnt/mnt1$ ls -ltr 合計 17386156 drwx------ 2 root root 16384 2011-01-05 22:32 lost+found
- rw-r--r-- 1 root root 5928665088 2011-02-07 19:46 cent5-i386-orig.img
- rw-r--r-- 1 root root 5928665088 2011-02-07 19:53 cent5-i386-ldap110.img
- rw-r--r-- 1 root root 5928665088 2011-02-07 19:58 cent5-i386-ldap111.img
ブラボー
最初に立ち上げたゲストosはtap0を、複数のゲストOSを立ち上げる場合はtap1,2,3って感じでインクリメントさせていく。
二つのゲストOSを立ち上げた時のbrctl,ipコマンドは次のように見える
deb505-64-38:~# brctl show bridge name bridge id STP enabled interfaces br0 8000.00ff3f106e1e no eth0 tap0 tap1 deb505-64-38:~# ip addr 1: lo:mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 18:a9:05:55:3f:88 brd ff:ff:ff:ff:ff:ff inet6 fe80::1aa9:5ff:fe55:3f88/64 scope link valid_lft forever preferred_lft forever 3: br0: mtu 1500 qdisc noqueue state UNKNOWN link/ether 00:ff:3f:10:6e:1e brd ff:ff:ff:ff:ff:ff inet 192.168.1.38/24 brd 192.168.1.255 scope global br0 inet6 2001:c90:ea4:3011:2ff:3fff:fe10:6e1e/64 scope global dynamic valid_lft 2591946sec preferred_lft 604746sec inet6 2001:c90:ea4:3011:2ff:f1ff:fe93:d583/64 scope global dynamic valid_lft 2589452sec preferred_lft 602252sec inet6 2001:c90:ea4:3011:2ff:14ff:fe62:937b/64 scope global dynamic valid_lft 2586804sec preferred_lft 599604sec inet6 2001:c90:ea4:3011:1aa9:5ff:fe55:3f88/64 scope global dynamic valid_lft 2589825sec preferred_lft 602625sec inet6 fe80::1aa9:5ff:fe55:3f88/64 scope link valid_lft forever preferred_lft forever 8: tap0: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500 link/ether 00:ff:d7:a0:06:d2 brd ff:ff:ff:ff:ff:ff inet6 fe80::2ff:d7ff:fea0:6d2/64 scope link valid_lft forever preferred_lft forever 9: tap1: mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500 link/ether 00:ff:3f:10:6e:1e brd ff:ff:ff:ff:ff:ff inet6 fe80::2ff:3fff:fe10:6e1e/64 scope link valid_lft forever preferred_lft forever deb505-64-38:~#