Q

1台のWindows Server 2003上でIIS(Internet Information Services)6.0とApacheの両方を利用しWebサービスを提供する予定です。別々のIPアドレスを割り当てた複数のネットワーク・カードを装着し,それぞれのIPアドレスに対して各Webサーバーのサービスをバインドさせたいと思っています。しかし,IISマネージャ上からIPアドレスのバインド設定をしてもIISがすべてのアドレスにバインドされてApacheが正常に稼働しません。Windows 2000のIIS 5.0で有効だったメタベースDisableSocketPoolingプロパティを設定しても解消できません。どうすればいいのでしょうか?

A

IISはWindows 2000に搭載したバージョン5.0以降でソケット・プールという機能を搭載しています。このソケット・プールは異なるサイトへのアクセス同士でマシンのリソースを共有する機能で,全体のパフォーマンスを向上させるのに役立ちます。

図7●IIS(Internet Information Services)5.0以降ではソケット・プールという機能が標準で有効になっている

 しかし,このソケット・プールの機能を有効にしたIISは,すべてのIPアドレスでポート80のやり取りをリッスンする仕様になっています(図7)。IISは標準でソケット・プールが有効となっているため,そのままではApacheなど他のWebサーバーとIPアドレスを分けて共存させようと思っても不可能です。

 IISで特定のIPアドレスのみをリッスンさせ,他のIPアドレスのポート80を解放するには,ソケット・プールの機能を無効にする必要があります。

 Windows 2000のIIS 5.0では,システム・ドライブの\Inetpub\Adminscripts内にあるadsutil.vbsというスクリプトを使います。コマンド・プロンプトなどから「cscript adsutil.vbs set w3svc/disablesocketpooling true」というコマンドを実行すれば,メタベースDisableSocketPoolingプロパティを設定してソケット・プールを無効にすることができます

 しかし,Windows Server 2003で搭載したIIS 6.0は仕様を変更して,このメタベースの設定ではソケット・プールを無効にできなくなっています。これはIIS 5.0ではユーザー・モードで稼働するWinsockを使ってIPでのやり取りをリッスンしていたのに対し,IIS 6.0ではその機能をカーネル・モードであるhttp.sysに収納したためです。

http.sysの設定を直接変更
 そこで,Windows Server 2003では,Support Toolsにあるhttpcfg.exeを利用してhttp.sysに直接設定を書き込むようにします。Windows Server 2003 Support ToolsはインストールCD-ROM内の\SUPPORT\TOOLSディレクトリにあるSUPTOOLS.MSIを実行することでインストールができます。


△ 図をクリックすると拡大されます
図8●Windows Server 2003のIIS 6.0では,サポート・ツールを使ってhttp.sysの設定を変更する必要がある

 その後コマンド・プロンプトから「httpcfg set iplisten -i[IPアドレス:ポート]」を実行することで設定できます(図8)。このときIISでバインドしたいIPアドレスのみを設定するようにします。設定内容を確認する場合は「httpcfg query iplisten」で可能です。

 設定内容を誤るなどして訂正の必要がある場合は,「httpcfg delete iplisten -i[IPアドレス:ポート]」を実行することで内容を削除できます。詳細は「httpcfg /?」とし,ヘルプから確認してください。

 http.sysの設定はhttpサービス読み込み時にのみ内容を確認するため,設定を有効にするにはhttpサービスを停止後,再度起動する必要があります。「net stop http /y」を実行することで,httpサービスと依存関係にあるサービスを合わせて停止できます。その後「net start w3svc」を実行することでサービスの再起動を行い設定が反映されます。なお,GUIからIIS Admin Serviceなどを再起動しても設定は有効になりませんので注意してください。

 この状態ではIISに特定のIPアドレスがバインドされた状態になるので,それ以外のIPアドレスのポート80を他のアプリケーションに割り当てることが可能です。

 これらの手順はマイクロソフトのサポート技術情報でも関連情報を公開されています(238131と813368)。併せて参照ください。

小鮒 通成