<   2012年 01月 ( 12 )   > この月の画像一覧
YAMAHA RTX1100で動的IPマスカレード+静的NAT+IPフィルタをしてみた
(Linux)CentOSでちょっとトリッキーなNATルータを構築してみたに似たようなネットワークをRTXルータを使って構築することにしました。
上記の記事の時との違いは、ルーターが静的NATだけでなく、IPマスカレード(NAPT)+DHCPの機能を提供します。
また、インターネット側への通信ですが、ネットワークBからはping,http,https,dnsのみ許可すると共に、ネットワークA側への通信(DNS以外)は許可しない設定とします。
e0091163_18124720.jpg


静的NAT+IPマスカレードの設定
まずは静的NAT+IPマスカレードの設定ですが、以下のようにしました。

ip routing on
ip route default gateway 192.168.0.2
ip lan1 address 192.168.1.1/24
ip lan3 address 192.168.0.1/24
ip lan3 nat descriptor 1
↓静的NATとIPマスカレード変換
nat descriptor type 1 masquerade
↓LAN3のIPを指定(指定したIPがIPマスカレードとして使われる)
nat descriptor address outer 1 primary (もしくは192.168.0.1)
↓NAT、NAPT対象となるアドレス。autoにすると、そのサブネット内すべて
nat descriptor address inner 1 auto (もしくは 192.168.0.1-192.168.0.254)
↓静的NATエントリ(192.168.0.120=192.168.1.10~192.168.0.123=192.168.1.13となる)
nat descriptor static 1 1 192.168.0.120=192.168.1.10 4


ポイントとしては、NATディスクリプタのtypeは masquerade とします。(動的静的NATだけの時はnat ,動的静的NAT+NAPTの時は、nat-masqueradeを指定)
そして、NATディスクリプタの外側のIPを外側のLANインターフェイスのIPとします。
後は静的NATを設定します。ここで設定したIP以外のホストはNAPTとして 192.168.0.1 のIPで外側にアクセスに行くわけですね。

なお、静的NATをさらに追加したい時は以下のように outer にIPアドレス追加、NATエントリに定義追加をします。

nat descriptor static 1 新たなNATテーブル番号 外側IP=内側IP 1


NATテーブルを確認するには以下のコマンドが使えます。IPマスカレードの変換テーブルも見れます。

show nat descriptor address
参照NATディスクリプタ : 1, 適用インタフェース : LAN3(1)
外側アドレス(Outer) 内側アドレス(Inner) TTL(秒)
192.168.0.120 192.168.1.10 static
192.168.0.121 192.168.1.11 static
192.168.0.122 192.168.1.12 static
192.168.0.123 192.168.1.13 static
Masqueradeテーブル
外側アドレス: 192.168.0.150 ポート範囲=60000-64095 5個使用中
プロトコル 内側アドレス 宛先 マスカレード TTL(秒)
UDP 192.168.1.15.40815 74.125.31.104.41836 60039 899
UDP 192.168.1.15.40815 74.125.31.104.40899 60039 678
UDP 192.168.1.15.40815 74.125.31.104.41732 60039 678
TCP 192.168.1.23.38581 74.125.31.104.7009 60038 726
UDP 192.168.1.23.52451 74.125.31.104.41829 60030 665



ハマッたのは nat descriptor address outer の設定でした。
当初以下のようにしてました。

nat descriptor address outer 1 192.168.0.150 192.168.0.120-192.168.0.123
nat descriptor address inner 1 auto
↓静的NATエントリ(192.168.0.120=192.168.1.10~192.168.0.123=192.168.1.13となる)
nat descriptor static 1 1 192.168.0.120=192.168.1.10 4


outerに静的NATの外側IPを列挙してたのです。
outerにNATの外側IPを列挙するのは、nat descriptor type に nat を指定した時だけのようです。
IPマスカレードを使うときは、LANインターフェイス側のIP(primary)を指定する必要があるようです。


IPマスカレード+静的NATの設定はこれでOKなんですが、IPマスカレード設定後、外側(上記図のネットワークA)から、RTXにtelnetでの操作ができなくなりました。
LAN3のIPアドレスにpingを打っても返りません。

仕様なのかどうかわかりませんが、LAN3のIPアドレスを静的NATでLAN1のIPと結びつけたら、pingやtelnetができるようになりました。
こんな感じです。

nat descriptor static 1 1 192.168.0.120=192.168.1.10 4
↓静的NATエントリ2(外側からTELNETするため)
nat descriptor static 1 2 192.168.0.119=192.168.1.1 1


なおIPマスカレードを使わず、静的NATだけ使う場合はouter、innerのIPはLANインターフェイスとは違うIPを指定します。(outerはNATの外側IPの一つ、innerはNATの内側IPの一つを指定)
以下のような感じです。

ip lan1 address 192.168.1.1/24
ip lan3 address 192.168.0.1/24
ip lan3 nat descriptor 1
nat descriptor type 1 nat
nat descriptor address outer 1 192.168.0.100
nat descriptor address inner 1 192.168.1.64
nat descriptor static 1 1 192.168.0.100=192.168.1.64 3

これで以下のような静的NATが定義されます。

192.168.0.100=192.168.1.64
192.168.0.101=192.168.1.65
192.168.0.102=192.168.1.66



DHCPの設定
次に、DHCPの設定です。

これは簡単で以下のようにするとOKでした。

↓DHCPサーバとして動作させる(relayを指定するとDHCPリレーエージェントとして動作)
dhcp service server
↓払出すIPスコープ定義 48時間リースする
dhcp scope 1 192.168.1.15-192.168.1.50/24 gateway 192.168.1.1 expire 48:00

DNSも配信するように以下の設定をします。

↓DNSリカーシブサーバで動作(DNSサーバとクライアントとの間に入り、DNSパケット中継。DHCPがONなら、DHCPクライアントにDNSサーバのIPを配信)
dns service recursive
↓DNSサーバの指定
dns server 192.168.0.11 192.168.0.12

DHCPで上記DNSの設定を取得すると、必ず、ルータの内側IPもDNSサーバとして設定されてしまいます。
まぁちゃんと動くからいいんですが。。


IPフィルタ
今回一番手間取ったのは、このフィルタの設定でした。

