最終更新日付: 2020年10月16日
Windowsで(NTPクライアントとして)NTPの設定をしたけど、
- 正常に時刻同期がされているか?
- NTPサーバーの指定は正しく設定されているのか?
を、動作確認する方法はどのような方法があるのでしょうか?
レジュメ
WindowsがNTPサーバーと時刻同期を正常に出来ているか動作確認方法
上記構成時の、Windowsでの時刻同期の正常動作確認方法になります。
環境・前提条件
- Windows Server 2008 (R2)
- Windows server 2012
こちらの記事では、上記では確認を取りました。
※追記:Windows10でも確認が取れています。
結論、w32tmコマンドで最終時刻同期時間を確認できる!正常にNTP動作確認
■ 方法1:Windows タイム サービスの状態を表示して確認
以下のコマンドをコマンドプロンプトにて実行します。
w32tm /query /status
すると、上記画像のように結果が表示され
- 最終正常同期時刻
- ソース (NTP Server)
が確認できます。この出力の「ソース」値は、実際の設定されたNTPサーバーを示していない場合がありますので、その時は次の見出し「WindowsのNTPクライアントとしてどのNTPサーバーを設定しているか確認方法」を参照してください。
■ 方法2:ピアの一覧とそれらの状態の詳細情報を表示して確認
または、以下のコマンドでも正常に時刻同期が出来たか動作確認が出来ます。こちらpeersオプションのコマンドの方が、時刻同期ソースが変わることなくNTPサーバーの値(ピア)も出ていてわかり易く間違いがないですね。
w32tm /query /peers /verbose
このpeersオプションコマンドが、statusオプションコマンドと異なるところは、同期先のNTPサーバーとの同期結果が表示されます。
- 最終正常同期時刻
前回のNTPサーバーとの同期時刻。例えばstatusオプションの場合は「最終正常同期時刻: 未指定」となっていてもpeersオプション側が表示されていたりします。 - 有効データ カウンター
Windows Timeサービスが起動してから何回NTPサーバーと同期したかのカウンター値。
参考:「次のエラーが発生しました。 そのサービスを開始できませんでした。 (0x80070426)」
もしも、上記のようなメッセージが出力されてしまった場合は、Windowsのサービス”Windows Time”サービスが起動していないので、自動起動設定をしましょう。
※ “Windows Time”サービスはWindows Server 2008からデフォルトで「手動」起動設定となっています。
C:\Users\administrator>net start "windows time"
Windows Time サービスを開始します.
Windows Time サービスは正常に開始されました。
※ Windows10の場合は、「管理者」でコマンドプロンプトを開き、net startコマンドを実行しましょう(コマンドプロンプト右クリックの「管理者として実行」)。
Windows NTPクライアントとしてどのNTPサーバーを設定しているか確認方法
以下のコマンドで、NTPクライアントの動作設定が確認できます。
w32tm /query /configuration
出力された内容の、[タイムプロバイダー]の”NtpClient”の出力のブロックを確認します。※ Windows10の場合は、「管理者」でコマンドプロンプトを開き、w32tmコマンドを実行しましょう。
“NtpClient”の中で、”NtpServer”の欄が設定されたNTPサーバーとなります。
参考:NTPサーバーの後ろに着く0x8とか0x9とは一体何の呪文?
時刻同期先のNTPサーバーを設定・指定する時に、NTPサーバーの後ろに付いている0x8とか0x9とかには、意味があります。
これはNTPクライアントとしてNTPサーバーに対し時刻同期するモードを意味します。NTPクライアントとして設定する場合は「0x8」が最も問題が起きない設定ですね。
- 0x0 (Symmetric Active/Passive Mode)
Windows端末同士を含む標準的なNTP時刻同期方法 - 0x1 (Special Interval)
Windows上のみ実装された定間隔での同期方法 - 0x2 (Use As Fallback Only)
ドメインおよび外部の両方から時刻を同期する方法 - 0x4 (Symmetric Active)
明示的なSymmetric Active/Passive Modeによる同期方法。NTPサーバー同士のピアで使われる時刻同期モード。 - 0x8 (ClientモードでのNTP要求)
明示的なClient/Server Modeによる同期方法
ちなみに「0x9」は「0x1」と「0x8」を掛け合わせたものになります。
Windows Server 2003 で Windows 以外の NTP サーバーとの同期が成功しない
参考:ドメインに参加しているサーバーは「Type」が「NT5DS」と表示
ちなみに、
ドメインに参加しているサーバーは以下のように「Type」が「NT5DS」と表示されます。
(Active Directory 2012の場合)
「Type」は、w32tmのレジストリ設定値で、コンピュータの時刻同期方法の制御に使用されます。
- Nt5DS = ドメインの階層と同期します。[デフォルト]
- NTP = 手動で構成されたソースと同期します。
- NoSync = 時刻の同期を行いません。
- AllSync = ドメインと手動で構成されたタイムソースと時刻の同期をとる
Windows タイム サービスのツールと設定 | Microsoft Docs
参考:ドメイン参加サーバー・パソコンのTypeをNT5DSに設定を戻す方法
ドメインに参加しているが、何かしらの理由でTypeがNT5DSではない状態になっている場合、もしもNT5DSに設定変更したい場合は、以下のコマンドを実行します。
w32tm /config /syncfromflags:DOMHIER
その他、Typeを変更したい場合は、以下のようになります。
Type: NTPへ変更するコマンド
w32tm /config /syncfromflags:MANUAL
Type: NT5DSへ変更するコマンド
w32tm /config /syncfromflags:DOMHIER
Type: NoSyncへ変更するコマンド
w32tm /config /syncfromflags:NO
Type: AllSyncへ変更するコマンド
w32tm /config /syncfromflags:ALL
または
w32tm /config /syncfromflags:DOMHIER,MANUAL
時刻同期タイミングを待たずに強制時刻同期する方法
もしも時刻同期の正常動作確認で、自動で時刻同期するタイミングまで待てない場合は、以下のコマンドで強制的に時刻同期を実行することが出来ます。
w32tm /resync
※「次のエラーが発生しました。 アクセスが拒否されました。 (0x80070005)」が出た場合は、コマンドプロンプトを「管理者」で実行しましょう(コマンドプロンプト右クリックの「管理者として実行」)。
ただし、この場合は、正確には自然に時刻同期が出来た正常動作確認にはなっていません(普段はWindows Timeが自動で起動しないとかもアリがちです。)。また強制的に時刻同期することにより、Windows時間がいきなり飛んで強制時刻変更しまう可能性がありますので注意してコマンド実行しましょう。