Windows2000 での時間同期


Windows 2000 Active Directory ドメインでは、ログオン時にドメインに対して自動的にタイム サービス(サービス名:W32Time)がクラスタ構成でも実行されます。なので、Windows NT クラスタで必要だったタイムリソースサービスは不要になります。(逆にタイムリソースサービスが動いていると、CPUなどの資源が使われます。)

また、Windows 2000ドメインの標準機能として、クラスタ サービスのチェックも定期的に行われるので、この情報を利用して定期的にノード間を同期します。
但し、クラスタを構成しているノードのそれぞれが、異なるドメインの場合、それぞれのドメインに時間の同期を取るので、ノード間の時間が異なってくる可能性があります。(通常は、それぞれのノードが異なるドメインと言うことは無いと思いますが。)

Windows 2000 では、新しい時間同期サービスが使用され、Windows 2000 ベースのネットワーク上で動作しているコンピュータの日時が同期されます。デフォルトの認証プロトコル (MIT Kerberos Version 5) が、認証チケット生成プロセスの一部としてコンピュータ時刻を使用するため、Windows 2000 では時刻を同期することは重要になります。

Microsft社曰く、W32Time (Windows Time Synchronization サービス) は、SNTP に完全準拠した実装だそうです。( NTP ではない )

W32Time の動き

  1. クライアントは、認証しているドメイン コントローラにコンタクトします。 
  2. 2台のコンピュータ間の通信待ち時間を決定するために、パケットが交換されます。 
  3. W32Time は、ローカルで統一すべき現在時刻を決定します。
  4. クライアントは、ローカル時刻を調整します。 
    サーバの時刻とクライアント時刻でクライアントが遅れている時は、クライアント時刻は、サーバの時刻に即座に設定されます。(時間を進める)
    サーバの時刻とクライアント時刻でクライアントが進んでいる場合は、その差が 3 分を超えていなければ、2 つの時刻が合うまで、クライアントの時計を遅く進めます。 3 分 以上の差がある場合、時刻は即座に設定されます。 
  5. クライアントは定期的なチェックを行います。 
    クライアントは、各 "周期" に 1 回、認証しているドメイン コントローラに接続します。 
    最初のデフォルトの周期は 45 分です。 
    時刻の同期試行が 3 回連続して成功した場合は、周期は 8 時間に増えます。
    時刻の同期試行が 3 回連続して成功しない場合は、45 分にリセットされます。 

時刻統一の階層構造

すべてのクライアントは、タイム ソースとして、認証しているドメイン コントローラを選択します。このドメイン コントローラが使用できなくなった場合は、クライアントはドメイン コントローラに対する要求を再発行します。
ドメイン内のすべてのドメイン コントローラは、次の 3 つのいずれかの方法で時間を同期します。

  1. 親ドメイン内の信頼できるタイム サービス (優先)
  2. 現在のドメイン内の信頼できるタイム サービス (必須)
  3. 現在のドメインの PDC 返されたこれらの DC のいずれか 1 つがタイム ソースとして選択されます。 

フォレストのルートにある PDC の FSMO(Flexible Single Master Operation Role:Active Directoryドメイン・コントローラのうち1台だけが受け持っている特定の役割) には権限があり、外部のタイム ソース (NTPサーバ)に時間同期の設定をすることができます。但し、時間を合わせるプロトコルがSNTPの為、信頼性が足りないと思われます。

また、FSMOが外部のタイム ソースと同期していない場合、クライアントが UNIX などの NTP クライアントだと、FSMO に上位サーバと時間同期した情報が無い為、クライアント側では信頼できないとしてエラーとしてしまう場合があります。回避策としては

  1. FSMOサーバの時間同期の上位のサーバとして、自分自身を設定する。
    (実際の時間とは、ずれが生じる可能性が高い。)
  2. UNIX などのクライアント側の時間同期するサーバとし FSMO ではなく、その配下の PDC に時間同期させる。(FSMO が時間同期していないため、ドメイン全体として、UTCの時間とは、ずれが生じる可能性が高い。)
  3. UNIX などの NTP クライアント/SNTP,NTP サーバを立ち上げ、外部のタイム ソースと同期さる。FSMO はその NTP クライアント/SNTP,NTP サーバと同期させる。
    (この方法が一番よいかと思います。但し、よくても NTP サーバは Stratum 2、FSMO は Stratum 3 になってしまいますが信頼性は高いかと思われます。私は Stratum 3 のサーバを立ち上げていますが、精度の問題は発生していません。)

参考: Microsoft社 Windows Time サービスの基本処理



注意 : これは、私個人の覚え書きであり、何も保証するもではありません。自己責任でお読み下さい。  
Create:2003/03/15   Last modified:2009/10/02
Copyright (c) 2003-2013 Yoshi All Rights Reserved