ネットワークBからのアクセスをインターネットだけにかつping,dns,http,httpsだけに制限するための設定をフィルタを使って行います。

RTXでは各インターフェイス(LAN1,LAN2,LAN3)毎にin,out方向にフィルタを定義できるようです。

各インターフェイスに設定できるので、今回の例の場合、LAN1,LAN3のどちらに設定すればいいのかという問題がでてきます。
今回は、内側からの通信を規制したいわけなので、内側になるインターフェイス、つまりLAN1に設定したほうがよいようです。
逆に通常のブロードバンドルーター的な使い方をして、LAN1が内側、LAN2がインターネット側という構成であれば、LAN2のインターフェイスに設定すればよいでしょう。

さて、どのインターフェイスに設定するか決まれば、次のはどの方向に設定するかですが、この in,outにハマりました。以下のような意味になるようです。

in:LAN側からインターフェイスに入ってくる通信
out:インターフェイスからLAN側に出ていく通信
e0091163_18125198.jpg



RTXには、フィルタの種類として静的フィルタと動的フィルタがあります。
静的フィルタは文字通りどの方向のどの通信を許可/拒否するかを設定します。
動的フィルタですが、クライアントからサーバへの要求パケットを検出した時点で、その通信で使われるパケットを通すための双方向フィルタが自動的に生成されます。
つまり、RTXの動的フィルタは、戻りパケットの通過を許す手間を省くためのものみたいなかんじですね。(静的フィルタだと行き返り定義しないといけないけど、動的フィルタは行きだけ定義するだけで、返りを自動的に定義してくれるということ。また、通信時以外はポートがクローズされていることになる)
そして、動的フィルタは基本的に通信を許可するときに使用します。

しかし、最初のパケットは静的フィルタが優先されるため、静的フィルタで行きが定義されてないと、動的フィルタが評価されないっぽいです。

このあたりは、ヤマハ:ファイアウォール機能に詳しく書いています。
引用すると、"動的なフィルタは、静的なフィルタよりも優先して動作します。すなわち、 特定のコネクションに対応するドアが開いた後は、 そのコネクションを静的なフィルタで制御することはできません。逆にいえば、 コネクションの最初のパケットだけは、静的なフィルタで制御できます。 詳細は、2.3.3.の絵を参照してください。...繰り返しになりますが、トリガーのコネクションの最初のパケットは、 静的フィルタで通す必要があります。"と書いてます。
最初動的フィルタだけ設定して、この記述を見逃してたのでハマってしまいました。

さて、具体的なフィルタの書き方は以下のようになります。

ip filter 任意のフィルタ番号 pass(許可)/reject(拒否) 送信元IP 送信先IP プロトコル 送信元ポート 送信先ポート


======静的フィルタの設定=======
↓全アクセスを許可する設定
ip filter 1000 pass * * * * *
↓DNSの問合せは通す設定
ip filter 1001 pass * 192.168.0.11-192.168.0.12 tcp,udp * domain
↓HTTPを通す設定
ip filter 1002 pass * * tcp * www
↓Pingを通す設定
ip filter 1003 pass * * icmp
ip filter 1004 pass * 192.168.0.1 icmp
↓HTTPS通す設定
ip filter 1010 pass * * tcp * https
↓DHCPでクライアントからDHCPサーバ(今回はRTX)を通す設定
ip filter 1011 pass * * udp 68 67
↓DHCPでDHCPサーバ(今回はRTX)からクライアントを通す設定
ip filter 1012 pass * * udp 67 68
↓ローカルアドレスへのアクセスを拒否する設定
ip filter 5000 reject * 192.168.0.0-192.168.254.254 * * *
↓全アクセスを拒否する設定
ip filter 10000 reject * * * * *

======動的フィルタの設定=======
↓DNS許可
ip filter dynamic 100 * * domain
↓HTTP許可
ip filter dynamic 101 * * www
↓ICMP許可
ip filter dynamic 103 * * filter 1003
↓HTTPS許可
ip filter dynamic 106 * * filter 1010

=====フィルタの適用========
ip lan1 secure filter in 1001 1004 5000 1003 1002 1011 10000 dynamic 100 101 103 106
ip lan1 secure filter out 1012 10000

ip インターフェイス secure filter in/out で適用するフィルタ番号を列挙します。
この時の、左から順に適用されて行くようです。(つまり左側が優先度高い)
上記のin側の例だと、最初にDNSの通信かどうか判断し、次に、ルータへのICMPか判断し、ローカルアドレスへのアクセスかどうか、という順番で評価していきます。(基本的に、外側への全通信を拒否するポリシーの上で、許可するポリシーを設定するような仕様にしています)
静的フィルタの条件に合致すれば、次は、動的フィルタの条件に合致するか判断し、合致すれば自動的に双方向のフィルタが作られ、以降のパケットは動的フィルタが使われます。


動的フィルタの確認は以下コマンドでできます。

how ip connection
LAN1[in]
ID FILTER T APPS P INITIATOR D RESPONDER S
519 101 www T 192.168.0.10:4220 > 74.125.235.81:80
521 101 www T 192.168.0.10:4222 > 173.194.38.127:80
522 101 www T 192.168.0.10:4224 > 74.125.235.81:80
524 101 www T 192.168.0.10:4226 > 173.194.38.69:80


フィルタ解除は以下のようにできます。

no ip lan1 secure filter in
no ip lan1 secure filter out

動的フィルタが上手くいかないなら、静的フィルタで設定するというスタンスがいいと思います。


Linuxのiptablesとはまた違った感覚のフィルタ設定でした。
ただルータなのでiptables程は細かいフィルタはできないようです。


RTXの設定は、とにかくヤマハのドキュメントを読みこなすことが必要だと感じました。


追記:
上記の設定例はhttp,https,dhcp,icmpを通す設定でしたが、これにメールの通信も許可したいとの依頼がありました。
ということで、以下のフィルタを追加しました。

======静的フィルタの設定=======
↓smpt,smtp(サブミッション),smtps,imap,imaps,pop3,pop3sの通信を許可する
ip filter 1013 pass * * tcp * smtp,587,imap2,pop3,995,993,465

