山口屋~活動日誌~

私生活で主な出来事をピックアップ

Windows 時刻同期 NTP

2020-07-23 23:10:36 | パソコン
WindowsでNTPによる時刻同期を、バッチを作成して何回も実行しても期待通りに合わないことがあり、調べてみたところどうやら工夫が必要らしい。

<1>
IPアドレスが付与された時にWindows Time サービスを自動起動/自動停止するようにトリガをセットするため、管理者権限にて下記のコマンドを実行する。
sc triggerinfo w32time start/networkon stop/networkoff

<2>
同期モードと同期間隔を指定するため、下記のレジストリを編集する。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\NtpServer の第2パラメータに 0x8 を指定。
値の意味は下記の通り。
0x1:Symmetric Activeモードで同期/Windowsで実装した一定間隔での同期
0x2:Symmetric Activeモードで同期/フォールバック時に利用するNTPサーバを指定
0x4:Symmetric Activeモードで同期/RFC1305に準拠した間隔での同期
0x8:Clientモードで同期/RFC1305に準拠した間隔での同期
各ビットがフラグとなっており、例えば
0x9:Clientモードで同期/Windowsで実装した一定間隔での同期
また、
0x0、値なし:(0x4と同じ)
なお、
[日付と時刻]→[インターネット時刻]タブ→[設定の変更]→[今すぐ更新] とすると、Windowsで実装した一定間隔での同期のフラグがセットされる。

<3>
修正を行うサイクル時間(どのくらいの時間間隔でクロックの修正を行うか)を指定する。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\UpdateInterval に 100(0x64) を指定。
値の意味は下記の通り。値が小さいほど短い間隔で修正動作が繰り返される。
360,000(0x57e40)(ワークグループ)、30,000(0x7530)(ドメイン・メンバ)、100(0x64)(ドメイン・コントローラ)

<4>
NTPサーバから受け取った時刻サンプルに対してシステム時刻を修正する速度を制御する。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\PhaseCorrectRate に 7 を指定。
値の意味は下記の通り。値が小さいとゆっくり修正し、値が大きいと素早く修正する。
1(ドメイン・コントローラを除く)、7(ドメイン・コントローラのみ)

<参考1>
NTPサーバーへの問い合わせ間隔について、RFC1305に準拠した間隔での同期を行う場合、間隔は2の累乗で延びていく。最小間隔と最大間隔は下記のレジストリで調整できる。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MinPollInterval
値は秒数の2の対数。4(16秒)未満の値は指定できない。
既定値は10(0xA)(ドメイン・コントローラを除く)、6(0x6)(ドメイン・コントローラのみ)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxPollInterval
値は秒数の2の対数。15(32768秒)を超える大きな値は指定できない。
既定値は:15(0xF)(ドメイン・コントローラを除く)、10(0xA)(ドメイン・コントローラのみ、Windows Server 2016 以降)
NICTのサーバーでは、1時間平均で20回(1日の合計が480回)を超えないように求められている。

<参考2>
NTPサーバーへの問い合わせ間隔について、一定間隔での同期間隔を行う場合、間隔は下記のレジストリで調整できる。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval
既定値は、604,800(0x93a80)(=1週間)(ワークグループ環境)、3600(0x00e10)(=1時間)(ドメイン環境)。
Windows 10 ビルド1703 から MinPollInterval および MaxPollInterval の構成に含まれ、32768(0x8000)(=2^15)の場合もある。

<参考3>
時刻の修正は、ゆるやかに修正されるslewモード、直ちに修正されるstepモード、両方がある。
slewモードで同期を行う最大の時刻差は下記のレジストリで概ね(※)調整できる。
(※UpdateInterval、PhaseCorrectRateの値も影響し、ドメイン・コントローラはstepモードになりやすい)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxAllowedPhaseOffset
既定値は1。

<参考4>
ローカルクロックの周波数を修正する速度を制御する下記のレジストリもある。値を小さくするとゆっくり修正され、値を大きくすると頻繁に修正される。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\FrequencyCorrectRate
既定値は4。

<出典>
Windows サポート:Windows 7 / Windows Server 2008 R2 以降のスタンドアロン環境で Windows Time サービスが自動的に起動しない
@IT:Windowsネットワーク時刻同期の基礎とノウハウ(改訂版) 第2回 Active Directoryおよびワークグループ環境での時刻同期 (2/5)
@IT:Windowsネットワーク時刻同期の基礎とノウハウ(改訂版) 第3回 w32tmコマンドとレジストリによるWindows Timeサービスの制御 (4/4)
NICT:日本標準時(JST)グループ
Microsoft Docs:Windows タイム サービス - Slew モードと Step モード
Microsoft Docs:Windows タイム サービスのツールと設定
@IT:Windowsネットワーク時刻同期の基礎とノウハウ 第1回 Windows OSにおける時刻同期サービスとNTP (3/4)
Microsoft Docs:Windows タイム サービス - 高精度を確保するためのシステム構成

コメント    この記事についてブログを書く
  • Twitterでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« スマホで運転!ダブルカメラ... | トップ | Android マウス USB Type-C H... »
最新の画像もっと見る

コメントを投稿

パソコン」カテゴリの最新記事