LAN環境なのにログオン時に低速回線で接続していると判断される

対象プラットフォーム

質問

現在Active Directoryを運用していますが、クライアントマシンからのログオンが非常に遅い、グループポリシーがうまく適用できない、ログオンスクリプトが実行されないといった障害が発生しています。

いろいろ調査したところ、サーバと同一のIPサブネット上にある試験マシンに対しては問題なく適用されることや、「低速回線」だと判断された時に発生する事象に類似していることがわかりました。一般のクライアントとサーバ間はファイアウォール経由で接続されていますが、100MbのLANで接続されている上、切り分けのためすべてのTCPポートを解放しても事象が改善しません。DNSの設定は試験マシンも運用マシンも同一の設定になっており、DNSのクエリが正しく解決されていることも確認済なので、何が原因かわからない状態です。

なぜこのような事象が発生するのでしょうか。

回答

サーバと同一のIPサブネット上にあるマシンでは事象が発生しないことなどを勘案すると、これは、Active Directoryが「低速回線」を検出する際のロジックが原因で発生している事象だと考えられます。

低速回線かどうかを判断するため、クライアントマシンは起動時にDNSを参照するなどして決定されたGPO配布元のDCに対してICMPパケットを送出し、その平均応答時間を計測します。ICMPパケットとはpingコマンド実行時に送出されるものと基本的には同じパケットで、マシン間の到達性を確認する際などに用いられます。

デフォルトではある計算式に当てはめて算出された帯域が500Kbps以上の場合に低速回線であると判断します。詳細なロジックについてはWindows 2000 ServerリソースキットNo.4のP.254「22.8.4 グループポリシーとネットワーク帯域幅」などを参照してください。

このネットワークではセキュリティ強化のため、ICMPパケットがフィルタされているものと思われます。この場合ICMPパケットはタイムアウトしてしまうため、タイムアウト待ちの分だけログオン処理が遅延するうえ、低速回線であると判断され、グループポリシーなどが一部しか適用されないといった現象が発生してしまいます。

マイクロソフト社のドキュメントなどには明記されていない場合もあるのですが、クライアントとサーバの間にファイアウォールを構築する場合、基本的にICMPパケットについても通過させるような設定にしておいてください。

「低速回線」の検出を無視する設定も

前述したように「低速回線」が検出された場合、トラヒック削減のため、Active Directoryでは表1のように一部の処理を行なわない仕様になっています。

表1: 低速回線の時に行なわれない処理(Windows 2000 Server リソースキット No.4 P.255より)
ポリシーの種類低速回線検出時の処理
セキュリティの設定ON(OFFにできません)
管理用テンプレートON(OFFにできません)
ソフトウェアインストールOFF
スクリプトOFF
フォルダリダイレクトOFF
Internet Explorer のメンテナンスOFF

しかし、「低速回線」が検出されるかどうかは前述したように帯域幅を元に算出されるため、場合によっては低速回線が検出されたりされなかったりという事象が発生する可能性もあります。また今回のようなケースでICMPのフィルタリングがポリシー上解除できないケースもあると思います。

こうした場合に確実にポリシーを適用したい場合は、低速回線の検出を無効にするか、もしくは必要なポリシーについて低速回線検出時も処理を行うように設定した方がよいでしょう。検出を無効にするにはグループポリシーにある「グループ ポリシーの低速リンクの検出(図1)」ポリシーを構成します。


図1: 「グループポリシーの低速リンクの検出」の設定

ポリシー毎に制御を行う場合は、図2のように各ポリシーの「低速回線接続からの処理を許可する」をチェックしてください。


図2: 「低速回線接続からの処理を許可する」設定
上記は、ソフトウェアのインストールポリシーの処理」の例

参考情報

注記・補足

  1. 本文書は、日経 Windowsプロ 2003 年 5 月号の「トラブル解決 Q&A コーナー」に掲載された「LAN環境なのにログオン時に低速回線で接続していると判断される」の草稿を筆者の方で HTML 化して掲載しているものです。

Copyright (C) 1998-2009 TAKAHASHI, Motonobu
Last update: 2003-06-28 14:32:34 JST
webmaster@monyo.com