第2回 Active Directoryおよびワークグループ環境での時刻同期Windowsネットワーク時刻同期の基礎とノウハウ(改訂版)(2/5 ページ)

» 2012年05月17日 05時00分 公開
[小鮒通成マイクロソフトMVP]

Active Directory環境で、PDCエミュレータを権威ある時刻サーバに設定する

 Windows Server 2003 R2以前のWindows OSと同じく、Active Directoryでは「フォレスト・ルート・ドメインのPDCエミュレータ」が権威ある時刻サーバとして設定されていさえすれば、Active Directory全体の時刻同期機能は正常に動作する。そのため、PDCエミュレータ(における時刻同期)の設定状態は必ず確認しなければならない。

●外部NTPサーバから時刻を同期する方法

 PDCエミュレータが外部NTPサーバから時刻を同期するには、例えば以下のコマンドを実行すればよいだろう(「ntp.nict.jp」と同期したい場合)。w32tm /configコマンドはWindows Timeサービスの設定変更を行うオプションであり、/updateオプションを付ければ、Windows Timeサービスを再起動しなくてもレジストリ情報が読み込まれる。ただし、この後紹介する、時刻が同期できているかを確認するw32tm /queryコマンドに正常に反映されないことがあるため、Windows Timeサービスを再起動してリフレッシュすることをお勧めする。なお、以前のWindows OSで利用できたnet time /setsntpコマンドは、Windows Server 2008 R2では利用できない点には注意してほしい。

w32tm /config /update /manualpeerlist:ntp.nict.jp,0x9 /syncfromflags:manual /reliable:YES



実行例 実行例

 先ほど紹介した、マイクロソフトのサポート技術情報「Windows Server で権限のあるタイム サーバーを構成する方法」では、レジストリ値を直接変更する方法が紹介されているが、この方法に添って、w32tm /configコマンドとの関係を絡めて説明してみよう。

●時刻サーバとしてアドバタイズするかの設定

項目 内容
キー HKEY_LOCAL_MACHINEの
SYSTEM\CurrentControlSet\services\W32Time\Config
値の名前 AnnounceFlags
REG_DWORD
0x5
時刻サーバとしてアドバタイズするかどうかなどを設定するレジストリ

 これは「時刻サーバとしてアドバタイズ(公開)するかどうか」「時刻サーバとして権限があるかどうか」を決定するレジストリ値であり、w32tm /config /reliableオプションでは「YESは0x5」「NOは0xa」と設定される。4bitで構成され、bitごとに以下のような意味を持っているが、0x5であれば「(状況に関係なく)権限のある*1時刻サーバとして公開する」ことを意味する。

*1 「権限のある」とは「authoritative」の訳であり、本来ならば「権威のある」とすべきものであるが、サポート技術情報などの訳語に合わせてここでは「権限のある」と表記している。


意味
全bitが0(0) 時刻サーバとして公開しない
1bit目が1(1) 時刻サーバとして公開する
2bit目が1(2) 他のマシンとの兼ね合いで、時刻サーバとなるか決定される
3bit目が1(4) 権限があるサーバとして公開される
4bit目が1(8) 他のマシンとの兼ね合いで、権限があるサーバとなるか決定される
AnnounceFlagsレジストリ値の意味
bit位置は、最下位bitが1bit目、その隣が2bit目、……、と数える。

●NTPの同期をどこから行うかの設定

項目 内容
キー HKEY_LOCAL_MACHINEの
SYSTEM\CurrentControlSet\services\W32Time\Parameters
値の名前 Type
REG_SZ
NTP
NTPの同期ソースを設定するレジストリ

 これは「NTPの同期をどのマシンから行うか」を決定するレジストリ値であり、w32tm /config /syncfromflagsオプションで設定される。次の4つの種類がある。