======動的フィルタの設定=======
↓smpt,smtp(サブミッション),smtps,imap,imaps,pop3,pop3sの通信を許可する
ip filter dynamic 107 * * filter 1013

=====フィルタの適用========
ip lan1 secure filter in 1001 1004 5000 1003 1002 1013 1011 10000 dynamic 100 101 103 106 107



参考:

YAMHAルーターのDHCPサーバー機能と動的フィルタ
RTXシリーズの設定メモ
YAMAHA RTシリーズのIPパケット・フィルタ
ヤマハルータの基本的なフィルタ設定
イーサアクセスVPNルーターRTX1500~開発コンセプト~
YAMAHA RTX1100に関するメモ
Yamaha:NATディスクリプタ機能 概要
Yamaha:静的NATや静的IPマスカレードなどを用いたサービス/サーバ公開方法 かなり参考になりました。
Yamaha:11.静的NATや静的IPマスカレードなどを用いたサービス/サーバ公開方法
Yamaha:ネットワークごと一括設定(静的NAT) 静的NATの設定例です。
Yamaha:NATディスクリプタの間違え易い設定例 LAN間の静的NATを1組試しましょ。
RTシリーズの設定事例集
[PR]
by Jehoshaphat | 2012-01-14 18:14 | ネットワーク | Trackback | Comments(0)
YAMAHA RTX1100の設定をしてみた
今回下記のように3つのネットワークをルーティングさせる必要がでてきました。
更に、LAN1側のあるサーバに対して、LANからは192系のアドレスでアクセスさせるようにするため、静的NATを定義します。

e0091163_18104496.jpg

LAN1 10.10.0.0/24
LAN2 192.168.0.0/24
LAN3 10.0.0.0/24


そこで、ヤマハのRTX1100を使ってルーティングしてみました。
RTXシリーズのルータはリモートアクセスやVPN等多彩な機能を持っている名機みたいです。
実は3流PGは業務系ルータの設定変更するのははじめてだったりします。


設定はTELNETとシリアルコンソールからできます。
しかし、TELNETはIP振ってないことにはアクセス出来ません。

ということで、シリアルポートをもつPCとRTX1100をRS-232 9pinケーブルで接続します。(RS232はクロスケーブルである必要があります)

ターミナルソフトは何でもいいのですが、今回は使い慣れてる PuTTY を使いました。(PuTTYでもシリアル接続は可能です)

パスワードは初期値は空なのでそのままEnterします。


RTX1100 Rev.8.03.08 (Tue Jun 14 13:43:24 2005)
Copyright (c) 1994-2005 Yamaha Corporation.
Copyright (c) 1991-1997 Regents of the University of California.
Copyright (c) 1995-1996 Jean-loup Gailly and Mark Adler.
Copyright (c) 1998-2000 Tokyo Institute of Technology.
Copyright (c) 2000 Japan Advanced Institute of Science and Technology, HOKURIKU.
Copyright (c) 2002 RSA Security Inc. All rights reserved.
Copyright (c) 1997-2004 University of Cambridge. All rights reserved.
Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved.
Memory 32Mbytes, 3LAN, 1BRI

(administrator コマンドで管理者権限として各種コマンドを実行できます。)
> administrator
Password:
#

(規定では300秒操作しなかったらタイムアウトするので時間を伸ばします)
# login timer 1000


(LAN1のポートの状態を見てみます。)
# show status lan1
LAN1
説明:
イーサネットアドレス: 00:xx:xx:xx:xx:xx
動作モード設定: Type (Link status)
PORT1: Auto Negotiation (Link Down)
PORT2: Auto Negotiation (Link Down)
PORT3: Auto Negotiation (Link Down)
PORT4: Auto Negotiation (Link Down)
最大パケット長(MTU): 1500 オクテット
プロミスキャスモード: OFF
送信パケット: 0 パケット(0 オクテット)
受信パケット: 0 パケット(0 オクテット)

# pp disable (パケットの扱いを中止してデータの不整合や不安定状態の影響をなくします)

(IPパケットをルーティングするように設定します。)
# ip routing on

(LAN1~3のIPアドレスを設定します)
# ip lan1 address 10.10.0.1/24
# ip lan2 address 192.168.0.100/24
# ip lan3 address 10.0.0.1/24

(デフォルトルートつまりこのルータで解決できないパケットは別ルータに送るよう指定します)
# ip route default gateway 192.168.0.1

(静的NATの設定をします。lan2から192.168.0.101へのアクセスをlan1の10.10.0.2にNATするようにします。)
# ip lan2 nat descriptor 1 (LAN2インターフェイスに適用するNAT識別番号指定(適当な番号で良い))
# nat descriptor type 1 nat (NATのタイプを通常のNATとする)
# nat descriptor address outer 1 192.168.0.101

# nat descriptor static 1 1 192.168.0.101=10.10.0.2

# pp ebable (パケットの扱いを再開します)

さて、デフォルトルートゲートウェイは設定しましたが、LAN1,2,3間のルーティングを設定しようとしましたが、インターフェイス間のルーティングの書き方がわかりません。(マニュアルを読んでも静的ルーティングはIPアドレスだけの指定でインターフェイスの指定がありません)

そこで、現在のルータ内のルーティングテーブルを表示してみました。

# show ip route detail
宛先ネットワーク ゲートウェイ インタフェース 種別 付加情報
default 192.168.0.1 LAN2 static
10.0.0.0/24 10.0.0.1 LAN3 implicit
10.10.0.0/24 10.10.0.1 LAN1 implicit
192.168.0.0/24 192.168.0.100 LAN2 implicit

# save (セーブしないと電源切れたときに設定が保存されません。ちなみに設定は入力した瞬間に反映されます)

あれ?設定してないのに経路情報ができています。
種別がimplicitとなっているので、IP設定した時点でRTX自身が暗黙的にルーティングを設定するようです。
この暗黙的設定されたルーティングで解決できないものが、デフォルゲートウェイに飛ぶわけですね。

ちなみに、スタティック(静的)ルーティングしたい場合は、以下のように設定します。

# ip route 10.0.0.0/24 gateway 10.0.0.1


設定した内容を表示する場合は以下のコマンドで可能です。(IPの確認もこれで行えます)

# show config



