タイトルの件を試してみた。
インストールまでは出来たが、仮想PC起動したらゲストの再起動が掛かりました。
試した環境。
ホスト:WindowsServer2008R2 Ent.
ゲスト:WindowsServer2003R2 Ent. x64 + VirtualServer2008R2SP1
うーん意外といけそうな感じがしたんだけど残念。
(0)
(0)
(0)
(0)
Total: 0 前回の理論編で展開したVirtualServer2005でのゲストNAT(NAPT)接続について、どうせ全く同じことなのでWindowsServer2008R2+Hyper-Vの環境でやってみた。
まあ、WindowsServer2003+VirtualServer2005での環境がちょっとすぐに用意できなかったからともいう。
ちなみに用語がめんどくさいので、以降親パーティション=ホスト、仮想はゲストで。
実践編はほぼ作業手順になっちゃうので要点だけおさらい。
ではやってしまおう。
RRASをインストールする、役割追加の「ネットワークポリシーとアクセスサービス」から。

画像:RRASの役割追加
LoopBackAdapterをインストールする、2003ならハードウェア追加と削除、2008はデバイスマネージャの「操作」からレガシハードウェアの追加(※PCを選んでないと出てこない)をする。

画像:LoopBackAdapter追加
追加できたらIPアドレスを振っておく、あくまでプライベートネットワーク用なので、外用とサブネットが被らないように。

画像:内部ネットワークのゲートウェイ
Hyper-V管理から、LoopBackAdapterを外部ネットワークとして構成する。
※これはVirtualServer2005でも出来るように合わせているだけで、Hyper-Vなら多分LoopBackの代わりは最初からついておりそちらを使ってもOK。
じゃあゲストにさっきのLoopBackをあてがおう。
ゲストの準備はこれでいいので、起動しておこう。
ゲストを起動し、ホストでLoopBackに当てたサブネットで適当なIPアドレスを振り、通信できるか試してみる。
PINGを打ったらFireWall切リ忘れで応答無かったので、telnet80 で疎通確認、OK。
では外部にPingが飛ばないことを確認しておく、現段階ではwww.google.comにpingを送ることが出来ない。
あとはマスカレードするだけだ。
ホストに戻ってルーティング。
ウィザードで超簡単、2003だとどうだったかな?ウィザード無くても簡単には違いないが。
まずNATをえらんで、

画像:RRASその1
最初にインターネットにつながっている側のインターフェイスを選択する。
LoopBackじゃないほうね。

画像:RRASその2
次に内部のネットワークに接続されたインターフェイス、ここではもちろんLoopbackを選択と。

画像:RRASその3
そのあと内部的にDHCPを有効にするか聞かれる。正直どっちでもいいがDHCPのほうがちょっと楽かな。。

画像:RRASその4
以上でRRASがルータになった、ちょっと見てみよう。
さあ、仮設DHCPを有効にしたので、早速ゲストからrenew、DHCP discover だ。
ではGoogleにPING、
ちなみにデフォだと名前解決できなかったな、FireWallかなあ。
面倒なのでDNSだけ手動で入力。
で、WEBへ。

画像:幾重ものWindowに囲まれ、WEB表示
はいお粗末さまでしたー
RRASはServer向けのWindowsにしかついてないかと思いきや、ちゃんとクライアントのXPやらにも付いている。
ただGUIがなくて、netshで頑張って設定しなきゃならないみたいだが。。
さてこれでIPが一個ありゃゲストの面倒はなんとかなるというのが確認できた。
ポートフォワードも出来るのでサーバとしての役割もバッチリ。
で、それだけでなく、グローバルIPの付与はホストに全部やって必要ポートだけゲストに渡す、という考え方もあるんだよね。
IPフィルタの一元管理、トラフィックのモニタリングと結構使いでがあったり。
この記事ではHyper-Vでやっちゃったけど、構成を理解すればVirtualServer2005でも同じことが出来るはずなので是非やってみよう。
(0)
(0)
(0)
(0)
Total: 0 VirtualServer2005の仮想NIC接続にはNATモードがない。
ここでいうNATモードは、とりあえずホストのIPでNAPT(Overload)し、外部接続を果たすという仕組みだ。
これが使えないということは、ゲストにIPアドレスを自由に振れない環境ではちと困る、そんな所でVS2005入れていいのかというのは置いといて。
で、そのNATモードをWindowsServerのRRASとLoopbackAdapterで疑似的にやってみようという試み。
構成を思いついて、ちょっと情報探してみて特に無かったので記事に。実は常識なのかもだが。。。
(追記:後で考えたら Hyper-Vでも同じ事ができそうだ)
VirtualBoxとか、他の仮想化ソフトにもあるねNATモード。
外部との接続は下図のような感じになっている、大分はしょってはいるが概ねこんな感じだ。