意味
NoSync 同期を行わない(/syncfromflags:no)
NTP NtpServerレジストリ値(次の表参照)で指定したサーバから同期を行う(/syncfromflags:manual)
NT5DS ドメイン階層により決定されたサーバから同期を行う(/syncfromflags:domhier)
AllSync ドメイン階層と外部NTPサーバの両方から同期を行う(/syncfromflags:all)
Typeレジストリ値の意味

項目 内容
キー HKEY_LOCAL_MACHINEの
SYSTEM\CurrentControlSet\services\W32Time\Parameters
値の名前 NtpServer
REG_SZ
<NTPサーバ名>,<同期モードのパラメータ>
参照先サーバと同期モードを設定するレジストリ

 「参照先のNTPサーバ」を指定する第1パラメータと、「同期モードと同期の間隔」を指定する第2パラメータの2つで構成され、w32 /config /manualpeerlistコマンドで設定される。複数のサーバを記載する場合は、半角スペースで区切ったうえ、全体を「" "」(ダブル・クォーテーション)で囲む必要がある。

 このレジストリ値の第2パラメータでは、同期モードと同期間隔を同時に設定できる。以下のような意味を持っており、組み合わせて使うことができる。例えば0x9の場合、「Clientモードで、かつ一定の間隔で同期する」ことを意味する。ちなみに0x0または値なしの場合は0x4と同様の動作をする。

意味
0x1 Symmetric Activeモードで同期/Windowsで実装した一定間隔での同期
0x2 Symmetric Activeモードで同期/フォールバック時に利用するNTPサーバを指定
0x4 Symmetric Activeモードで同期/RFC1305に準拠した間隔での同期
0x8 Clientモードで同期/RFC1305に準拠した間隔での同期
同期モードのパラメータの意味
4bitの値を組み合わせて(加算、もしくはORして)指定する。

●同期間隔の設定

項目 内容
キー HKEY_LOCAL_MACHINEの
SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpClient
値の名前 SpecialPollInterval
REG_DWORD
<秒数>
同期間隔を設定するレジストリ

 SpecialPollIntervalには、「Windowsで実装した一定間隔での同期」を行う際の同期間隔を設定する(NtpServerレジストリ値の第2パラメータを0x1か0x9にした場合)。w32tmコマンドでは設定できないので、レジストリ・エディタで直接設定する必要がある。ドメイン環境では(10進法で)3600秒(=1時間)が設定されているのでそのままでも問題はないが、必要があれば変更したうえ、Windows Timeサービスを再起動する。ワークグループの場合は、デフォルトの間隔が長すぎるので、適切な設定が必要である(詳細は後述)。

 なお、「RFC1305に準拠した間隔での同期」を利用(NtpServerレジストリ値の第2パラメータを0x1か0x9以外に)する場合は、上述したように64秒→128秒→256秒→512秒→……、というふうに、徐々に同期間隔が延びていくが、最小間隔と最大間隔をレジストリ値で調整できる。

項目 内容
キー HKEY_LOCAL_MACHINEの
SYSTEM\CurrentControlSet\services\W32Time\Config
値の名前 MinPollInterval(最小間隔)
REG_DWORD
<秒数の2の対数>
例えば64秒の場合、64=2^6(2の6乗)なので、6を指定する
4(16秒)未満の値は指定できない
値の名前 MaxPollInterval(最大間隔)
REG_DWORD
<秒数の2の対数>
例えば1024秒の場合、1024=2^10(2の10乗)なので、10(0xa)を指定する
15(32768秒)を超える大きな値は指定できない
同期の最小と最大間隔を設定するレジストリ

 上記以外の注意点として、同期モードは、外部NTPサーバに対しては「Clientモード」が適切であり「Symmetric Activeモード」はあまり適切でない(不要なPeer同期に関する情報が送られてしまうため)といったこともあり、利用するパラメータ値は「0x9」(一定間隔の同期)か「0x8」(RFC1305に準拠した同期)のどちらかを使うとよいだろう。

●NTPサーバの有効/無効の設定