設定した情報をローカルに保存できるように tftp の設定をして、アクセスを許可するホストのIPを設定します。

# tftp host 10.10.0.2


クライアントのコマンドプロンプトで、設定ファイルを取得し保存します。

tftp 10.10.0.1 get config/管理者パスワード setting.txt

管理者のパスワードを設定していなけば / の後は空白だけでいいようです。


逆にローカルの設定ファイルをRTXに書きこむ場合は下記コマンドになるようです。

tftp 10.10.0.1 put setting.txt config/管理者パスワード

ログインパスワード変更は以下コマンドで行います。

login password

管理者パスワード変更は以下コマンドで行います。

administrator password


なお、以下のコマンドでRTXの環境表示ができます。

# show environment
RTX1500 BootROM Rev.6.02
RTX1500 Rev.8.03.24 (Thu Oct 27 11:08:38 2005)
main: RTX1500 ver=c1 serial=N0Y006932 MAC-Address=00:a0:xx:xx:xx:xx MAC-Addr
ess=00:a0:xx:xx:xx:xx MAC-Address=00:a0:xx:xx:xx:xx
CPU: 4%(5sec) 4%(1min) 4%(5min) メモリ: 15% used
実行中ファームウェア: exec0 実行中設定ファイル: config0
デフォルトファームウェア: exec0 デフォルト設定ファイル: config0
起動時刻: 1980/01/05 15:25:24 +09:00
現在の時刻: 1980/01/08 10:58:28 +09:00
起動からの経過時間: 2日 19:33:04
セキュリティクラス レベル: 2, タイプ: ON, TELNET: ON
筐体内温度(℃): 47



今回は本当に基礎レベルの設定でしたが、取扱説明書とコマンドリファレンスがあれば結構簡単に行なえます。

参考:
ASCII.jp:経路が複数あるときのルータ設定とその動作|試してわかるルーティング 今回一番役に立ちました。
@IT:ルーティングの設定は正しいか?
Network/YAMAHA RTX - Memo
[PR]
by Jehoshaphat | 2012-01-14 18:11 | ネットワーク | Trackback | Comments(0)
ファイルコピーベンチマークのためダミーファイルを作りたい
今回共有フォルダでのファイル転送ベンチマークを測定しようと思ってました。
それで、ファイルサイズが小さい分と、大きい分のテストデータが必要になります。

そのダミーファイルを簡単につくる方法がないかとおもったら、有りました。
@IT:巨大なサイズのファイルを簡単に作る方法に載ってます。

fsutil というコマンドを使えば簡単にダミーファイルを作れるようです。
書式は下記のうような感じ。


fsutil file createnew ファイル名 サイズ


サイズは10進指定なので、WindowsでいうMやGの単位に合わせたいときは注意が必要ですね。(正確には2進接頭辞で表すとMi,Gi)

1Ki = 2^10 =1024
1Mi = 2^20 =1024x1024 = 1048576
1Gi = 2^30 =1024x1024x1024 = 1073741824
1Pi = 2^40 =1024x1024x1024x1024 =1099511627776

(このあたりの単位換算はWikipedia:2進接頭辞伊勢雅英のIT見聞録情報の単位を参照)


ただ、NTFSでファイルを作ったときは注意が必要なようです。
NTFSの場合、ファイルのブロックを予約するだけで実際のデータの記録はしてないようです。
ですので、fsutil でファイルを作ったら一旦コピーしてから使ったほうが無難ですね。


ファイルコピーの時間計測

コピーの時間の計測も参考元@ITにあるように、下記コマンドで測れます。

time /t && copy testfile testfile2 && time /t


しかし、これだと時間が分までしかでません。
ということで、秒単位で測るならバッチファイルにしてしまったほうが良いかと思います。

下記ようなバッチにしました。

@echo off

echo %time%
xcopy testfile testfile2 /q /i /E /Y
echo %time%
pause



これで簡単に任意のサイズのファイルを使ったベンチマークができますね。
[PR]
by Jehoshaphat | 2012-01-14 16:25 | 豆知識 | Trackback | Comments(0)
(WindowsServer2008R2)GACに.Netアセンブリを登録したいがassemblyフォルダへのドラッグで拒否られる
WindowsServer2008 R2 のサーバで、.Net のアセンブリをGACに、C:\Windows\assembly フォルダへのドラッグアンドドロップで登録したかったんですが、結構ハマリました。
(エクスプローラからのGACからのアンインストールも同様だと思います。)

原因はUACです。まぁUAC切ればいいんですが、本番稼働中のRDSサーバのためそうはいきません。

Administratorsグループのユーザで、普通にドラッグアンドドロップすると下記のように怒られます。

アセンブリキャッシュビューア - インストールできませんでした。
アクセスが拒否されました。


Windowsエクスプローラ(explorer.exe)を右クリック→"管理者として実行"からやっても同様です。

explorer.exeのショートカットを作成し、互換性タブから管理者権限をつけようとしましたが、グレーアウトしてできません。
エクスプローラはOSの一機能なので互換性タブは使えないようです。

結局下記の方法で出来ました。


1.
まず、フォルダオプションで、"別のプロセスでフォルダーウィンドウを開く" のチェックが外れいていることを確認します。

2.
タスクマネージャーを起動し、explorer.exeを殺します。

3.
タスクマネージャーの "新しいタスク" で、C:\Windows\explorer.exe を 右クリック→"管理者として実行" します。

これで、アセンブリをドラッグアンドドロップすればGACに登録できました。


多分、Windows7やVistaでも同様だと思います。
いやぁー、結構面倒です。。。
[PR]
by Jehoshaphat | 2012-01-10 23:36 | .Net開発 | Trackback | Comments(0)
WindowsServer2008R2をiSCSIターゲットにする
iSCSIのターゲット(サーバ側)って、今まで本格的なストレージ製品しかないと思ってたんですが、そうじゃなかったんですね。

WindowsServerR2でも、Microsoft iSCSI Software Target を入れれば iSCSI のターゲットになれるように最近なったようです(しかも無償で)。
また、WindowsStorageServer2008 でも TechNetサブスクリプション から Microsoft iSCSI Software Target 3.2 をダウンロードしてインストールすれば iSCSI のターゲットになれるようです。(言語を英語にしないと出てきませんが。。。)
(WindowsStoreServer2008 R2の方はもとからiSCSIターゲット3.3は入ってるようです)

