カテゴリー別アーカイブ: Windows VPS

新さくらVPSをWindows化する – さくらのVPSの既存WindowsイメージをVirtio化(新プラン対応)

 従来のさくらVPSはHDDがIDEエミュレーションで繋がっていたので、VMware上にインストールした物をDDしてさくらVPS上に展開する方法が一般的だったけど、新サービスではVirtioで繋がっているために、Virtio Storage(SCSI)のドライバを組み込んでおかなければ起動途中に0x7bエラー(Boot device not found)でSTOPしてしまう。

 そこで、今回は普通にKVMを構築して、そこに導入したWindowsをDDするという手順で導入することにする。

 従来のVMwareを使う方法ではWindows環境上で済ませられたが、VMware上で更にKVMを動かすことは出来ないので、作業用にマシンを1台用意した。



 安くて、後々も使えるマシンとして、HPのProliant ML110 G7サーバーを選定。 クーポン利用で1万2千円程度。
 CPUはCeleronだがSandyBridge系のデュアルコアでVTに対応しているのでKVM動作可能(KVMはVTが無いと動かない)
 ECCメモリが乗っているのと、機能制限版のリモートマネジメント(OSが止まっていてもネットワーク経由でリブートしたり出来る)が乗っていて、本格的なサーバを思わせる仕様。

 こいつにCentOSを導入して作業する。

  1. CentOS 6.2 x86-64をダウンロードしてきてDVDに焼いてProliantに入れてインストール。
    インストール設定はDesktopモデルで追加設定として仮想化を全てOnにして導入して、SSHを外部ネットに公開しておく。

  2. 旧VPS上でVirtioドライバをダウンロードして解凍しておく。
  3. 旧VPS上にKNOPPIXをダウンロードする(最新CD版を利用した)
  4. 旧VPS上にDaemonTools or WinRARを入手する
  5. 旧VPS上にGrub4DOSを入手する
  6. 旧VPS上でKNOPPIXのISOイメージをDaemonToolsでマウントするかWinRARで開く。
    /KNOPPIXをC:\KNOPPIXとしてコピーする。
    /boot/isolinuxの中身をC:\KNOPPIXにコピーする。

  7. 旧VPS上にGrub4DOSを解凍して、grldrファイルをC:\にコピーする。
    C:\boot.iniファイルを編集(見えない場合は、エクスプローラの設定で、隠しファイルとシステム重要ファイルの表示をチェック)して、最下行に

    C:\grldr=”GRUB”

    を追記する。
    併せてTimeOutを長めにしておくと良い(30秒程度?)
    C:\menu.lstと言うテキストファイルを作成して、以下の内容を書き込む。

    title KNOPPIX
    root (hd0,0)
    kernel /knoppix/linux ramdisk_size=100000 init=/etc/init ro
    initrd /knoppix/minirt.gz

  8. 旧VPSのシステムを再起動して、直ちにVNCコンソールを開く。
    Windowsローダー(NTLDR)の画面で、WindowsとGRUBの選択状態になっているはずなので、GRUBを選んでEnter。
    GRUBの画面に切り替わって、唯一の選択肢KNOPPIXがあるので、選んでEnter。
    KNOPPIXが起動する。

  9. システムドライブのイメージを移行作業用にコピーする。
    ・ネットワークの設定
    KNOPPIXのターミナル操作

    #ifconfig eth0 xxx.xxx.xxx.xxx netmask 255.255.254.0
    #route add default gw yyy.yyy.yyy.yyy
    #cat > /etc/resolv.conf
    nameserver 8.8.8.8
    ctrl+d

    xxx.xxx.xxx.xxxはVPSの割り当てIPアドレス
    yyy.yyy.yyy.yyyは指定されたデフォルトゲートウェイ
    8.8.8.8はPublic DNS

    #dd if=/dev/sda | ssh -l hoge nnn.nnn.nnn.nnn “cat > /var/lib/libvirt/images/sakura.img”

    hoge:Proliantのユーザ nnn.nnn.nnn.nnn:Proliantのアドレス

  10. Proliantの端末で virt-manager と打って仮想環境マネージャを起動する。
  11. 仮想環境マネージャでlocalhostに新規Virtualmachineを作成する。
    OSインストール方法は既存のイメージ使用を選んで、ファイルはsakura.imgを選択、タイプはrawにする(raw=ddイメージと同等)

  12. 作成したVirtualmachineの設定画面でデバイスの追加を行い、ストレージデバイス、Disk bus=Virtioにして適当なファイルを作る。
  13. Virtualmachineを起動する。
    Windowsが立ち上がってくると新規デバイスの検出画面が出てくるので、VirtIO SCSIドライバを導入する。

  14. Virtualmachineをシャットダウンする。
    シャットダウン後にVirtualmachineの設定画面を開き、IDE Disk 1の設定を開き、Disk bus=Virtioに変更する。
    2個前の手順で追加したストレージデバイスを削除する。

  15. Virtualmachineを起動する。
    Windowsが立ち上がってくると再び新規デバイスの検出画面が出てくるので、VirtIO SCSIドライバを導入して(これで起動ドライブがVirtioに繋がった)シャットダウンする。

 この手順で、/var/lib/libvirt/images/sakura.img が既存のWindowsイメージをVirtio起動用にした状態のddイメージになった。

 これを新サーバに導入する手順。

  1. 新VPSの設定画面でカスタムインストールを選択して、Debianあたりを導入する。
    この時のパーティショニングは、
    先頭 30GB 非マウント
    第2 残量全て /にマウント
    で切っておく。

  2. 先ほどのVirtio化イメージを新VPSに流し込む。
    新VPSのコマンドラインで

    #ssh -l hoge nnn.nnn.nnn.nnn “cat /var/lib/libvirt/images/sakura.img” | dd of=/dev/vda

    hoge:Proliantのユーザ nnn.nnn.nnn.nnn:Proliantのアドレス

  3. 新VPSを再起動する。

 これで旧VPSで走っていたWindowsが完全コピーで新VPSに移動できた。
 VNCコンソールからネットワークのIPアドレス等を新VPS用に再設定する。
 システム構成が変わるので再アクティベーションが必要になる。

