前回記事「Windows で時刻あわせ (2) w32tm (Client 側)」はこちら。
【注意と免責】
以下の内容は個人的な見解であり正しさを保証しません。正しさを必要とする場合は他のサイトの記事を参照してください。
時刻サーバーとして設定されているかどうかは、管理者権限のあるコマンドプロンプトで「w32tm /query /configuration」を実行することで確認できます。
C>w32tm /query /configuration
[構成]
----------------- (略) -----------------
[タイム プロバイダー]
NtpServer (ローカル)
DllName: C:\WINDOWS\system32\w32time.dll (ローカル)
Enabled: 1 (ポリシー)
InputProvider: 0 (ローカル)
AllowNonstandardModeCombinations: 1 (ローカル)
NtpClient (ローカル)
----------------- (略) -----------------
NtpServer ブロックの Enabled が 1 になっていれば OK です。
Enabled が 0 となっている場合は、グループポリシーの「コンピューターの構成→管理用テンプレート→システム→Windows タイムサービス→タイムプロバイダー」の「Windows NTP サーバーを有効にする」を「有効」にするか、レジストリ「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer」にある Enabled を 1 にします。
しかし場合によっては以下の設定を追加で行う必要があるかもしれません。
w32tm /config /update /reliable:yes /LocalClockDispersion:0
/reliable:yes は stratum を 0, leap indicator を 3 にしないための指定、/LocalClockDispersion:0 は分散(時刻のゆらぎ)が全くない(=0 秒)とする指定です。
ちなみに「分散」は統計的な手法で求められてはいますが variance(=標準偏差を得る前の平方根を得る前の「分散」)ではなく dispersion なので日本語に惑わされないようにしましょう。(単位も s^2 じゃないからね?)
また Windows XP 系の場合、上記オプションがないため、レジストリを直接編集します。
場所は「\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time」の中にある以下の 3 つを変更します。
- Config にある AnnounceFlags を 5 に(/reliable:yes に対応) 。LocalClockDispersion を 0 (/LocalClockDispersion:0 に対応) にします。
- TimeProviders\NtpServer にある Enabled を 1 にします。(=Ntp Server として動作)
- w32time サービスを再起動します。
net stop w32time net start w32time
この設定は、時刻サーバーと上位の時刻サーバーとの通信が切断された場合に下位の時刻クライアントが同期しなくなることを防ぐために行います。逆に言うとこの設定を行わない場合、時刻サーバーと上位の時刻サーバーとの間に通信障害が起こると、この時刻サーバーを参照している「全ての」時刻クライアントが時刻同期しなくなる可能性があります。
つまりこの設定は、時刻を参照させたい Windows の時刻が信頼に足らないものであっても「信頼性の高い時刻サーバーである」と騙らせる設定です。これにより時刻クライアントが時刻サーバーと同期しやすくなりますが、反面時刻サーバーの時刻がおかしくても時刻クライアントはそれに気づけないため、時刻同期できていない状況よりも深刻な問題を引き起こす可能性があります。したがって、この設定を採用する場合は、その点を考慮し採用が妥当かどうかを慎重に検討してください。
ooltcloud
次の記事> Windows で時刻あわせ (4) w32tm (通信の確認)
http://ooltcloud.sakura.ne.jp/blog/202007/article_25105743.html
Link | 2020年7月25日 11:46