WindowsStorageServer の方で検証してみても良かったんですが、通常の WindowsServer2008 R2 で無償で使えるようになった Microsoft iSCSI Software Target 3.3 を試してみました。
Microsoft iSCSI Software Target 3.3のダウンロードは、こちら(iSCSITargetDLC)からできます。
解凍したx64フォルダ内の iscsitarget_public.msi インストーラからインストールすると、サーバーマネージャーの記憶域配下に "Microsoft iSCSI Software Target" ができ、iSCSIターゲットして振る舞えるようになります。


iSCSI Software Targetでは iSCSI の領域を仮想ディスク(VHD)として利用するようです。
また、通常のLANとは分けたEthernetを使ったほうが良いようです。(分けなくても使えました。)


新規 iSCSI ターゲットの作成は"Microsoft iSCSI Software Target" MMCから、"iSCSIターゲット"を右クリック→"iSCSIターゲットの作成"から行えます。
e0091163_23244324.jpg


ウィザード中の iSCSI ターゲット名 は適当に決めます。
"IQN識別子"はIPアドレスにしました。
注意としてこの時のIPアドレスはiSCSIイニシエータ側(アクセスするクライントホスト側)のIPアドレスになります。

次に、iSCSIターゲットの実体となる仮想ディスクを作成します。
(先に固定長のVHDを作り、それを割り当てたほうがパフォーマンスはいいようです)
e0091163_23245535.jpg


さて、はまった点ですが、iSCSIターゲット作成中にイニシエータのIPアドレスを指定した場合、設定を変更しないといけません。
iSCSIターゲットのプロパティの"iSCSIイニシエータ"タブで、識別子のメソッドが "IQN" になっていると思います。
これを "IP" に編集しないといけません。
e0091163_23251024.jpg

e0091163_23251528.jpg


後は、イニシエータ(ホスト)側で、iSCSIイニシエータを起動します。(最初はiSCSIのサービスを起動してないというので、OKを押下しサービスを起動してやります)
"ターゲット" にiSCSIターゲットを動かしているサーバのIPアドレスを入れて、"クイック接続" すると、接続が完了します。
e0091163_23253810.jpg


イニシエータ側のディスクの管理を見ると、ちゃんと割り当ててますね。
ただ、最初はオフラインになっているので、オンラインにしてから、ディスクの初期化とパーティション作成をしてやる必要があります。
e0091163_23255170.jpg


今回は評価目的なので一台のサーバの上にHyper-VでiSCSIターゲット用仮想サーバ、iSCSIイニシエータ用仮想サーバで検証しました。
一応iSCSIイニシエータ側からiSCSIアクセスしたときと、iSCSIターゲットで仮想VHDをマウントした後ファイル共有をかけ、iSCSIイニシエータ側からネットワークドライブした状態のベンチマークを測りました。
仮想環境なので信頼できるか情報かはわかりませんが、下記のような感じです。

↓iSCSIでアクセスしたとき。
e0091163_2326623.jpg


↓ネットワークドライブ経由でアクセスしたとき。
e0091163_23262194.jpg


読み込みに関してはほぼ同じですが、書き込みはネットワークドライブ経由のほうが1~2割程優れているという結果が出ました。
まぁ、評価環境に問題あるので信用置けませんが。。

Impress の記事でも実HDDの約10%~約20%のオーバーヘッドで済むようです。

ターゲットのプロパティで、複数のiSCSIイニシエータを接続しようとすることは出来ましたが、下記のような警告が出ます。
クラスタの検証で使うので、構わないんですが、そうでない場合はターゲットとイニシエータは1:1でないとダメなようです。
e0091163_23263590.jpg


Windowsフェールオーバークラスタの検証には、共有ディスクが必要になるんですが、これで簡単に評価ができるようになり助かりました。


参考:
【仮想化道場】 無償の純正iSCSIターゲットソフト「Microsoft iSCSI Target」を試す -クラウド Watch
iSCSI Software Target 3.2をWindows Server 2008で利用する - http://pnpk.net
Windows Storage Server2008 インストール 2
@IT:特集:最新IPストレージ技術「iSCSI」 - Part.1
iSCSI - Wikipedia
MSFCとクイックマイグレーション この記事ではRocketEivisionというiSCSIターゲットソフトを使ってますが、このあたりもMSのiSCSIターゲットに置き換えられそうですね。
@IT:Hyper-V 2.0実践ライブ・マイグレーション術 第1回 Hyper-Vのライブマイグレーションの評価にもiSCSIによる共有ディスクは必要になります。
[PR]
by Jehoshaphat | 2012-01-10 23:28 | サーバがらみ | Trackback | Comments(0)
HP ProLiant GL360 G7のベンチマーク
ラックマウントサーバーHP ProLiant GL360 G7のベンチマークを、CrystalMarkとCrystalDiskMarkで測定してみました。

e0091163_0233372.jpg