画像:VirtualPC 2004/2007でのNAT接続のイメージ
VirtualServer2005になるとNATモードが無く、VirtualPCでも出来る下図のような接続形態になる。

画像:VirtualServer2005通常NIC接続のイメージ
これだと外部環境に接続するにはそのLANで有効なIPアドレスが必要だ。
DHCPサーバもない、IP勝手に振れない、またはグローバル環境だったりすると困るかな?困る。
「内部ネットワーク」っていう接続モードもあるが、外に出れない仮想スイッチにつながり、仮想PC同士が通信出来るだけで外部とつながるという目的は果たせない。
さて、本題の構成。
『疑似』としてるけど、至極真っ当にNAPTをやるので多分上手くいくと思うんだがなー
まずWindowsにもあるLoopBackAdapterをインストールする、やり方はMSサイトで。
そして標準で使えるルータ・ファイアウォール他のサービスRRAS(ルーティングとリモート アクセス サービス)をセットアップ。
したら下記のような環境が作れるはずなんだよね。
仮想PCが使うNICはホストでいうLoopBackAdapterになる、物理NICのほうは仮想にバインドしないので注意。

画像:RRASとLoopBackAdapterを使用した自前NAT
さて、これでIPやゲートウェイの設定を手動で入れてやれば、IPを複数貰うことなく仮想PCから外部に出ていけると思うんだが。。。
試せる環境が手持ちの資源で作れるようなら実践編へ続く
(1)
(0)
(0)
(0)
Total: 1 SunのVirtualBoxを使うと、HDDのイメージにiSCSIブロックデバイスを指定できる。
…と何処かで見たのでメニューを見るもそれらしき設定がない。。
ヘルプによるとコマンドラインでのみ対応のようだ、そのコマンドがこれ。
"VBoxManage" の "addiscsidisk" オプション
VBoxManage addiscsidisk --server <name>|<ip>
--target <target>
[--port <port>]
[--lun <lun>]
[--encodedlun </lun><lun>]
[--username <username>]
[--password <password>]
[--type normal|writethrough|immutable]
[--comment <comment>]
[--intnet]</comment></password></username></lun></port></target></ip></name>
使ったのはWindows版のVirtualBox3.x
さっそく叩いてみた、192.168.0.1上のiSCSIターゲットを指定する。
C:\Program Files\Sun\VirtualBox>VBoxManage addiscsidisk --server 192.168.0.1 --target iqn.1986-03.com.sun:02:**********************************
VirtualBox Command Line Management Interface Version 3.0.8
(C) 2005-2009 Sun Microsystems, Inc.
All rights reserved.
iSCSI disk created. UUID: *******************************
出来た。
さて、ターゲット側で情報をみるとこんな感じ。
Target: zfs1/iscsidev/vboxtest
iSCSI Name: iqn.1986-03.com.sun:02:**********************************
Alias: iscsidev/vboxtest
Connections: 1
Initiator:
iSCSI Name: iqn.2008-04.com.sun.virtualbox.initiator
Alias: unknown
……イニシエータの名前変更できるようにしてくれないか?SUNよ。
簡易フィルタかけたいんだが。
それはさておき、これでVirtualBoxのメディアマネージャをみるとiSCSIのディスクがリストされているので、晴れてIDEなりSATAなりで接続する設定すればそれで完了だ。ゲストOSからは完全にローカルディスクとなる。
(1)
(0)
(0)
(0)
Total: 1 IIS7はKeepAliveがデフォルト有効、タイムアウト120秒だ。
120は長いだろう。。と思いつつもWindows認証を使う場合KeepAliveが必須なのでどうしてもデフォルトが長いんだろうな。
Apacheなんかは最近5秒くらいじゃなかったか?俺もよく1秒とか3秒にしちゃう。
では使わない場合、短くしたい場合にどこをいじればいいのか見ておこう。

画像:KeepAliveのON/OFF1

画像:KeepAliveのON/OFF2
では次に長さ。

画像:KeepAliveの長さ設定1

