Archive for 8月, 2009

DHCPでクラスレスな静的ルートを配信する

8月 27th, 2009

DHCPでルーティング情報を送りたいことがある。例えば次のような場合。

ルータの向こうにサーバを立てた

デフォルトゲートウェイはブロードバンドルータにするのだけど、それとは別にルータがあって、その向こうのサーバにアクセスしたい。

こうした場合には、サーバへのルートをクライアントに設定するわけだが、マシンが多いとDHCPで配信したい。DHCPには静的ルート(static route)のオプションがあって、特定のIPアドレスへのゲートウェイについては配信できるのだけど、サーバが多いとネットワークアドレスを指定したい。

これを「クラスレスな静的ルート」といって、Windows XP以降ではDHCPのオプション249として実装されている。Windowsクライアント限定になってしまうけれども、これを利用することを考える。

Windows Serverの場合

Windows Serverに付属のDHCPサーバであれば、単に「クラスレス静的ルート」を設定すればいい。

クラスレス静的ルート

Linuxの場合

dhcpdにはstatic-routesというオプションがあるが、これはネットマスクを指定できないのでクラスレスではない。(ただし、RedHatのDHCPクライアントはこれをクラスレスに扱えるらしい・・)

オプション249はMicrosoftの独自拡張なので、これを扱うにはdhcpd.confで次のように設定する。(数値の並びはコンマで区切ることに注意)

# オプション249を定義する
option ms-static-routes code 249 = array of integer 8;

# route -net 192.168.10.0/24 gw 192.168.0.254
option ms-static-routes 24, 192,168,10, 192,168,0,254;

# route -net 10.1.0.0/16 gw 192.168.0.254
option ms-static-routes 16, 10,1, 192,168,0,254;

その他の方法

もっと手軽な方法として、DHCPを使うのではなくて、ブロードバンドルータ上でルートを設定するやり方もある。これにはブロードバンドの設定画面で次のようにルートを登録すればいい。

ネットワーク:192.168.10.0
ネットマスク:255.255.255.0
ゲートウェイ:192.168.0.254

こうするとサーバ宛のパケットはすべてブロードバンドルータを経由して社内ルータに送られる。

本来であれば、ICMPリダイレクトという機能によって、クライアント側に一時的なルートが動的に作られるはずなのだが、これはデフォルトでは無効になっているようだ。

とはいえ、Windowsクライアントに限らずあらゆるケースで有効なので、DHCPと合わせて設定しておくといいかもしれない。

仮想マシンにVLANタグを通す

8月 10th, 2009

もはやサーバを仮想化せずに動かすこともほとんどなくなった今日この頃。

VLANでネットワークを分離し、仮想マシンも各VLANに割り振っているのだけれども、VMware ESXiで仮想マシンにVLANタグを通す方法がようやくわかった。

VLAN IDを4095にするとタグが通る。なんてわかりにくい!

VLAN IDを4095にするとタグが通る。なんてわかりにくい!

単純に仮想マシンを特定のVLANに割り当てるだけであれば、ネットワークのVLAN IDを設定してやればいい。

ただ、仮想マシンを複数のVLANに接続させたい場合には、この方法だとVLANの数だけ仮想NICが必要になってしまう。仮想NICの数には制限があるので、多くのVLANと接続したいような場合にはこれだと困る。(例えばルーター)

そこで、OS側でVLANを扱えるように仮想マシンにVLANタグを通してやりたかったのだけど、これには右図のように「VLAN ID」として「4095」を設定してやればいいらしい。

公式のドキュメント(VMware ESX Server 3 802.1Q VLAN Solutions)に記述があった。

ちなみに、VMware WorkstationやVMware Serverであれば、特別なことはしなくてもVLANタグはそのまま通る。ただし、ホストOSがWindowsだと、LANカードによってはドライバレベルでVLANタグが外されてしまうので、そのようなドライバを使っている場合には、タグを通すようにレジストリでの設定が必要になるようだ。(参考

仮想マシンのディスク性能

8月 6th, 2009

VMware Workstation 6.5で、ホスト機とゲスト機のディスクアクセス(SSD、HDD、iSCSI)を比べてみたのでメモ。OSはどちらもWindows XP SP3。

SSD(Intel SSD X25-M 80GB)

左がホスト側、右がゲスト側での性能。ランダムアクセスでの落ち込みが大きい?

ホスト機での性能(SSD) ゲスト機での性能(SSD)

HDD(Samsung HD160JJ 160GB)

SSDと比べると、性能の落ち込みはそれほど目立たない感じ。

ホスト機での性能(HDD) ゲスト機での性能(HDD)

iSCSI(TeraStation IS RAID10 450GB)

ネットワークのオーバーヘッドがあるから、どちらも似たような性能になるかと思いきや、仮想化のオーバーヘッドは少なからずあるみたい。ゲスト内でイニシエータを走らせれば速くなるんだろうか・・

host_iscsi ゲスト機での性能(iSCSI)

感想

SSDは仮想マシンからアクセスしても早いなぁ。

シーケンシャルな書き込みについては、SSDでもHDDでも大きな違いはなさげ。iSCSIも実用上の問題はなさそう。

仮想マシンでも、複数のストレージを作って使い分けるのがよいかな。