(611)


カテゴリー: Windows VPS | タグ: , , | コメントをどうぞ

Windows化した新さくらのVPS 2GBプランでCrystalMark 2004R3を走らせてみた

 Windows Server化したさくらのVPS 2GBプランでCrystalMark 2004R3でベンチをとってみた。

 CPUは現行のエントリーマシン並に出ているし、HDDはちょっと良いSSDクラスの性能が出ていて、UnixBench同様、性能の高さを示している。
 HDDはVirtioで繋がっているが、ネットワークは従来同様のE1000エミュレーション。

(97)


カテゴリー: Windows VPS | コメントをどうぞ

さくらVPSを再インストール無しに上位プランへ移行する(Windows編) – Windows化したVPSをddイメージコピーで完全移行

 さくらVPSが新プランメニューを発表して、価格据え置きでメモリやHDDが増量されるため、新プランへ移行する人も多いはず。
 そこで、今回は以前書いたWindows化したさくらのVPSでの移行方法を改良して完全版とした。

  1. KNOPPIXを入手する(最新CD版を利用した)
  2. DaemonTools or WinRARを入手する
  3. Grub4DOSを入手する
  4. KNOPPIXのISOイメージをDaemonToolsでマウントするかWinRARで開く。
    /KNOPPIXをC:\KNOPPIXとしてコピーする。
    /boot/isolinuxの中身をC:\KNOPPIXにコピーする。

  5. Grub4DOSを解凍して、grldrファイルをC:\にコピーする。
    C:\boot.iniファイルを編集(見えない場合は、エクスプローラの設定で、隠しファイルとシステム重要ファイルの表示をチェック)して、最下行に

    C:\grldr=”GRUB”

    を追記する。
    併せてTimeOutを長めにしておくと良い(30秒程度?)
    C:\menu.lstと言うテキストファイルを作成して、以下の内容を書き込む。

    title KNOPPIX
    root (hd0,0)
    kernel /knoppix/linux ramdisk_size=100000 init=/etc/init ro
    initrd /knoppix/minirt.gz

  6. システムを再起動して、直ちにVNCコンソールを開く。
    Windowsローダー(NTLDR)の画面で、WindowsとGRUBの選択状態になっているはずなので、GRUBを選んでEnter。
    GRUBの画面に切り替わって、唯一の選択肢KNOPPIXがあるので、選んでEnter。
    KNOPPIXが起動する。

  7. システムドライブのイメージを丸ごと新サーバにコピーする。
    ・ネットワークの設定

    #ifconfig eth0 xxx.xxx.xxx.xxx netmask 255.255.254.0
    #route add default gw yyy.yyy.yyy.yyy
    #cat > /etc/resolv.conf
    nameserver 8.8.8.8
    ctrl+d

    xxx.xxx.xxx.xxxはVPSの割り当てIPアドレス
    yyy.yyy.yyy.yyyは指定されたデフォルトゲートウェイ
    8.8.8.8はPublic DNS

    KNOPPIXのターミナルから操作する場合

    #dd if=/dev/sda | ssh -l hoge piyo.tld “dd of=/dev/sda”

    hoge:新サーバのユーザ piyo.tld:新サーバのアドレス
    ダイレクトにDD出来ない場合は、

    #dd if=/dev/sda | ssh -l hoge piyo.tld “cat > /tmp/sda.dd”

    みたいにすると、/tmp/sda.ddにイメージを保存できる。
    イメージファイルをどこかのサーバに配置しておけば、クラウド風に複製イメージ起動も出来るだろう。

 これで、旧サーバのディスクイメージを丸ごと新サーバに移すことが出来る。
 前のバージョンではWindows上のDDを使ったが、今回はKNOPPIXから行っているので、Windowsが途中でファイルを書き換える心配がない。

 ちなみに dd の進行状況を確認する場合には、 kill -USR1 をddのプロセスに送ると標準エラー出力に進捗が出る。