画像:Keepaliveの長さ設定2
どうもまとめ方がイマイチしっくりこないが、ここに違いない。
KeepAliveとしっかり書いてあるわけじゃないが、元々コネクションレスのHTTPでコネクションについて書いてあるからきっとそうだ。
微妙に自信がなさげなのは、ココをかえても「Keep-Alive: timeout **」のレスポンスヘッダを返してくれるようになるわけじゃないからなんだよなあ。
一応指定した時間でコネクションは切っちゃう。けどサーバからの切断なのでエラーログにtimeoutがずらずら記述されていくというIISの仕様、IIS6からそうだよね。
ヘッダ返せばブラウザが切ってくれるのに・・・カスタムで突っ込むしかないのか。
まあ以上でIIS7のKeepAlive関連の設定はおしまい。
Windows認証を使わないんだったら、切るか1-5秒くらいにしゃちゃいなさいね。
ついでだがコマンドラインでのやり方はこっちを参照。
(0)
(0)
(0)
(0)
Total: 0 前編からの続き。
"/boot"だけバックアップした場合の戻し方。
前回記事の起動シーケンスから分かる通り、grubはstage2まで起動してしまえばファイルシステムをバッチリ理解できる。
逆に言うと、stage1.5まではHDDのセクタがそろってない環境にはそのまま戻せない、ということにもなる。
grubのstage2は"/boot"にあるので、そこになんとか繋ぐように配置すれば起動までこぎ着けそうな気もするが、そんな心配もいらないので諦めよう。
そう、MBRからstage2まで辿るのが難しくなった場合、素直にCDブートのgrubを使えばいい、
>> grub公式のgrub bootableCD作成方法
これはファイルシステムを大概理解できるナイスツール、必携だ。
grubさえ立ち上げれば、ext3の領域を読んでくれる = initrdやカーネルを指定してOSを起動することができ、ゆっくりgrub-install実施で元通りとできる。
前回作成したiSCSIを"/"領域にした環境で、ローカルディスクが爆破されたと仮定して"/boot"だけある環境から復旧してみよう。
まず適当なLiveCDを用意する。
CentOS5の奴なんかいいんじゃないだろうか、nfsマウント出来るしyumで少々のツールなら追加できる。
実は初期状態では重要なdump&restoreがないが、『yum install dump』で追加OKだ。
ではCD起動してからやること。。
と、ここまでやったら"/mnt" あたりに "/dev/sda1"をマウントして、tarでもrestoreでも好きな方法で旧環境の"/boot"を戻そう。
もってくる方法は特に問わない、なんでもいい。
以上で ローカルディスクの"/boot"は復活した。
ちなみにfdiskはこんな感じに仕上がった。
Device Boot Start End Blocks Id System
/dev/sda1 * 1 32 257008+ 83 Linux
/dev/sda2 33 282 2008125 82 Linux swap / Solaris
"/boot"が使えるようになったので、CD起動にしたgrubを使ってみよう。
起動したらとりあえずこれだ、
grub>
どうしろと言うのか迷うかも知れないが、とりあえずファイルシステムのルートになるパーティションを指定しよう。
途中まで入れたらTABで補完OK。
grub> root (
Possible disks are: fd0 hd0 cd
使えそうなデバイスを見せてくれる、もちろんhd0を選びさらにTAB
grub> root (hd0,
Possible partitions are:
Partition num: 0, Filesystem type is ext2fs, partition type 0x83
Partition num: 1, Filesystem type is unknown, partition type 0x82
パーティションを教えてくれる、さっき自分で作ったのだからどちらかなんて自明。
grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
選択した領域に"/boot"があったらマウントしてくれる。
さああとはinitrd とカーネルを指定するだけだ...って
これがハードル高いと思う日もあるかもしれない。
でもそんなことはないんだ、"/boot"はマウントされてるんだよね?
コンフィグ見りゃいいじゃん。
grub> cat /grub/grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/hda3
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-128.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/
initrd /initrd-2.6.18-128.el5.img
grubはcat出来る、これは死ぬほど助かる。
さあさっさと下記を入力して、bootコマンドを叩くのだ。
"kernel /vmlinuz-2.6.18-128.el5 ro root=LABEL=/"
"initrd /initrd-2.6.18-128.el5.img"
さすれば起動する、破壊前の環境そのままだ。
あとは起動後に"grub-install" をしてあげるだけ。
# grub-install --root-directory=/ /dev/sdb
色々理由があって上記になる。
と、言うことで今回環境のバックアップはおしまい。
結局、/bootのdumpとddと両方採ってるけどね。
今度はHDDの代わりにUSBメモリを使ってみようっと。
さて、"/"からiSCSIってinitrdは何しとるんだと思うじゃない、
なので展開してみた、なるほどねー。
長いのでトップでは切っちゃうが。
の続きを読む »
(4)
(0)
(0)
(0)
Total: 4
最近のコメント