【Windows】NTPコマンド(時刻同期系コマンド)【w32tm】

Windows の時刻同期は、Windows Time サービスにより行われています。

Windows Time サービスは、ネットワーク タイム プロトコル (NTP) を使用して、ローカル コンピュータの時刻をネットワーク上のほかのコンピュータと自動的に同期するシステムを提供します。

NTP は、時計を同期させるインターネット時刻プロトコルです。

Windows Time サービスの設定等で利用するコマンドが「w32tm」コマンドです。

 

 

 

w32tmコマンドとは?

w32tm コマンドは、Windows Time サービスで利用できる便利なコマンドで以下の操作が可能です。

 

 

 

Windowsの時刻同期の基本

Windows には「ハードウェアクロック」「システムクロック」があります。

 

●ハードウェアクロック(RTC)

マザーボード上のチップに存在し、RTC(リアルタイムクロック, Real Time Clock)や CMOS クロックなどとも呼ばれます。
コンピュータの電源が落ちてもマザーボード上にあるバッテリーで時刻を進めます。

 

●システムクロック

システムクロックは OS が管理・使用する時刻です。

OS が起動する時にハードウェアクロック(RTC)から時刻を取得し、それ以後は OS 側でクロックの時刻を進めます。

OS をシャットダウンすると OS が保持している時刻は消滅します。

 

 

NTP の階層構造

NTP は下図のように階層構造になっています。

一番トップは「Stratum 0」で原子時計が正確な時刻を提供しています。

NTPの階層構造

 

今回試した環境

環境:Windows 2008 R2 Standard Edition

   Windows 2016 Datacenter Edition

 

 

 

Windowsで時刻同期が正常に出来てるか確認

Windowsで時刻同期が正常に出来てるか確認するコマンドです。

w32tm /query /status コマンド

C:\Users\test>w32tm /query /status 
閏インジケーター: 0 (警告なし) 
階層: 3 (二次参照 - (S)NTP で同期) 
精度: -6 (ティックごとに 15.625ms) 
ルート遅延: 0.0781271s 
ルート分散: 3.8758117s 
参照 ID: 0xC0A80333 (ソース IP: 192.168.3.51) 
最終正常同期時刻: 2017/10/23 18:25:05 
ソース: test1.test.com 
ポーリング間隔: 10 (1024s) 
 
C:\Users\test>

 

以下の状態を確認することができます。

 

w32tm コマンドの内容によっては権限が足りなくてエラーが出力されることもあります。

 

C:\Users\test>w32tm /query /configuration
次のエラーが発生しました。 アクセスが拒否されました。 (0x80070005)

 

C:\Users\test>

 

 

その場合はコマンドプロンプトを起動する際に「管理者として実行」を選択してコマンドを試してみます。

「スタートボタン」-「すべてのプログラム」-「アクセサリ」-「コマンドプロンプト」を選択して右クリックし「管理者として実行」を選択します。

 

 

時刻同期の設定内容を確認する

現在の Windows Time サービスの設定内容を確認するコマンドです。

C:\Windows\system32>w32tm /query /configuration

 

[構成]

EventLogFlags: 2 (ローカル)
AnnounceFlags: 10 (ローカル)
TimeJumpAuditOffset: 28800 (ローカル)
MinPollInterval: 10 (ローカル)
MaxPollInterval: 15 (ローカル)
MaxNegPhaseCorrection: 4294967295 (ローカル)
MaxPosPhaseCorrection: 4294967295 (ローカル)
MaxAllowedPhaseOffset: 300 (ローカル)

FrequencyCorrectRate: 4 (ローカル)
PollAdjustFactor: 5 (ローカル)
LargePhaseOffset: 50000000 (ローカル)
SpikeWatchPeriod: 900 (ローカル)
LocalClockDispersion: 10 (ローカル)
HoldPeriod: 5 (ローカル)
PhaseCorrectRate: 1 (ローカル)
UpdateInterval: 30000 (ローカル)

 

[タイム プロバイダー]

NtpClient (ローカル)
DllName: C:\Windows\system32\w32time.dll (ローカル)
Enabled: 1 (ローカル)
InputProvider: 1 (ローカル)
CrossSiteSyncFlags: 2 (ローカル)
AllowNonstandardModeCombinations: 1 (ローカル)
ResolvePeerBackoffMinutes: 15 (ローカル)
ResolvePeerBackoffMaxTimes: 7 (ローカル)
CompatibilityFlags: 2147483648 (ローカル)
EventLogFlags: 1 (ローカル)
LargeSampleSkew: 3 (ローカル)
SpecialPollInterval: 3600 (ローカル)
Type: AllSync (ローカル)
NtpServer: 10.0.30.228,0x9 time.windows.com,0x9 (ローカル) ← 「NtpServer」がNTPサーバーになります。

VMICTimeProvider (ローカル)
DllName: C:\Windows\System32\vmictimeprovider.dll (ローカル)
Enabled: 1 (ローカル)
InputProvider: 1 (ローカル)
NtpServer (ローカル)
DllName: C:\Windows\system32\w32time.dll (ローカル)
Enabled: 0 (ローカル)
InputProvider: 0 (ローカル)

 

C:\Windows\system32>

 

 

 

 

手動で同期するコマンド(今すぐ時刻同期をしたい)

Windows Time サービスで時刻修正されるのを待つのではなく、今すぐ手動で NTP サーバーにアクセスをして時刻同期をしたい場合があります。

その場合は「w32tm /resync」コマンドを使用します。

