WindowsのNTPの仕様 〜サーバとしての利用の注意点、クライアントの同期状態確認や設定確認〜

WindowsのNTPサービスの仕様

Windows では NTP サーバとして「W32Time Service」 というプログラムが用意されています。

Windows 8.1 および Windows Server 2012R2 までの NTP の仕様については、MS の公式サイトに結構とんでもないことが書かれていました。

https://technet.microsoft.com/ja-jp/library/cc773013(ws.10).aspx

The W32Time service is not a full-featured NTP solution that meets time-sensitive application needs and is not supported by Microsoft as such.

https://support.microsoft.com/ja-jp/help/939322/support-boundary-to-configure-the-windows-time-service-for-high-accura

W32Time サービスは、1 ~ 2 秒の範囲で同期時刻を確実に維持できません。このような許容誤差は、W32Time サービスの設計仕様に含まれていません。

Windows Active Directory では NTP が必須となっています。これは AD ドメインのクライアントがドメインコントローラに対して Kerberos 認証を行う際に、5 分以上時刻がサーバとずれていることを許容しないためです。(セッションジャックを緩和するために時間制限を設けているため。)

しかし逆に言うと 5 分未満のずれであれば許容されるということで、W32Time サービスはこの仕様を基準に作られていたようです。

ですが Windows10 および Windows Server 2016 以降は高精度の時刻同期がサポートされたようです。

https://docs.microsoft.com/ja-jp/windows-server/networking/windows-time-service/support-boundary

Windows 10 および Windows Server 2016 での時間の精度が大幅に向上し、以前のバージョンの Windows との NTP の完全な互換性が維持されています。 適切な動作条件下では、Windows 10 または Windows Server 2016 以降のリリースを実行しているシステムは、1秒、50ミリ秒 (ミリ秒)、または1ミリ秒の精度を提供できます。

Windows のクロックの取り扱い

Windows ではハードウェアクロックの時刻をそのままローカル時間として読み込むし仕様となっています。

つまり、ハードウェアクロックがUTCの状態でインストール済かつローカル時間が日本時間となっている Windows を起動すると、日本時間にも関わらず表示される時刻が UTC となるケースがあります。(主に時刻情報を VM に保存しない KVM 仮想環境)

WindowsのNTPクライアントの同期状態確認と設定確認の方法

Windows の NTP クライアントの同期状態は以下コマンドで確認できます。

> w32tm /query /status

また、Windows の NTP クライアントの設定は以下コマンドで確認できます。

> w32tm /query /configuration

IT/インフラエンジニアの地位とスキル向上のために

関連記事

IT 技術の進化はとどまることを知りません。矢継ぎ早に新たな技術が出てきたり、数年前の技術が時代遅れになったりと、IT エンジニアは勉強し続ける運命のようです。 それをどう思うかはあなた次第。 ビジネスの基本は『付加価値を与える[…]

IMG
関連記事

nesuke の考える NW エンジニアの2つの道 ネットワークエンジニアには 2 つの道があります。 1 つはネットワーク構築一筋で、L4 までをひたすらきっちりと構築していく道。 もう 1 つはネットワークを軸として深堀し[…]

IMG