Windows パソコンの時刻同期について


伝えたいこと

  • Windowsパソコンの時刻同期の基本はNTP
  • LTE接続できるWindowsパソコンでは、携帯電話と同じ仕組みで時刻同期が行われる。
  • 時間がずれる原因は、NTPとボタン電池だけじゃないので気を付けて。

条件

  • Windows 10 1809以降
  • LTEモデム内蔵もしくは、USBドングルタイプのLTEモデム接続にて、LTE等のネットワーク接続があること(モバイルルータへのWi-Fi接続は含まれません)

用語説明

  • NITZ (Network Identity and Time Zone )携帯電話が自動で時刻同期が行われる仕組み。3GPPにより策定された仕様。3Gだけでなく、4G(LTE)携帯でも使われている。

課題

  • Active Directory環境下の端末でもActive Directoryサーバ以外の時刻に同期されてしまう
  • LAN/Wi-Fi接続外で大きく時間がずれる場合がある。(モデムの精度か、ファームウェアの不具合か不明)
  • イベントログの記載が、NTPによる同期なのかNITZによる同期なのか区別がつかない
  • 海外では現地時刻になる

気づいた事象

職場外でLTE接続して使っていると時間が20分とか40分とか巻き戻った。時間が補正されるタイミングはまちまち。LTE接続を利用しているとき。頻度は多数。しかし、ずれたまま使い続けていると正しくなることもある。

調査方法

イベントログにてMicrosoft-Windows-Kernel-General/ID:1 のログから、時刻補正された修正前の時刻、後の時刻を抽出。CSVファイルにして時間が戻ったタイミングの差が大きくないことを確認する。LAN/Wi-Fiを切ってLTEをつないだ状態のイベントログを調査する。Powershellで次の長い一文を実行してメモ帳にコピペ。Excelで計算させる。

> Get-WinEvent  @{ProviderName="Microsoft-Windows-Kernel-General";id="1"}|foreach {$_.TimeCreated.toString() + "," + $_.Message.substring(9,34) + "," + $_.Message.subString(48,34) + "," + $_.Message.subString($_.Message.indexof("変更の理由")+7,$_.Message.indexof("プロセス") - $_.Message.indexOf("変更の理由")-9)}

テキスト変換

抽出されたテキストをExcelで扱いたい場合は下の3つをメモ帳で行うと扱いやすくなる。
* 文字コードをUTF-8から、Shift-JISへ変換して保存。
* "?-?"(ハイフン)を"/"に置換。大文字Tを半角スペースに置換。大文字Zを消す。
* タイトル行を一行目に追加 TimeCreated,BeforeDateTime,AfterDateTime,reasonとした。

判断の仕方

  • 変更の理由(reason)の部分が、"System time synchronized with the hardware clock。"となっている場合は、パソコンの内蔵時計から補正したもの。
  • 変更の理由(reason)が、"An application or system component changed the time。"となっている場合は、NTPによる時刻同期か、NITZによる時刻同期か区別がつかない。
  • W32Timeのレジストリ変更してNTP同期の詳細ログを取ることで、それ以外はNITZだと判断できるようになる。 レジストリ変更は面倒なので、Wi-Fi/LANをつなげなければNTP同期されないため簡単に区別可能。
  • AfterDateTime<BeforeDateTimeの場合だけ計算するとわかりやすい。
  • 上記の差が5秒以上だった場合の頻度が多かったり、ずれる時間が大きかったりした場合はLTEモデムの入れ替えを検討する。

残った課題

  • キャリアが原因でなっているのか、3GPPの仕様が問題なのか、時刻を合わせる手順に問題があって一時的にずれているのかわからない。
  • ADサーバの時刻とずれる可能性は残る。ADサーバをNICTに合わせることで多少ましになると期待している。

参考情報

以上