Windows Time サービスを使用した 時刻同期に必要なネットワーク通信について

皆様、こんにちは。Windows プラットフォーム サポート担当の藤田です。

今回は Windows Time サービスを使用した 時刻同期に必要なネットワーク通信についてご説明します。

 

Windows Time サービスを使用して時刻同期するためには、必ず UDP 123 番ポートを使用します。

 

通常、Windows Time サービスによる NTP プロトコルの時刻同期には、送信元ポート番号、宛先ポート番号の双方とも、UDP 123 番ポートを使用します。

よって、必ず Windows Time サービスが UDP 123 番ポート をバインドしなければなりません。

 

バインドできてるか否か確認する方法は以下の通りです。

Windows
Time サービスが起動しているにもかかわらず、あれ?と思ったら、以下のコマンドを実行して、確認してみてください。

 

netstat -aonb

 

// 実行結果の例 (こちらは、弊社の検証環境で確認した結果です。あくまでも参考としてご利用いただければと存じます。

//139 はPID を示しています。PID はプロセス起動毎に変更されますのでご留意いただければと存じます。

 

<IPv4>

---------------------------------------------------------------------------

UDP   
0.0.0.0:123           *:*                                   139

W32Time
[svchost.exe]

---------------------------------------------------------------------------

 

<IPv6>

---------------------------------------------------------------------------

UDP   
[::]:123              *:*                                   139

W32Time
[svchost.exe]

---------------------------------------------------------------------------

 

バインドに失敗していた場合、上記のようなログは表示されません。

つまり、上記のログが確認できれば OK です。

 

 

では、バインドできなかったときはどうしたらよいのでしょうか?

対処法は主に以下の 3 つです。

1. Windows Time サービスの再起動

2. w32tm /resync /rediscover

3. KB2493006 の適用 (Windows Vista/7/2008/2008R2)

 

=========================================

1. Windows Time サービスの再起動

=========================================

Windows Time サービスを再起動していただくことで、UDP 123 番ポートをバインドしなおします。

よって、現象が解消する可能性があります。

 

コマンドを使用して、Windows Time サービスを再起動することもできます。

-サービス再起動コマンド

net stop w32time

net start w32time

 

 

=========================================

2. W32tm /resync /rediscover

=========================================

/rediscoverオプションはネットワーク構成を再検出し、ネットワーク ソース (今回は UDP 123 番ポート) を再発見してから、バインドし、時刻同期させるコマンドです。

つまり、時刻同期先の設定を探してから時刻同期を実行しますので、現象が解消する可能性があります。

 

 

=========================================

3. KB2493006 の適用 (Windows Vista/7/2008/2008R2)

=========================================

KB2493006 の問題は、例えば Windows Time サービス起動時にネットワーク通信ができない状態にあるなど、特定の条件下で必ず発生する問題ではありません。

OS の内部動作の非常に小さなタイミングのずれによって発生する不具合であり、どのような状態であっても、Windows Time サービスの起動時に稀に発生し得る現象となります。

 

KB2493006では、Windows Time サービスによって正しく UDP のポート 123 番がバインドできず、その後時刻同期が行われない現象についてご案内しております。

KB2493006 の問題に合致する際、UDP のポート 123 番が正しくバインドできない原因は、Windows Time サービスの起動時の処理に関連しています。

 

Windows Server 2008 以降の OS では、Windows Time サービス起動時の動作は以下のようになります。

[1] UDP のポート 123 番ポートがバインドされます (動作①とします)

[2] その後レジストリ設定やネットワーク設定などを読み取ります。

[3] 一度 UDP のポート 123 番を Close します。 (動作②とします)

[4] 改めて UDP のポート 123 番をバインドし直します。 (動作③とします)

 

通常この動作が問題となることはございませんが、動作②の後、動作③を実施する際に、まだ UDP のポート 123 番の Close 処理が完了していない場合には、動作③が失敗します。

その後 UDP のポート 123 番の Close が完了し、Windows Time サービスは UDP のポート 123 番をバインドしていない状態で稼働することとなり、NTP パケットが送受信できず、時刻同期ができない状態となります。

 

この修正モジュールを適用していただくと、UDP 123 番ポートのバインドに失敗することは回避できますので、ぜひ、ご検討ください。

 

- 参考情報

Windows Server 2008 または Windows Server 2008 R2 で W32Time サービスが正常に開始されますが、時間の同期は実行されません。

https://support.microsoft.com/kb/2493006/ja

 

 

 

この問題も、先日の記事にあります、KB2638243 の問題と同じくらいお問い合わせが多い問題です。

Windows Time サービスが起動しているのに、時刻同期できていないときにはこのあたり、確認してみてください。

 

 

-------------------------------------------

補足

-------------------------------------------

ちなみに、以下のようなログが表示された時も、Windows Time サービスは UDP 123 番ポートは正しくバインドできていません。

この場合、Windows Time サービス以外が UDP 123 番をバインドしています。

 

// 実行結果の例 (こちらは、弊社の検証環境で確認した結果です。あくまでも参考としてご利用いただければと存じます。

// 515 はPID を示しています。PID はプロセス起動毎に変更されますのでご留意いただければと存じます。

 

<IPv4>

---------------------------------------------------------------------------

UDP   
0.0.0.0:123           *:*                                   515

ABC.exe

---------------------------------------------------------------------------

 

<IPv6>

---------------------------------------------------------------------------

UDP   
[::]:123              *:*                                   515

ABC.exe

---------------------------------------------------------------------------

 

この場合は、ABC.exe  を停止し、Windows Time サービスが UDP 123 番ポートをバインドするようにしていただくほかありません。

対応している OS :

Windows Vista / Windows Server 2008

Windows 7 / Windows Server 2008 R2

Windows8 / Windows Server 2012 / Windows Server 2012 R2