時刻同期が必須となった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サーバとしては利用できない)。
Windows XP以降では、コントロール・パネルの[日付と時刻]管理ツールを起動すると[インターネット時刻]タブが存在する(ドメインに参加したマシンには存在しない)。
参照先のデフォルトは「time.windows.com」というサーバになっており、インターネットに接続された環境であれば、すでに時刻同期が行われた旨のメッセージが表示されているはずである。もし、同期ができなかったという場合はメッセージの内容に応じて対応する必要がある。
この場合は、相手先NTPサーバから必要な応答がなかったことを意味する。サーバに対してpingなどで生存確認ができてもNTPサーバとして機能していない、あるいは混雑しすぎている可能性が考えられる。対策としては、時間をおいてアクセスするか、ほかのNTPサーバを設定するしか方法はない。NTPサーバを自組織で管理している場合は、サーバがして正しく動作しているかを確かめる必要がある。
これは、NTP サーバとクライアント間で時刻がずれすぎているため、同期が行えなかったことを意味する。対策としては、クライアント・コンピュータの時間を現在の時刻に大まかに合わせておけばよい。場合によっては、コンピュータのバックアップ用電池の状態を確認し、必要ならば交換するなどの対策が必要である(バックアップ電池が消耗していると、電源オフ時に内蔵時計が停止してしまうことがある)。なおデフォルトでは、NTPサーバとクライアント・コンピュータの時刻が15時間以上ずれている場合にこのエラーが発生する。しかしレジストリ値の設定により、同期間隔を変更したり、ずれの量を無視して強制的に同期させたりすることも可能である。
この場合は、相手先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デバッグ・ログとは、Windows Timeサービス上での時刻同期の状況が詳細に記録されたログのことである(サービス名はWindows Timeサービスであるが、ログにはW32Timeという名称で記録される)。本来はトラブル時に利用されるもので、解析にはNTPプロトコルに関する知識が必要である。初期設定ではw32timeデバッグ・ログは記録されないため、設定にはレジストリ値を追加する必要がある。設定方法については、まずは以下を参照願いたい。
これについては、第2回で解説する。
Copyright© Digital Advantage Corp. All Rights Reserved.