(457)


カテゴリー: Windows VPS, サーバ設定 | タグ: , , , , , , | コメントをどうぞ

MySQL接続にSSLを使用する – PHP MySQL SSL WordPress MYSQL_CLIENT_SSL 暗号化

 MySQLの接続にSSLを使う話。

 このブログはWordpressとMySQLが別のサーバで動いている(WindowsServer2003R2化したさくらのVPS上にMySQLサーバを設置して、Apache+PHPを設置したLinux状態のさくらVPSからmysqlコネクタを経由して接続している)
mysql接続は通常は平文なので、ネットワーク上で色々な情報がだらだら流れてしまうのは嫌なので、このコネクションをSSLで暗号化する。

 まず、WindowsServer2003R2上に設置したMySQLサーバにSSL設定を行う。
 MySQL5.5サーバのWindowsバイナリにはSSL機能が含まれているから、特別なプログラムを追加する必要はないけど、Windows上のSSL管理は複雑だ。
 MySQLサーバでは秘密鍵は暗号化されていないファイルでなければならないのだけど、Windowsではそもそも証明書ストアの内部に格納されているので、これを取り出さなければならないんだけど、その操作が証明書の取得と前後する(普通は秘密鍵をベースとして証明書の管理をするんだけど、Windowsでは証明書を取得しないと秘密鍵か取り出せない)
 まず、WindowsのIISマネージャを起動して、ナビゲーションからサーバ>Webサイト>既定のWebサイトを選択して、プロパティを開いて、「ディレクトリセキュリティ」タブにある「セキュリティで保護された通信」の「サーバー証明書」を叩いて「IIS証明書ウィザード」から、「証明書の要求を作成して後で送信する」処理でCSRを作成する(WindowsServer2003R2では古い1024ビットがデフォルトになっているけど、現在は2048ビットが一般的なので、それを選択してCSRを作成する)
 CSRを生成したら、普通にSSL証明書を取得してきて(今回はSSLボックス
からRapidSSLを取得)、適当なcer(※α)としてファイルに保存して、再度「IIS証明書ウィザード」から証明書を登録する(証明書を取得したときに、認証局の証明書も来ると思うので、これも適当なcer(※β)としてファイルに保存しておく)
 証明書の登録処理が完了したら、「セキュリティで保護された通信」の「証明書の表示」を開いて、「詳細」タブの「ファイルにコピー」を実行して、「秘密キーのエクスポート」で「はい」を選んで進むと、PKCS#12形式に固定されているので、チェックボックスを全て解除して、適当なパスワードを設定してpfxファイルにエクスポートする。
 OpenSSLが導入された環境で・・・

