PCの時刻を正確に合わせる際、Windowsのデフォルトでは、時計を合わせる基準となる時刻サーバの指定が1つしかできず、また時刻を合わせるタイミングが1週間に一度と長くなっています。
また指定できるサーバが1つの場合、下記のようにエラーも時々発生し、時計がずれやすいようです。
そこで、時刻同期を行う間隔の変更方法も含めて、3通りの設定方法を紹介します。
2016.6.25追記
この記事での「w32tmコマンドでの設定」を手軽にできるコマンドを用意しました。
PCの時刻同期の設定を行うコマンド(バッチファイル)用意しました パソコン鳥のブログ
2016.6.25追記 ここまで
なお、NTPサーバを自前で設定する場合は下記を参照して下さい。
NTPサーバの選択
PCの時刻を合わせる際の、基準となるサーバを決める必要があります。
ここで選択したサーバを後ほど、設定します。
Windows のデフォルトでは time.windows.com が選択されていますが、PCからネットワーク的に近いサーバが良いです。
これは Network Time Protocol – Wikipedia の 通信遅延時間の計測 の箇所の記述の通り、NTPサーバと上位NTPサーバの間に、ネットワークの遅延で往復に差がある場合、その差の2分の1が誤差となります。
なので、遅延が往復で差がなるべく無いように、ネットワーク的に安定した近くのサーバを選ぶ方が良いです。
自宅などで、自分の利用しているプロバイダーのNTPサーバを選びます。
下記の「プロバイダー別」の所を参照して下さい。
自宅以外の、会社などでのプロバイダー以外の環境の場合は、下記から選択が良いと思います。
設定方法
3通りの設定「[日付と時刻の設定] ダイアログ ボックスでの設定」「グループポリシーエディタでの設定」「w32tmコマンドでの設定」を紹介します。
設定では、サーバの設定方法、時刻同期を行う間隔の指定方法も説明します。
[日付と時刻の設定] ダイアログ ボックスでの設定
Windows のデフォルトでは、この方法です。
後述の「グループポリシーエディタでの設定」が行われている場合は、そちらの設定が優先されます。
また、後述の「w32tmコマンドでの設定」での設定が行われている場合は、ここでの設定を再度行うことで、「[日付と時刻の設定] ダイアログ ボックスでの設定」での設定の方が有効になります。
サーバの設定方法
1つのサーバのみ指定できます。
下記ページの「インターネット時刻サーバー」と同期する方法」を参照して下さい。
手順「4」で、先の手順「NTPサーバの選択」で選択したサーバを入力して下さい。
時刻同期を行う間隔の指定方法
デフォルトでは1週間に一度です。
間隔の変更は、レジストリで下記値を設定します。単位は秒です。
キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient 値 SpecialPollInterval
設定は、下記ページの手順「4」の「インターネット時刻設定」画面で「今すぐ更新」ボタンを押すと反映されます。
グループポリシーエディタでの設定
ローカルグループポリシーエディターを起動します。
Windowsキー(田キー)+Rキーを押し、「gpedit.msc」と入力してOKボタンを押すと立ち上がります。
ローカルグループポリシーエディターの画面で、コンピュータの構成 -> 管理用テンプレート -> システム -> Windowsタイムサービス -> タイムプロバイダー とたどります。
画面右側の「Windows NTP クライアントを構成する」をダブルクリックします。
現れた画面で「有効」を指定します。
サーバの設定方法
NtpServerの箇所で「サーバ名,0x09」の形式で指定します。
複数指定する場合は、「ntp1.jst.mfeed.ad.jp,0x9 ntp2.jst.mfeed.ad.jp,0x9」のように、スペース区切りで指定します。
サーバを複数指定した場合は、システムによって、最適なものが時刻同期先に自動的に設定されます。
また、種類 の箇所で NTP を選択します。
時刻同期を行う間隔の指定方法
デフォルトは1時間に一度です。
SpecialPollInterval の値を、秒単位で指定します。
Windows Time サービスの開始
グループポリシーエディタでの設定内容で、時刻同期が動作するには、Windows Time サービスが開始していることが必要です。
Windows Time サービスをシステム起動時から開始するには、次の設定を行います。
Windowsキー(田キー)+Rキーを押し、「cmd」と入力してOKボタンを押し、コマンドプロンプトを立ち上げます。
「sc config w32time start= delayed-auto」と入力し、ENTERキーを押します。
start= の直後が半角スペースに注意して下さい。
下記のように SUCCESS と表示されることを確認します。
>sc config w32time start= delayed-auto [SC] ChangeServiceConfig SUCCESS
システム再起動後から Windows Time サービスは開始されます。
動作の確認
指定したサーバの確認はコマンドプロンプト上で「w32tm /query /peers」を実行します。
もし「次のエラーが発生しました。 そのサービスを開始できませんでした。」と表示された場合は、先の「Windows Time サービスの開始」にて、Windows Time サービスを開始して下さい。
例えばグループポリシーエディタで、NtpServerの箇所で複数サーバを指定していた場合は、次のように複数表示されます。
>w32tm /query /peers ピア数: 3 ピア: ntp2.jst.mfeed.ad.jp 状態: アクティブ 残り時間: 981.4390000s モード: 3 (クライアント) 階層: 2 (二次参照 - (S)NTP で同期) ピアポーリング間隔: 17 (有効範囲外) ホストポーリング間隔: 10 (1024s) ピア: ntp1.jst.mfeed.ad.jp 状態: アクティブ 残り時間: 981.4390000s モード: 3 (クライアント) 階層: 2 (二次参照 - (S)NTP で同期) ピアポーリング間隔: 17 (有効範囲外) ホストポーリング間隔: 10 (1024s) ピア: ntp3.jst.mfeed.ad.jp,0x8 状態: アクティブ 残り時間: 981.4390000s モード: 3 (クライアント) 階層: 2 (二次参照 - (S)NTP で同期) ピアポーリング間隔: 17 (有効範囲外) ホストポーリング間隔: 10 (1024s)
どのサーバが時刻同期先になっているかの確認は「w32tm /query /source」を実行します。
>w32tm /query /source ntp2.jst.mfeed.ad.jp
本設定を無効にする場合
ローカルグループポリシーエディターの画面で、コンピュータの構成 -> 管理用テンプレート -> システム -> Windowsタイムサービス -> タイムプロバイダー とたどります。
画面右側で「Windows NTP クライアントを構成する」をダブルクリックし、現れた画面で「無効」を指定します。
w32tmコマンドでの設定
Windowsキー(田キー)+Rキーを押し、「cmd」と入力してOKボタンを押し、コマンドプロンプトを立ち上げます。
下記書式で設定します。
サーバは、「サーバ名,0x09」の形式で指定します。
複数指定する場合は、「ntp1.jst.mfeed.ad.jp,0x9 ntp2.jst.mfeed.ad.jp,0x9」のように、スペース区切りで指定します。
サーバを複数指定した場合は、システムによって、最適なものが時刻同期先に自動的に設定されます。
w32tm /config /manualpeerlist:"サーバ" /syncfromflags:MANUAL /update
例えば次のように設定します。
w32tm /config /manualpeerlist:"ntp1.jst.mfeed.ad.jp,0x9 ntp2.jst.mfeed.ad.jp,0x9 ntp3.jst.mfeed.ad.jp,0x9" /syncfromflags:MANUAL /update
時刻同期を行う間隔の指定方法
デフォルトでは1週間に一度です。
間隔の変更は、レジストリで下記値を設定します。単位は秒です。
キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient 値 SpecialPollInterval
なお、設定はシステム再起動時に反映されます。
(正確には Windows Time サービスの再起動で反映されます)
Windows Time サービスの開始
w32tmコマンドでの設定で、時刻同期が動作するには、Windows Time サービスが開始していることが必要です。
Windows Time サービスを開始するには、本記事の「グループポリシーエディタでの設定」のWindows Time サービスの開始 を参照して下さい。
動作の確認
本記事の「グループポリシーエディタでの設定」の動作の確認 を参照して下さい。
設定の優先度
3通りの設定「[日付と時刻の設定] ダイアログ ボックスでの設定」「グループポリシーエディタでの設定」「w32tmコマンドでの設定」を紹介しました。
設定を複数行った場合ですが、試してみた限りですが次のようになります。
「グループポリシーエディタでの設定」がされている場合は、サーバや時刻同期を行う間隔の設定も含め、この設定が最優先されます。
「グループポリシーエディタでの設定」がされていない場合は、「[日付と時刻の設定] ダイアログ ボックスでの設定」「w32tmコマンドでの設定」で後に実行した方が適用されます。
但し、「グループポリシーエディタでの設定」「w32tmコマンドでの設定」では、Windows Time サービスが開始していることが必要です。
開始していない場合、「[日付と時刻の設定] ダイアログ ボックスでの設定」で動作します。
参考
Windows Time サービスにおける時刻同期の仕組み
Windows時刻をインターネット同期できない! – マイクロソフト コミュニティ
Windowsの時刻同期でエラーになるのをなんとかしてみる « サーバーワークス エンジニアブログ
defactory Windows7 ntpでの自動時刻合わせ
Windows7(クライアント) から windows 2008 R2 serverの NTPサーバ(タイムサーバ)を取得(同期)してみる | ロケッこがゆく
コメント
Windows 7 のイベントビューアに記録されたエラーに対処してみました
2015-10-03
NTP 同期処理確認方法について追加
2015-10-01
イベントビューア エラーログリスト追加更新、一部追加修正
2015-05-18
一部修正
2015-03-24
タグ修正・一部ページ内配置修正・その他いろいろ修正
2015-02-28
一部修正
2015-02-26
一部修正
20…