第1回 Windows OSにおける時刻同期サービスとNTPWindowsネットワーク時刻同期の基礎とノウハウ(2/4 ページ)

» 2005年08月12日 00時00分 公開
[小鮒通成マイクロソフトMVP]

Windows上で利用する時刻同期の実装

 時刻同期が必須となったActive Directory環境に対応するため、Windows 2000以降のOSでは標準的に実装されたWindows Timeサービスが時刻同期を行う実装となっている。ちなみに各OSの時刻同期実装は以下のとおりである。

OS 時刻同期機能
Windows 9x/Me 標準はなし。サードパーティ製アプリケーションを導入する
Windows NT 4.0 標準はなし。NT 4.0リソースキットから追加導入可能
Windows 2000 Windows Timeサービス(SNTPプロトコル)
Windows XP Windows Timeサービス(NTPプロトコル)
Windows Server 2003 Windows Timeサービス(NTPプロトコル)
Windows OSごとのNTPベースでの時刻同期機能

 同じWindows Timeサービスでも、Windows 2000とWindows XP以降ではそのサポートしているプロトコルや機能が異なる(よって設定内容も異なる)ことに注意してほしい。なお、Windows NT 4.0およびWindows 9x系ではダウンレベル(過去のバージョン)となるNTLM認証が行われるため、時刻同期は必須ではない(認証に時刻情報は不要)。また、従来Windows ネットワーク・ベースでの時刻同期の仕組みとしてnet timeコマンドを使った方法が存在するが、本題ではないため割愛する。Windows 2000環境での時刻同期の方法については、関連記事のTIPSを参考にしていただきたい。

 なお、本記事ではWindow 2000の挙動の詳細については割愛するが、Windows 2000ではSNTPサーバおよびSNTPクライアントとして動作させることが可能だ。SNTPはNTPのサブセットとなっているので、参照先サーバがNTPあるいはSNTPサーバとして正常稼働していれば同期に関して問題は起こりにくい。ただし、NTP階層に組み込むような利用方法では注意が必要である(完全な機能を持つNTPサーバとしては利用できない)。

ワークグループ端末からNTPサーバに時刻を同期させる方法

 Windows XP以降では、コントロール・パネルの[日付と時刻]管理ツールを起動すると[インターネット時刻]タブが存在する(ドメインに参加したマシンには存在しない)。

日付と時刻のプロパティ
[コントロール パネル]の[日付と時刻]管理ツールを起動するか、タスク・バー上の時刻表示部分をダブルクリックすると表示されるダイアログ。時刻を同期させる先を設定することができる。
 (1)手動で時刻同期を行うには、このタブを選択する。ただしドメイン・ネットワークに参加しているクライアントの場合はこのタブは表示されず、時刻同期は自動的に行われる。
 (2)これをオンにすると、外部NTP/SNTPサーバへ問い合わせて、自動的に時刻を同期するようになる。
 (3)接続先のサーバ。デフォルトでは、time.windows.comへ接続するようになっている。
 (4)これをクリックすると、次回の同期スケジュールを待たずに、すぐにNTP/SNTPサーバへ問い合わせる。
 (5)実行結果。
 (6)次回の同期スケジュール。ワークグループ・ネットワークの場合は、1週間に1回という頻度で同期するようになっている。

時刻同期ができない場合のエラー・メッセージ

 参照先のデフォルトは「time.windows.com」というサーバになっており、インターネットに接続された環境であれば、すでに時刻同期が行われた旨のメッセージが表示されているはずである。もし、同期ができなかったという場合はメッセージの内容に応じて対応する必要がある。

時刻同期エラー:応答がない場合

時刻同期が失敗した場合のダイアログ(1)
相手のNTPサーバから必要な応答がなかった場合には、このようにエラーとなる。
 (1)同期失敗時のエラー・メッセージ。

 この場合は、相手先NTPサーバから必要な応答がなかったことを意味する。サーバに対してpingなどで生存確認ができてもNTPサーバとして機能していない、あるいは混雑しすぎている可能性が考えられる。対策としては、時間をおいてアクセスするか、ほかのNTPサーバを設定するしか方法はない。NTPサーバを自組織で管理している場合は、サーバがして正しく動作しているかを確かめる必要がある。

時刻同期エラー:時刻がずれすぎている場合

時刻同期が失敗した場合のダイアログ(2)
ローカル・コンピュータの時刻と、NTPサーバの時刻がずれすぎていても同期することはできない。
 (1)時間が大きくずれている場合のエラー・メッセージ。

 これは、NTP サーバとクライアント間で時刻がずれすぎているため、同期が行えなかったことを意味する。対策としては、クライアント・コンピュータの時間を現在の時刻に大まかに合わせておけばよい。場合によっては、コンピュータのバックアップ用電池の状態を確認し、必要ならば交換するなどの対策が必要である(バックアップ電池が消耗していると、電源オフ時に内蔵時計が停止してしまうことがある)。なおデフォルトでは、NTPサーバとクライアント・コンピュータの時刻が15時間以上ずれている場合にこのエラーが発生する。しかしレジストリ値の設定により、同期間隔を変更したり、ずれの量を無視して強制的に同期させたりすることも可能である。