C:\Windows\system32>w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
コマンドは正しく完了しました。

 

C:\Windows\system32>

 

 

管理者権限がないとエラーになります。

C:\Windows\system32>w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
次のエラーが発生しました。 アクセスが拒否されました。 (0x80070005)

 

C:\Windows\system32>

 

先ほどと同じように

その場合はコマンドプロンプトを起動する際に「管理者として実行」を選択してコマンドを試してみます。

「スタートボタン」-「すべてのプログラム」-「アクセサリ」-「コマンドプロンプト」を選択して右クリックし「管理者として実行」を選択します。

 

 

NTPサーバーと通信ができているか手動で確認する

権限があってもエラーになる場合があります。

C:\Windows\system32>w32tm /resync
再同期コマンドをローカル コンピューターに送信しています
時刻データが利用できなかったため、コンピューターは同期をとり直しませんでした。

 

C:\Windows\system32>

 

その場合は、NTPサーバーと通信が出来ているかコマンドで確認することができます。

以下は例として NICT(国立研究開発法人情報通信研究機構、英語: National Institute of Information and Communications Technology) の NTP サーバーと通信ができているのか確認しています。

C:\Windows\system32>w32tm /monitor /computers:ntp.nict.jp
ntp.nict.jp[133.243.238.164:123]:
ICMP: 5ms 遅延
NTP: +0.0020197s ローカル コンピューターの時刻からのオフセット
RefID: 'NICT' [0x5443494E]
階層: 1

警告:
逆名前解決が最適な方法です。タイム パケット内の RefID フィールドは NTP 実装間で異なっており、IP アドレスを使用していない場合があるため、名前が正しくない可能性があります。

 

C:\Windows\system32>

 

※警告が出ていますが、特に問題なく通信はできてます。

 

NTPサーバー側の状態を確認する

「peers」オプションを付けることで どの NTP サーバーと同期をとっているのか、NTP サーバー側の状態はどうなっているのかを確認することができます。

C:\Users\test>w32tm /query /peers
ピア数: 1

ピア: 169.254.169.123,0x9
状態: アクティブ
残り時間: 86363.1461386s
モード: 3 (クライアント)
階層: 0 (未指定)
ピアポーリング間隔: 6 (64s)
ホストポーリング間隔: 6 (64s)

 

C:\Users\test>

 

 

 

NTPサーバーとの時刻同期の状態を確認したい

現在 NTP サーバーとの時刻同期の状態を確認したい場合は「status」オプションを付けます。

C:\Windows\system32>w32tm /query /status
閏インジケーター: 0 (警告なし)
階層: 3 (二次参照 - (S)NTP で同期)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0342712s
ルート分散: 7.7784039s
参照 ID: 0x0A0A32E4 (ソース IP: 10.0.40.227)
最終正常同期時刻: 2017/10/23 18:46:09
ソース: 10.0.40.227,0x9
ポーリング間隔: 10 (1024s)

 

C:\Windows\system32>

 

 

 

「verbose」オプションを付けると更に詳細な情報を取得することができます。

C:\Windows\system32>w32tm /query /status /verbose
閏インジケーター: 0 (警告なし)
階層: 3 (二次参照 - (S)NTP で同期)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0342712s
ルート分散: 7.7784039s
参照 ID: 0x0A0A32E4 (ソース IP: 10.0.40.227)
最終正常同期時刻: 2017/10/23 18:46:09
ソース: 10.0.40.227,0x9
ポーリング間隔: 10 (1024s)

フェーズ オフセット: -0.0721413s
クロック レート: 0.0156251s
State Machine: 1 (保留)
タイム ソース フラグ: 0 (なし)
サーバーのロール: 0 (なし)
最終同期エラー: 0 (コマンドは正しく完了しました。)
最終正常同期時刻からの時間: 63.6156344s

 

C:\Windows\system32>

 

 

 

トラブルシューティング

以下、各トラブルシューティング方法です。

 

うまく時刻を取得できていない場合

エラーが表示され、うまく時刻を取得できていない場合です。

w32tm /query /status コマンドを実行して現在の状態を確認します。

C:\Users\test>w32tm /query /status /verbose
閏インジケーター: 3 (最後の 1 分間は 61 秒)
階層: 0 (未指定)
精度: -6 (ティックごとに 15.625ms)
ルート遅延: 0.0009031s
ルート分散: 4.4208036s
参照 ID: 0x00000000 (未指定)
最終正常同期時刻: 2018/09/06 20:29:56
ソース: 169.254.169.123,0x9
ポーリング間隔: 6 (64s)

フェーズ オフセット: -2.6193657s
クロック レート: 0.0156266s
State Machine: 0 (設定解除)
タイム ソース フラグ: 0 (なし)
サーバーのロール: 0 (なし)
最終同期エラー: 1 (時刻データが利用できなかったため、コンピューターは同期をとり直しませんでした。)
最終正常同期時刻からの時間: 52620.5624066s

 

C:\Users\test>

 

 

現在どの NTP サーバーを参照しているのか確認します。

C:\Windows\system32>w32tm /query /source
10.0.100.100,0x9

 

C:\Windows\system32>

 

必要なら現在時刻を確認します。

C:\Users\test>echo %date% %time%
2012/09/19 15:21:16.48

 

C:\Users\test>echo %date% %time%
2018/09/07 11:09:41.76

 

C:\Users\test>echo %date% %time%
2018/09/07 11:09:58.09

 

C:\Users\test>

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人