現在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のように一部の処理を行なわない仕様になっています。
ポリシーの種類 | 低速回線検出時の処理 |
---|---|
セキュリティの設定 | ON(OFFにできません) |
管理用テンプレート | ON(OFFにできません) |
ソフトウェアインストール | OFF |
スクリプト | OFF |
フォルダリダイレクト | OFF |
Internet Explorer のメンテナンス | OFF |
しかし、「低速回線」が検出されるかどうかは前述したように帯域幅を元に算出されるため、場合によっては低速回線が検出されたりされなかったりという事象が発生する可能性もあります。また今回のようなケースでICMPのフィルタリングがポリシー上解除できないケースもあると思います。
こうした場合に確実にポリシーを適用したい場合は、低速回線の検出を無効にするか、もしくは必要なポリシーについて低速回線検出時も処理を行うように設定した方がよいでしょう。検出を無効にするにはグループポリシーにある「グループ ポリシーの低速リンクの検出(図1)」ポリシーを構成します。
ポリシー毎に制御を行う場合は、図2のように各ポリシーの「低速回線接続からの処理を許可する」をチェックしてください。