時刻同期エラー:時刻情報が不正もしくは信頼できない場合

時刻同期が失敗した場合のダイアログ(3)
NTPネットワーク階層の状態が不正(不安定)になるなどして、信頼できる時刻情報が得られなかった場合のエラー・メッセージの例。
 (1)信頼できる時刻情報が得られない場合のエラー・メッセージ。

 この場合は、相手先NTPサーバが保持する時刻情報がNTPプロトコルとして「信頼に足る時刻」と認められなかったため、クライアントが時刻を同期しなかったことを意味する。NTPプロトコルでは、各NTPサーバが信頼に足る時刻を保持している必要があるため、必要に応じてNTPサーバ自身がより上位NTPサーバに時刻同期を行うことで、自身のNTP階層上の位置を確認する。この確認が成功しなかった場合、NTP階層の構造が正しくないという意味で上記のメッセージが表示される。またそのほかの原因で、信頼できる時刻情報が得られない場合にもこのようなメッセージが表示される。

エラー時の対処方法

 対策としては、基本的には、ほかのNTPサーバ(NTP階層的に正しく設定されたもの)に設定を変更することがあるが、何らかの事情で不可能な場合、[インターネット時刻]タブを利用せずに同期を設定することができる。これは次の方法で行う。

■方法1:w32tmコマンドで設定する
 コマンド・プロンプトから、以下のようにコマンドを設定する。

w32tm /config /manualpeerlist:<NTPサーバのIPアドレス>,0x8  /syncfromflags:manual
w32tm /config /update

■方法2:net timeコマンドでSNTPサーバを指定する
 コマンド・プロンプトから、以下のようにコマンドを設定する。

net time /setsntp:<NTPサーバのIPアドレス>,0x8
net stop w32time & net start w32time

■設定の確認方法
 コマンド・プロンプトから、以下のようにコマンドを実行する。

w32tm /resync

 どちらも設定内容としては同一だが、w32tmコマンドを使うと、関連するレジストリ設定なども自動的に行われる。この設定を行った後で[インターネット時刻]タブを開き、そこで[OK]や[今すぐ更新]ボタンをクリックすると、NTPサーバの設定などが変わってしまう。よって、上記のコマンドを実行した後は、[インターネット時刻]タブで設定を変更しないことが望ましい。

 これらは、NTPプロトコルでの同期に関するモード(Association Mode)を変更する設定である。通常はSymmetric Active/Passive ModeというNTP階層をチェックする方法で時刻を同期するところを、Client/Server ModeというNTP階層をチェックしない方法で同期を行うことができる。この方法については以下のサポート技術情報を参照されたい。

 Association Modeの詳細については、以下の情報を参照していただきたい。

時刻同期の実行状況を確認する方法

 Windows Server 2003やWindows XPでは、以下の3つの方法で時刻同期の状況を確認できる。

  • [インターネット時刻]タブのフォームに表示されるメッセージから確認する(詳細は上述したとおり)
  • イベント・ビューアのシステム・ログから確認する
  • w32timeデバッグ・ログから確認する

 イベント・ビューアのシステム・ログには、時刻同期が行われると以下のログが記録され、同期の状況が確認できる。

時刻の同期中のイベント(1)
NTP/SNTPサーバからデータを受信した場合のイベント。
 (1)時刻同期サービスのサービス名はW32Time。イベント・ログには、Windows Timeという名称ではなく、このW32Timeという名前でログが記録される。
 (2)問い合わせた結果、有効なデータを受信した場合のイベント。

時刻の同期中のイベント(2)
NTP/SNTPサーバから得た時刻とシステム時刻を同期しているイベント。
 (1)Windows Timeサービスがタイム・ソースから得た時刻を自身のシステム時刻と同期させる際に記録されるイベント。

 上記のログは通常は、システム起動後に、最初に時刻同期されたときに記録されるが、時刻同期のたびごとに必ず記録されるわけではない。よって、上のログだけを見て時刻同期がいつでも正常に行われていると判断することは適切でない場合があるので注意してほしい。もちろん、時刻が同期されていない状況では警告またはエラーのログが記録されるので、そういった情報から状況は確認できる。

 w32timeデバッグ・ログとは、Windows Timeサービス上での時刻同期の状況が詳細に記録されたログのことである(サービス名はWindows Timeサービスであるが、ログにはW32Timeという名称で記録される)。本来はトラブル時に利用されるもので、解析にはNTPプロトコルに関する知識が必要である。初期設定ではw32timeデバッグ・ログは記録されないため、設定にはレジストリ値を追加する必要がある。設定方法については、まずは以下を参照願いたい。

 これについては、第2回で解説する。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

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

メールマガジン登録

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