CrystalMarkですが、CPUのスコアが予想以上に低かったです。
これじゃ自宅メインPCの Core i5 750 と変わりません。
と、思ったらCrystalMarkってCPU負荷は4スレッドまでしかできないのですね。
GL360 G7 は Xeon E5640(4コア+HyperThreding有) x 2CPUなので論理的には16コアある事になります。
なので、正確なスコアとしてはこの結果の値の4倍ということになるんでしょうか。。

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
CrystalMark 2004R3 [0.9.126.452] (C) 2001-2008 hiyohiyo
Crystal Dew World [http://crystalmark.info/]
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

------------------------------------------------------------------------------
CrystalMark Result
------------------------------------------------------------------------------
Display Mode : 1280 x 1024 16bit (None)

CrystalMark : 204990

[ ALU ] 48320
Fibonacci : 19280
Napierian : 11463
Eratosthenes : 5736
QuickSort : 11819
[ FPU ] 45044
MikoFPU : 5171
RandMeanSS : 23338
FFT : 8417
Mandelbrot : 8096
[ MEM ] 47841
Read : 16542.85 MB/s ( 16542)
Write : 12823.53 MB/s ( 12823)
Read/Write : 9803.38 MB/s ( 9803)
Cache : 86510.10 MB/s ( 8651)
[ HDD ] 56036
Read : 1007.57 MB/s ( 10537)
Write : 833.81 MB/s ( 9669)
RandomRead512K : 919.27 MB/s ( 10096)
RandomWrite512K : 779.18 MB/s ( 9395)
RandomRead 64K : 566.82 MB/s ( 8334)
RandomWrite 64K : 501.11 MB/s ( 8005)
[ GDI ] 811
Text : 35
Square : 278
Circle : 288
BitBlt : 210
[ D2D ] 6120
Sprite 10 : 725.05 FPS ( 72)
Sprite 100 : 492.60 FPS ( 492)
Sprite 500 : 221.55 FPS ( 1107)
Sprite 1000 : 136.54 FPS ( 1365)
Sprite 5000 : 27.82 FPS ( 1391)
Sprite 10000 : 16.93 FPS ( 1693)
[ OGL ] 818
Scene 1 Score : 796
Lines (x1000) : ( 84378)
Scene 1 CPUs : ( 16)
Scene 2 Score : 22
Polygons(x1000) : ( 169)
Scene 2 CPUs : ( 1)

------------------------------------------------------------------------------
System Information
------------------------------------------------------------------------------
OS : Windows NT6.1 Enterprise Edition (Full installation) [6.1 Build 7600]
Display Mode : 1280 x 1024 16bit
Memory : 24566 MB
DirectX : 10.0
------------------------------------------------------------------------------
CPU
------------------------------------------------------------------------------
CPU Name : Intel
Vendor String : GenuineIntel
Name String : Intel(R) Xeon(R) CPU E5640 @ 2.67GHz
CPU Type : Original OEM processor
Number(Logical) : 16
Family : 6
Model : C
Stepping : 2
Feature : MMX SSE SSE2 SSE3 SSSE3 SSE4.1 SSE4.2 XD Intel 64
Clock : 2666.82 MHz
Data Rate : QDR
------------------------------------------------------------------------------


次に、CrystalDiskMarkの結果です。

e0091163_0233170.jpg


-----------------------------------------------------------------------
CrystalDiskMark 3.0.1 x64 (C) 2007-2010 hiyohiyo
Crystal Dew World : http://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 byte/s [SATA/300 = 300,000,000 byte/s]

Sequential Read : 1040.082 MB/s
Sequential Write : 864.448 MB/s
Random Read 512KB : 907.405 MB/s
Random Write 512KB : 796.785 MB/s
Random Read 4KB (QD=1) : 64.653 MB/s [ 15784.4 IOPS]
Random Write 4KB (QD=1) : 60.173 MB/s [ 14690.6 IOPS]
Random Read 4KB (QD=32) : 271.124 MB/s [ 66192.3 IOPS]
Random Write 4KB (QD=32) : 252.694 MB/s [ 61693.0 IOPS]

Test : 100 MB [C: 63.0% (126.0/200.0 GB)] (x5)
Date : 2011/06/01 0:00:00
OS : Windows Server 2008 R2 Enterprise Edition (Full installation) [6.1 Build 7600] (x64)

かなり高速です。
さすがはディスク4台のRAID5ですね。
ディスクはSAS2.5インチの1000prmでした。
e0091163_023365.jpg



このようなサーバ機触っていると普通のPCが遅く感じます。
[PR]
by Jehoshaphat | 2012-01-10 00:25 | ハードウェア | Trackback | Comments(0)
(App-V)Office2007をシーケンスしてみた
App-V でOffice2010を評価しようとしたけれど。。 でボリュームライセンスが無いために、Office2010のシーケンスは諦めたと書きました。


Office2007だったらボリュームライセンスを持っていたので、Office2007でシーケンスを試してみました。
App-V は 4.6 です。

Officeは結構ややこしいことをしないと行けないようです。

参考んにしたのは、2007 Office system の仮想化マニュアル (Word 2.07 MB)App-V検証~その2 Office 2007 をシーケンス処理する MCTの憂鬱です。


ほとんど、参考先の手順と同じですが、バージョンが4.6なので一部異なるところがありました。

以下に手順の概略をメモしておきます。

まず、ボリュームライセンス版Officeメディアをセットし、コマンドプロンプトからOfficeカスタマイズツールを立ち上げます。

D:\setup /admin


そうすると、Office カスタマイズツールが立ち上がります。


左のメニューで適宜必要な設定を行います。今回設定したのは下記項目です。
・「インストール先と組織名」
インストール先を変更します。インストールフォルダ名は8文字以内で、且つその他のSoftGrid仮想アプリケーションで利用したインストールフォルダ名と重複しないように注意して命名します。
インストール先:Q:\Off2007
組織名:hoge

・「使用許諾契約とユーザーインターフェース」
ボリュームライセンスのキーを入れます。「使用許諾契約の条項に同意します」チェックをオンにします。

・[Office セキュリティ設定]
マクロの設定とかしたければここで設定します。マクロを使ってる社内文書が多いので、マクロセキュリティは最低にしました。

・[機能のインストール状況の設定]
MSの指針では下記のように書いてました。
[機能のインストール状況の設定]を選択します。Access, Excel, Outlook, PowerPoint, Word, Office共有機能の6項目について、全て「マイコンピュータから実行」を選択します。Officeツールについて、「Microsoft Office Document Imaging」は「インストールしない」、その他は「マイコンピュータから実行」を選択します。その他のアプリケーションについては、全て「インストールしない」を選択します。

・[レジストリエントリの追加]
[追加]ボタンをクリックして下記レジストリエントリを追加します。
App-Vで配信したOutlook2007では、Windows Desktop Searchを利用できないので、Outlook2007のWindows Desktop Searchを無効にします。

ルート: HKEY_LOCAL_MACHINE
データ型 : dword
キー: SOFTWARE\Microsoft\Windows\Windows Search\Preferences
値の名前: PreventIndexingOutlook
値データ: 00000001



メニューから[ファイル]-[名前をつけて保存]で、構成ファイルを保存します。
あとで、コマンドプロンプトで指定するのでドライブ直下が楽です。


ここからシーケンス作業に入ります。

シーケンサー立ち上げ、[パッケージの作成(既定)] → [標準のアプリケーション(既定)] → [カスタムインストール]にします。
パッケージ名は office2007 としました。

そして、コマンドプロンプト立ち上げ、カスタムインストールの構成ファイルを指定します。

D:\setup /adminfile "C:\office2007adm.msp"

インストーラが出てくるので、「今すぐインストール」を押下し、インストールが終わるまで待ちます。
インストーラが終わったら、「閉じる」ボタン押下します。


参考先サイトでは、このSP2のシーケンスもされてたんですが、3流PGの場合SP2を一緒にシーケンスすると、配信後に予期せぬエラーでOfficeが使えませんでした。
原因は不明です。


「インストールを終了する」にチェックを入れて、シーケンスを終了します。


「カスタマイズする」を選択し、ウィザードの内容に従い、ExcelとWordを起動します。
起動すると、プライバシーオプション(オンラインヘルプとか、品質向上とか) がでるので適当に構成します。
ウィザード中の最適化のところでもExcelとWordを起動しておくと良いでしょう。

これで、パッケージが出来ります。


パッケージの編集で、できたてのパッケージを開き、[展開] タブでプロトコルとホスト名設定します。

[仮想レジストリ] タブをクリックして、[User/%SFT_SID%/Software/Microsoft/Office/Common/UserInfo] を右クリックし、[キー]-[削除]をクリックしてシーケンス作業時のユーザー情報を削除します。この作業により、アプリケーションを配信した際に、クライアントPCにログインしているユーザーの情報が反映つまり、インストールウィザードでいれた、会社名や使用者名が反映されるようにします。


App-V Desktops に 配信したMicrosoft Office Word 2007の明朝体が正しく表示されないことがあります。(http://support.microsoft.com/kb/953594/ja参考)
なので、OfficeでインストールされたMS明朝のフォントファイルを削除します。
[ツール] メニューをクリックし、[診断] から [コマンドウインドウ] をクリック→下記のコマンドで MSMINCHO.TTF ファイルを削除します。

Q:
cd Off2007\vfs\CSIDL_FONTS
del MSMINCHO.TTF
exit

[ファイル] タブをクリックし、Offi2007VFSCSIDL_FONTS ディレクトリを展開→ MSMINCHO.TTF をクリックし、ファイル名を任意の名前に変更します。短い形式の名前の変更は行わず、 [適用] ボタンをクリックします。その後 [ファイル] メニューの [名前を付けて保存] をクリックし、パッケージに任意の名前を付けて保存します。
フォントファイル名は "__.TTF" にしました。


また、[OSD]タブで下記の設定を各アプリケーション毎に行います。
・[SOFTPKG]-[IMPLEMENTATION]-[VIRTUALENV]を開き、TERMINATECHILDRENを TURE に変更します。 これは、Office2007は終了してもタスクが残るので、終了時に強制的にタスクを終了させる設定です。

・[SOFTPKG]-[IMPLEMENTATION]-[VIRTUALENV]-[POLICIES]-[LOCAL_INTERACTION_ALLOWED]を選択し、右下ペインの[要素テキスト]の値を FALSE から TRUE に変更します。OfficeはOLEやIMEとの連携を行うので、そのための設定です。


これでパッケージを保存し、App-Vサーバにコピー、インポートすればOKです。
実際に動かしてみましたが、なぜかWordの起動時にテキストが空のダイアログが表示され、OKを押下しないとWordが起動できません。
謎です。

癖はありますが、Officeが展開出来ればある程度のニーズは満たせると思います。
[PR]
by Jehoshaphat | 2012-01-10 00:17 | サーバがらみ | Trackback | Comments(0)
VistaでUSBメモリが認識できない
知人のWindows VistaのPCで、USBストレージデバイスが認識できない現象が起きてました。USBメモリやUSB-HDDも認識できません。

USBメモリを挿入するとドライバのインストールが要求されます。自動でインストールを選んでも、ドライバが見つからない旨が表示されます。

デバイスマネージャから一旦削除したりしてもダメでした。

で、ググッた結果、Vista USBメモリ、HDDのドライバがインストールできないにある方法で解決できました。

結局、ドライバの参照先を C:\Windows\winsxs にすればインストールできました。
(警告が出ますが、そのまま続行)

以下の場所にドライバある場合もあるようです。
C:\Windows\System32\DriverStore\FileRepository

多分、USBマスストレージのドライバが消えてしまったか壊れてしまったんだと思います。
[PR]
by Jehoshaphat | 2012-01-10 00:15 | ハードウェア | Trackback | Comments(0)
(RDS)接続ブローカー構築してからリモートデスクトップ接続行うと認証が2回聞かれる
(RDS)リモートデスクトップサービスで冗長化かつ負荷分散する方法で書いた手順で、接続ブローカーとDNSラウンドロビンによってリモートデスクトップサービス(ターミナルサービス)の負荷分散+冗長化をもたせました。

構成としては、接続ブローカーサーバ、RDSサーバ1号機(RDSsv1)、RDSサーバ2号機(RDSsv2)、DNSサーバ(ドメインコントローラ)という感じです。

WindowsXP SP3 の端末からテストをしてみたんですが、何故か認証が2回聞かれることがあります。
(XP側でテストしたRDPクライアントバージョは6.1.7600です)

Windows7からではすんなり1回の認証で通ります。

で、どのような場合に2回聞かれているかというと、接続開始時にまずDNSラウンドロビンロビンによって RDSsv1,RDSsv2 のどちらかにセッションをはります。
まずその時に、1回目の認証を聞いてきます。
そして、認証成功後、接続ブローカーによってどのサーバに入るか指示されるわけですが、最初の認証したのとは違うサーバ(RDSsv2)にリダイレクトされると2回目の認証を聞いていきます。
(そのままリダイレクトされずにRDSsv1を使うよう接続ブローカーによって指示されたときは、2回目の認証は聞いてきません。)
つまり、リダイレクト時に、リダイレクト先へ認証済みのチケットが送れてないということですね。


さて、色々調査したところ、原因がわかりました。
それはXPのRDPクライアントはデフォルトでは、ネットワークレベル認証(NLA)が有効になっていないということが原因でした。
(ちなみに、ネットワークレベル認証が対応しているのはRDPクライアント6.0~です。)


今まではリモートデスクトップのセッションを張ってから認証を行ってましたが、それだとセキュリティ的によろしくないので、セッションを張る前に認証するというのがこのNLAです。


RDPクライアントでネットワークレベル認証が有効になっているかどうかは、タイトルバーを右クリックしてバージョン情報を表示するとわかります。
XPではデフォルトだと下記のように有効になっていません。
e0091163_0161334.jpg

e0091163_0161212.jpg


NLA無効時にRDS(TS)サーバにつなぐとこうなります。
e0091163_016386.jpg


RDPクライアントでネットワークレベル認証を有効にするには下記レジストリに値を追加します。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages
末尾の行に "tspkg" を追加。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SecurityProviders
末尾に ", credssp.dll"を追加します。


設定後再起動すると、下記のように有効になります。
e0091163_017729.jpg

e0091163_017661.jpg


NLA有効時にRDS(TS)サーバにつなぐとこうなります。
e0091163_0172683.jpg



さて、実はこのネットワークレベル認証ですが、各RDSサーバの設定も関係します。

RDセッションホストの構成 → RDP-Tcp のプロパティでセキュリティに関する設定ができるわけですが、ここの "セキュリティ層" はデフォルトは "ネゴシエート" になっています。
しかし、一番低レベルの "RDPセキュリティ層" にすると、サーバ側でのネットワークレベル認証が無効になってしまいます。
そうなると、クライアントでNLAが有効なはずのWindows7からアクセスしても、サーバ側でNLAが無効になっているため、連続認証の現象が発生するようになります。

なので"セキュリティ層"の設定は "ネゴシエート" もしくは "SSL(TLS1.0)" にしておく必要があります。
e0091163_0182573.jpg


ちなみに、下の方にある "ネットワークレベル認証でリモートデスクトップを実行しているコンピュータからのみ接続を許可する" にチェックすると、クライアント側がNLA有効になっていなくて接続すると下記のようなエラーになります。
e0091163_0184174.jpg


RemoteAPP使用時のシングルサインオンにも、このネットワークレベル認証が関係しているようです。

この原因探るのに結構時間かかってしまいました。。。

参考:
ターミナル・サービスによるクライアントの仮想化(後編) - @IT RemoteAppの話ですが、下部の"シングル・サインオンを構成する"あたりにヒントがありました。
TechNet:リモート デスクトップ サービスの RDC クライアント シングル サインオンを有効にする
【TS】XP SP3でネットワークレベル認証(NLA)を有効にする - かめログ2
XP SP3でネットワークレベル認証(NLA)を有効にできんのかよ kamepress
[PR]
by Jehoshaphat | 2012-01-03 00:21 | サーバがらみ | Trackback | Comments(0)
(RDS)リモートデスクトップサービスで冗長化かつ負荷分散する方法
WindowsServer2003の時はターミナルサービスの冗長化をNLBクラスタを使って実現していました。
しかし、これでは負荷分散にはならずいつもどちらかのサーバのセッションが多く負荷バランスが不安定でした。

WindowsServer2008以降ではTSセッションブローカー(2008無印)、接続ブローカー(2008R2)を使うことで負荷分散ができるようです。
(冗長化は従来のNLBやロードバランサ機器も使えますが、DNSラウンドロビンがお手軽で、手っ取り早いです。ただしDNSラウンドロビンだと障害時の待ち時間が30秒ほど必要になります。)

仕組みや構成については、@IT:負荷分散をサポートするTSセッション・ブローカを見るとよくわかります。


構築の方法も簡単でした。
TechNet:チェックリスト: RD 接続ブローカーを使用して、負荷分散された RD セッション ホスト サーバー ファームを作成するの手順通りやれば構築できます。

一応手順概要をメモしておきます。
1.リモートデスクトップサービス(RDS)をインストールしたサーバを複数台用意します。

2.リモートデスクトップ接続ブローカーの役割をRDSとは別のサーバにインストールします。(ドメインのメンバサーバである必要あり)

3.接続ブローカーをインストールしたサーバのローカルグループに、「Session Broker Computers」というのができているので、そこに各RDSサーバを追加します。(デフォルトではコンピュータが選べないようになっているので注意が必要です。)

4.各RDSサーバをRD接続ブローカーのファームに参加させます。
サーバマネージャの[リモートデスクトップセッションホストの構成]から[設定の編集]領域の[RD 接続ブローカー内のファームのメンバー]をダブルクリックし設定画面を立ち上げます。
[設定の変更]→ [ファーム メンバー]を選択し、[RD接続ブローカーサーバー名]にRD接続ブローカーのサーバー名を入力、[ファーム名]に適当な名前を入力します。
あとは、[接続ブローカーの負荷分散に参加する]チェックボックスをオンにし、再接続に使用するIPアドレスにチェックを入れます。
これを各RDSサーバに対して行います。

5.最後にDNSの設定をします。
DNSサーバで新しいAレコードを追加します。
ホスト名は、4.で入力した[ファーム名]が望ましいようです。
IPは各RDSサーバのものを使います。
例えば、ファーム名が"frm"で、RDSサーバが2台あってそれぞれのIPが10.0.0.11,10.0.0.12ならDNSに下記のように2レコード追加します。

frm 10.0.0.11
frm 10.0.0.12



これで、クライアントがリモートデスクトップで frm にアクセスするとDNSラウンドロビンでどれかのRDSに接続し、そのRDSは接続ブローカーにセッションがあるかどうか確認して、セッションがあれば今まで使っていたRDSに、セッションがなければ負荷が軽いRDSにリダイレクトするようになります。

試しにRDSサーバの片方を止めてみました。認証画面が出るまで数十秒かかりますが無事にもう片方につなぎに行くようになりました。


参考:
Windows Server 2008で大幅に進化したターミナルサービスを試す【完結編】
2008R2RDS導入のポイント_v1.0.pdf MSのTechnetブログに掲載されてた情報ですが、分かりやすくまとめられているので、RDSを導入するのなら必ず読んでおくべきですね。
[PR]
by Jehoshaphat | 2012-01-03 00:08 | サーバがらみ | Trackback | Comments(0)