Q

ネットワーク上にWindows 2000 ProfessionalとWindows XP Professionalが混在しています。何台かあるファイル・サーバーのうち,特定のサーバーにWindows XPからアクセスする時だけ反応が非常に遅いことに気づきました。

 最終的にはアクセスできますので,アクセス権の問題ではないと思います。全マシン共通でDHCPを使っていてWindows 2000では問題が発生しているマシンがないため名前解決など端末側の設定ミスでもないようです。考えられることは何でしょう。

A

これだけでは断定することはできませんが,まずはWindows XPから搭載されているWebClientサービスとパケット・フィルタリングの設定との相性を疑ってみるのがよいでしょう。

 WebClientは,WebフォルダなどHTTPを使ったファイル共有機能であるWebDAVのクライアント機能を実現しているサービスです。実はWebClientサービスが動作しているクライアント・マシンがファイル・サーバーにアクセスしようとすると,まずWebDAVによるアクセス(HTTP)を試行してから,実際のファイル共有の接続を開始します。

WebClientでは余分な通信が発生
 このため,Webサーバーのアクセス・ログを見てみると,Microsoft-WebDAV-MiniRedir/5.1.2600という値が入った内容が記録されているはずです。WebDAVはHTTPアクセスの一種のため,こうしたログが記録されること自体は正常です。

 Webサーバーが存在していない状態の場合は,HTTPポートへの接続要求(SYNパケット)に対して即座に拒否(リセット・パケット)が返却され,約0.5秒間隔で3回繰り返した時点で次の処理に移ります。

 このように,サーバー側でWebDAVアクセスに対して即座に応答している場合は,無駄な通信は発生するものの結果としてクライアント側から見たときのレスポンスはほとんど変わりません。

 しかし,ここでサーバー側のパケット・フィルタ機能がHTTPポートへの接続を明示的に拒否せず,反応を返さずにそのまま破棄するように設定されている場合が問題です。そうするとクライアントはWebDAV経由で何回かアクセスして反応がないことを確認した上で,通常のファイル共有の手順に移ります。


△ 図をクリックすると拡大されます
図5●ネットワーク・モニターで確認してみると,途中まで進んだ接続処理をいったんクローズしてからHTTPでの接続を2回試行し,それがタイムアウトしてから改めて通常の接続を開始している

 実際のパケットのやり取りを確認してみると,図5のフレーム14でクライアントからHTTPに対する通信を開始していますが,サーバーからの反応がないため,一度途中まで行われた接続がフレーム15~25でクローズしています。結局3秒後(フレーム26)と6秒後(フレーム27)にHTTPへの接続を試行した後で,12秒後(フレーム28)に改めてNBT(ポート139)への接続を開始しますが接続が一度クローズされてしまっているため,フレーム29以降で改めて認証をやり直しています。

 この例では,接続処理が再開されるまで結局21秒近く経過してしまっています。このように,Windows XPのWebClientサービスが有効になっている端末では,ファイル・サーバーへのアクセスまでに時間が掛かってしまうという事象が発生するわけです。

不要ならWebDAVサービスの停止を
 今回の事象はWebClientサービスが有効な場合にのみ発生しますので,WebDAVを使う予定がない場合はクライアント側の「WebClients」サービスを停止してしまうのが一番簡単な解決策です。Active Directoryに所属していれば,グループ・ポリシーなどで一括での設定変更も可能です。

 WebClientサービスを停止できない場合は,ファイアウオールの設定を変更してパケットを破棄ではなく拒否する,もしくはWebサービスを起動していない場合は単にHTTPポートを開放することで,レスポンスが改善可能です。

高橋 基信