Active Directory構成のWindows XPを外部の時刻サーバーと同期させたい

対象プラットフォーム

質問

Windows XP Professional を利用しています。当初ワークグループ構成で利用していた時には、「日付と時刻のプロパティ」の「インターネット時刻」タブで、図1のようにNTPサーバと時刻を同期させる設定を行なっていましたが、社内のActive Directoryドメインに参加を行なったところ、図2のようにこのタブがなくなってしまい、時刻の同期ができなくなってしまいました。
これはどうしてでしょうか?またどのようにすれば、時刻の同期ができるのでしょうか?


図1: ワークグループ構成時に表示される「インターネット時刻」タブ


図2: ドメインに参加すると、「インターネット時刻」タブが表示されなくなる

回答

まず、Active Directoryドメインに参加すると「インターネット時刻」タブがなくなってしまうのは、Windows XP Professionalの仕様になっています。Active Directoryで利用されるKerberos認証を機能させる上では、クライアントとドメインコントーラと時刻が同期していることが必須条件になっているため、ドメインに参加した時点で、自動的にドメインコントローラ上のSNTPサーバと時刻の同期を行なうように設定が変更されてしまうためです。

しかし、Active Directoryを構成していてもどうしても外部の時刻サーバと時刻の同期を行ないたいという場合もあると思います。この場合は、w32tmコマンドを利用してレジストリの修正を行なってください。外部のntpサーバと時刻を同期させるためには、以下のようにしてコマンドを実行する必要があります。

C:\> w32tm /config /syncfromflags:MANUAL /manualpeerlist:<ntpサーバのホスト名やIPアドレス>

ただし、筆者が確認した限り、上記のように設定を行なうと時刻同期の間隔が1024秒毎に行なわれるよう、自動的に調整されてしまいます。

HKLM\SYSTEM\CurrentControlSet\Services\W32Time\NtpClient 以下の SpecialPollInterval レジストリによる時刻同期間隔の設定を有効にしたい場合は、/manualpeerlist オプションの引数として、

C:\> w32tm (その他のオプション) /manualpeerlist:<ntpサーバのホスト名>,0x1

のように記述を行なって下さい。これでワークグループ構成の時と同様、上記レジストリによる秒単位での時刻同期間隔の調整が有効になります。
また、ドメインコントローラと同期させる設定に戻すには、以下のようにします。

C:\> w32tm /config /syncfromflags:DOMHIER

これらのコマンドにより、HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters 以下にある各種レジストリが修正されます。その他関連する情報として「JP307897: [HOW TO] Windows タイム サービスによる時刻の同期」を参照して下さい。

ここで紹介した以外にもw32tmコマンドにはさまざまな機能があります。オプションなしでコマンドを実行することで、ヘルプが表示されるので、興味がある方は一度機能を確認してみてください。
なお、筆者が確認した限り、

C:\> w32tm /config /syncfromflags:DOMHIER,MANUAL

のように、両方のオプションを指定することで、外部のNTPサーバとドメインコントローラの両方と時刻同期を行なうことも可能なことを確認しましたが、両方のタイムソースの値が大きく異なっていた場合などの動作が不明なため、安易に利用しないことを強く推奨します。

参考情報

注記・補足

  1. 本文書は、日経 Windowsプロ 2002 年 7 月号の「トラブル解決 Q&A コーナー」に掲載された「Active Directory構成のWindows XPを外部の時刻サーバーと同期させたい」の草稿を筆者の方で HTML 化して掲載しているものです。

未整理の点

  1. 疑問点1
    /syncfromflags:DOMHIER,MANUAL と両方を指定することで外部とドメインコントローラの両方をタイムソースとすることができるが、両方の時間が大きく異なっていた場合の挙動が未確認である。
  2. 疑問点2
    疑問点1のように設定すると、Type 欄が NT5DS ではなく、 AllSync となる。なお Workgroup → NT4domain → AD の順にマシンの設定を変更した場合、Type 欄は AllSync のままになっているようである。この挙動は不具合ではないかと考えているが、未確認である。
  3. 疑問点3
    確認した限り、/syncfromflags:DOMHIER とすると、1024秒 間隔で同期が行なわれている。これは送出する NTPデータグラム中で NTP プロトコルの Poll 欄が 0xA になっていて、2^10 = 1024 であるためではないかと思うが、確認できていない。
    技術情報中では、最終的に 8 時間間隔で行なわれるようになるという記載もあるが、これは Windows 2000 を対象にしているもののため、Windows XP では異なっている可能性もある。
  4. 疑問点4
    NtpServer に、<サーバ名>,0x1 と記述することで、SpecialPollInterval の値が有効になる。ワークグループ構成の場合やNTドメイン構成の場合に現れるインターネット時刻タブで、設定したサーバ名は、レジストリ上では常に ,0x1 が付加された形で格納されるため、SpecialPollInterval が有効になる。またここでサーバの設定を更新する度に、SpecialPollInterval の値は自動的に 1週間に再設定される。 なお、net time コマンドや w32tm コマンドで普通にサーバ名を設定すると、NtpServer レジストリの値に ,0x1 はつかないため、不用意にコマンドラインから設定を行なうと同期間隔が急に短くなってしまうなどの弊害がある。
    このあたりの挙動はどこにも説明がない。
  5. 疑問点5
    SpecialPollTimeRemaining レジストリの値が設定によって変化しているが詳細不明。何らかのワークエリアと思われる。
  6. 疑問点6
    SpecialPollInterval 自体に関する記載がMSの技術情報中に全くない。
  7. 疑問点7
    Windows XPの W32TIME の実装では、最初に ntp サーバに対して送信する ntp データグラム中では、本来3か4であるべきプロトコルのバージョンフィールド(VN)の値が1 になっている。これはSNTPについて定義しているrfc1769中の
    5. SNTP Client Operations
    
      ...
    
        A unicast client initializes the SNTP message header, sends the
       message to the server and strips the time of day from the reply. For
       this purpose all of the message-header fields shown above are set to
       0, except the first octet. In this octet the LI field is set to 0 (no
       warning) and the Mode field is set to 3 (client). The VN field must
       agree with the software version of the NTP or SNTP server; however,
       NTP Version 3 (RFC-1305) servers will also accept Version 2 (RFC-
       1119) and Version 1 (RFC-1059) messages, while NTP Version 2 servers
       will also accept NTP Version 1 messages. Version 0 (RFC-959) messages
       are no longer supported. Since there are NTP servers of all three
       versions interoperating in the Internet of today, it is recommended
                                                         ~~~~~~~~~~~~~~~~~
       that the VN field be set to 1.
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     
    
    という記載にのっとったものだと考えられるが、これのため、NTPクライアントによっては、うまく時刻の同期ができないという事象が発生するようである。

Copyright (C) 1998-2009 TAKAHASHI, Motonobu
Last update: 2002-11-03 23:59:48 JST
webmaster@monyo.com