openssl pkcs12 -in 出力したpfxファイル -out 中間.cer

で、PFXをデコードする。 この時、聞かれるパスワードは、エクスポート時に設定したパスワードで、パスフレーズはCERに設定するパスフレーズである。
 で、CERにすると、秘密鍵はRSA暗号化された状態なので、再度opensslで

openssl rsa -in 中間.cer -out 平文.pem

とすると、パスフレーズを聞かれるから、先ほど設定したパスフレーズを入れて平文の秘密鍵(※γ)を得る。

 この手順で、α:サーバ証明書、β:認証局証明書、γ:秘密鍵が揃うので、MySQLサーバのあるホストの適当な場所に配置する。
 後は、MySQL設定ファイル(Unixではmy.cnfだが、WindowsではMySQLインストールディレクトリのmy.ini)の[mysqld]セクションに設定を追記する。

ssl-cert=”αのフルパス”
ssl-ca=”βのフルパス”
ssl-key=”γのフルパス”

の、3設定を入れてMySQLサービスを起動する。
 MySQLクライアントで「SHOW VARIABLES LIKE ‘%ssl%’;」とか打つと、

have_openssl : YES
have_ssl : YES

になっていれば、サーバはSSL動作可能な状態になっている。

 PHPのMySQLクライアントでSSL接続する場合には、mysql_connectの第五引数にMYSQL_CLIENT_SSL定数を設定すればOK。
 Wordpressでは、/wp-include/wp-db.php で、@mysql_connect(…)としている部分で、第四引数までセットされているから、「, MYSQL_CLIENT_SSL」と第五引数を追記してやれば、WordpressのDB接続時にはSSL接続を使うようになる。
 正常にSSLに接続されているか確認するために、mysql_connectの下あたりに