項目 内容
キー HKEY_LOCAL_MACHINEの
SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer
値の名前 Enabled
REG_DWORD
0x1 (有効)
NTPサーバの有効/無効を設定するレジストリ

 これは「NTPサーバ機能が有効かどうか」を決定するレジストリ値だか、ドメイン・コントローラではすでに有効になっているため、基本的に気にする必要はない。ただしワークグループ環境の場合、このレジストリ値が有効になっていないとNTPサーバとして機能しない。

●内部クロックに同期させる方法

 外部NTPサーバに参照できない環境の場合、PDCエミュレータのCMOSクロックに同期させることで、自分自身をStratum 1のNTPサーバとして構成することができる。この場合、w32tm /config /updateコマンドを以下のように実行すればいいだろう。その後、Windows Timeサービスを再起動させる。

w32tm /config /update /manualpeerlist:"" /syncfromflags:manual /reliable:YES /localclockdispersion:0



実行例 実行例

 外部のNTPサーバに同期する際の設定と違う点は、以下の2点だ。

  • NtpServerレジストリ値(/manualpeerlistオプション)では、サーバ名を指定しない。自分自身を同期先に指定することは、RFC1305で許されていないので注意する。
  • LocalClockDispersionレジストリ値(/localclockdispersionオプション)に“0”を設定する。Stratum 1として設定する場合、この値が0になっていないとほかのNTPサーバから参照されたとき、ルート分散の値が大きくなりすぎて、不正確なNTPサーバと認識されてしまう。UNIX系のNTPサーバが存在する場合には注意する必要がある。ちなみにレジストリに関する情報は次の通りである。
項目 内容
キー HKEY_LOCAL_MACHINEの
SYSTEM\CurrentControlSet\services\W32Time\Config
値の名前 LocalClockDispersion
REG_DWORD
0x0 (デフォルト値は0xa)
内部クロックに同期させるためのレジストリ設定

●Active Directory環境で時刻同期ができているか確認する方法

 Windows Server 2008 R2ドメイン・コントローラやメンバ・サーバ、Windows 7クライアントが時刻同期できているか、を確認する簡単な方法は、w32tm /query /statusコマンドを実行することだ。以下のように実行することで、参照先NTPサーバはどれかや、いつ同期できたか、同期間隔はどれくらいか、などの情報が取得できる。

w32tm /query /status



実行例 実行例

 結果の各フィールドの意味は次の通りである。

項目 説明
閏インジケーター Leap Indicator(うるう秒があるかどうか/同期状態)を表す。0は正常、3は未同期
階層 自身のNTP階層を指す
参照ID Reference (Clock) IDを指す。参照先NTPサーバの情報
最終正常同期時刻 最後に同期が成功した時刻を表す
ソース 参照先NTPサーバの名前を表す
ポーリング間隔 時刻同期の間隔(2のべき乗で表した秒数)を表す(例:10→2の10乗=1024秒)
w32tm /query /statusの結果の項目と説明(一部のみ)

 最終正常同期時刻とポーリング間隔を突き合わせれば、「直近で正常に同期できているか」が確認できるが、はっきりと直近の時刻同期の成功失敗を知りたい場合は、/verboseオプションを付けて実行すると「最終同期エラー」項目で確認できる。

実行結果 実行結果

 また/computer:<コンピュータ名>オプションを付けると、別マシン上でw32tm /queryコマンドをリモート実行できる。

実行結果 実行結果

 もちろん、イベント・ログのシステム・ログに記録されるTime-Service ID 35/37から、正常に同期できているかどうかを確認することも可能である。Time-Service ID 37は「NTPサーバをポーリングしていること」を示し、Time-Service ID 35は「ポーリングした時刻情報を内部的に同期していること」を示している。ただし、このイベントは同期のたびに記録されるものではないので、w32tm /queryコマンドを使う方が直近の確認はしやすいだろう。

Time-Service ID 37の例 Time-Service ID 37の例

Time-Service ID 35の例 Time-Service ID 35の例

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。