PCの時刻を正確に合わせる3通りの設定方法

スポンサーリンク
スポンサーリンク

PCの時刻を正確に合わせる際、Windowsのデフォルトでは、時計を合わせる基準となる時刻サーバの指定が1つしかできず、また時刻を合わせるタイミングが1週間に一度と長くなっています。
また指定できるサーバが1つの場合、下記のようにエラーも時々発生し、時計がずれやすいようです。
そこで、時刻同期を行う間隔の変更方法も含めて、3通りの設定方法を紹介します。

2016.6.25追記
この記事での「w32tmコマンドでの設定」を手軽にできるコマンドを用意しました。
PCの時刻同期の設定を行うコマンド(バッチファイル)用意しました パソコン鳥のブログ
2016.6.25追記 ここまで

画像

なお、NTPサーバを自前で設定する場合は下記を参照して下さい。

NTPサーバの設定 パソコン鳥のブログ

NTPサーバの選択

PCの時刻を合わせる際の、基準となるサーバを決める必要があります。
ここで選択したサーバを後ほど、設定します。

Windows のデフォルトでは time.windows.com が選択されていますが、PCからネットワーク的に近いサーバが良いです。

これは Network Time Protocol – Wikipedia の 通信遅延時間の計測 の箇所の記述の通り、NTPサーバと上位NTPサーバの間に、ネットワークの遅延で往復に差がある場合、その差の2分の1が誤差となります。
なので、遅延が往復で差がなるべく無いように、ネットワーク的に安定した近くのサーバを選ぶ方が良いです。

自宅などで、自分の利用しているプロバイダーのNTPサーバを選びます。
下記の「プロバイダー別」の所を参照して下さい。

NTP/プロバイダ・機関別 – wiki@nothing

自宅以外の、会社などでのプロバイダー以外の環境の場合は、下記から選択が良いと思います。

NTP/推奨公開サーバ – wiki@nothing

設定方法

3通りの設定「[日付と時刻の設定] ダイアログ ボックスでの設定」「グループポリシーエディタでの設定」「w32tmコマンドでの設定」を紹介します。
設定では、サーバの設定方法、時刻同期を行う間隔の指定方法も説明します。

[日付と時刻の設定] ダイアログ ボックスでの設定

Windows のデフォルトでは、この方法です。
後述の「グループポリシーエディタでの設定」が行われている場合は、そちらの設定が優先されます。
また、後述の「w32tmコマンドでの設定」での設定が行われている場合は、ここでの設定を再度行うことで、「[日付と時刻の設定] ダイアログ ボックスでの設定」での設定の方が有効になります。

サーバの設定方法

1つのサーバのみ指定できます。
下記ページの「インターネット時刻サーバー」と同期する方法」を参照して下さい。
手順「4」で、先の手順「NTPサーバの選択」で選択したサーバを入力して下さい。

[FAQ番号:010812]コンピューターの時計を合わせる(Windows Vista / Windows 7 / Windows 8 / Windows 8.1)|FAQ Search|エプソンダイレクト

時刻同期を行う間隔の指定方法

デフォルトでは1週間に一度です。
間隔の変更は、レジストリで下記値を設定します。単位は秒です。

キー HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient
値 SpecialPollInterval

設定は、下記ページの手順「4」の「インターネット時刻設定」画面で「今すぐ更新」ボタンを押すと反映されます。

[FAQ番号:010812]コンピューターの時計を合わせる(Windows Vista / Windows 7 / Windows 8 / Windows 8.1)|FAQ Search|エプソンダイレクト

グループポリシーエディタでの設定

ローカルグループポリシーエディターを起動します。
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サーバ(タイムサーバ)を取得(同期)してみる | ロケッこがゆく

コメント

  1. awgs Foundry より:

    Windows 7 のイベントビューアに記録されたエラーに対処してみました
    2015-10-03
    NTP 同期処理確認方法について追加
    2015-10-01
    イベントビューア エラーログリスト追加更新、一部追加修正
    2015-05-18
    一部修正
    2015-03-24
    タグ修正・一部ページ内配置修正・その他いろいろ修正
    2015-02-28
    一部修正
    2015-02-26
    一部修正
    20…

タイトルとURLをコピーしました