$res = mysql_query(“SHOW STATUS LIKE ‘Ssl_cipher'”);
var_dump(mysql_fetch_assoc($res));

とか書いてWordpressサイトに接続してみると、DHE-RSA-AES256-SHAとかの値がべたっと入っていれば、接続はSSLで保護されている(空文字が戻っていたらSSL保護されていない)

 これで、ネット経由のmysql接続が保護されるので、安心して使うことが出来る。

(938)


カテゴリー: MySQL, PHP, Windows VPS, サーバ設定 | コメントをどうぞ

さくらVPSにWindowsを入れている環境でVPNを利用する

 従来、自宅のメインルータがRTX1000でPPTPサーバになれるので、WindowsServer化したさくらVPSからルータにPPTPダイアルアップして、LAN上のホストとしてファイル共有などを利用していた。
 しかし、PPTPはスピードが伸びず、400KB/s程度しか出ないので、管理回線としては使えるが、大きなファイルの転送には不向きだった。
 RTX1000には、他のVPN手段としてIPSecがあるのでこちらに切り替えてみる。
 WindowsServer2003R2のIPSecサポートでは、メインモードにしか対応しないのだが、IPアドレスが変わる環境ではアグレッシブモードの対応が必要なので、VPSにVPNクライアントソフトを導入して、VPSからRTXに接続する形態で利用する。

 今回は無償利用できるShrew Soft VPN Client for Windowsと言うクライアントを利用した。
http://www.shrew.net/software

 WindowsVPS=ShrewSoftVPNClient(192.168.1.2)=>The net=>RTX1000(PPPoE,DHCP,192.168.0.1)=>LAN
netvolante-dnsでダイナミックDNSにアドレスを振っておく
RTXのIPSec関連設定
ip route 192.168.1.0/24 gateway tunnel 2 #192.168.1.0/24のIPへのルーティングはトンネル2を利用する
tunnel select 2 #トンネル2を設定する(1はPPTPに振ってあるので、今回は2)
tunnel name vps1-ipsec #トンネルに名前をつける
ipsec tunnel 1 #トンネル2だけど、IPSecトンネルとしては1番
ipsec sa policy 1 1 esp des-cbc md5-hmac #ESPプロトコルを使い、DES暗号MD5ハッシュを使う
ipsec ike encryption 1 des-cbc #IKE暗号化にDESを使う
ipsec ike keepalive use 1 on #IKEキープアライブを有効にする
ipsec ike local address 1 192.168.0.1 #IKEローカルアドレスを設定する
ipsec ike pfs 1 on #Phase2 PFSを有効にする
ipsec ike pre-shared-key 1 text 共有鍵 #暗号鍵に事前共有鍵を使用する
ipsec ike remote address 1 any #リモートアドレスを任意許可する
ipsec ike remote name 1 認証名 #リモートの識別に認証名をFQDNとして用いる
ipsec auto refresh 1 on #自動更新を有効にする
tunnel enable 2 #トンネル2を有効化する

nat descriptor masquerade static 1 1 192.168.0.1 udp 500 #IPSecで利用するUDP500を通す
nat descriptor masquerade static 1 2 192.168.0.1 esp #ESPプロトコルを通す
ipsec use on #IPSecを有効化する

個人利用でセキュリティはあまり重要ではないので負荷の軽い設定になっている。

ShrewSoft VPN Clientの設定
[General]
Host Name or IP Address:ホスト名.aa0.netvolante.jp(NetvolanteDDNSで指定した)
Port:500
Auto Configuration:Disabled
Address Method:Use a virtual adapter and assigned address
MTU:1380
Address:192.168.1.2
Netmask:255.255.255.0

[Client]
NAT Traversal:Disable
IKE Fragmentation:Disable
Enable Dead Peer Detection:オフ
Enable ISAKMP Failure Notifications:オフ

[Name Resolution]
Enable WINS:オフ
Enable DNS:オフ

[Authentication]
Authentication Method:Mutual PSK
Local Identity-Identification Type:Fully Qualified Domain Name
Local Identity-FQDN String:RTX設定の認証名
Remote Identity-Identification Type:Any
Credentials-Pre Shared Key:RTX設定の共有鍵

[Phase1]
Exchange Type:Aggressive
DH Exchange:group1
Cipher Algorithm:des
Hash Algorithm:md5
Key Life Time limit:86400
Key Lige Data limit:0
Enable Check Point Comaptible Vendor ID:オフ

[Phase2]
Transform Algorithm:esp-des
HMAC Algorithm:md5
PFS Exchange:auto
Compress Algorithm:Disabled
Key Life Time limit:3600
Key Lige Data limit:0

[Policy]
Policy Generation Level:auto
Maintain Persistent Security Associtations:オフ
Obtain Topology Automatically or Tunnel All:オフ(オンにするとデフォルトゲートウェイがこのアダプタになり通常のインターネットアクセスも低速になるので、RTXのLANをリモートネットワークリソースに設定してLANだけこのアダプタをゲートウェイにした)
Remote Network Resource>Add>Type:Include Addresss:192.168.0.0 Netmask:255.255.255.0

 設定してConnectすると、10MbpsのダイアルアップアダプタとしてVPN接続される。
 Windowsファイル共有したディスクでのベンチマークでは、シーケンシャルリード860KB/sで、シーケンシャルライト2.8MB/s出るようになった(遅延の影響でWindowsファイル共有はちょっと遅い)
 VPN接続していればインターネット上ではパケットがすべて暗号化されているので安心。

(919)


カテゴリー: Windows VPS | タグ: , | コメントをどうぞ