WindowsサーバNTPクライアント設定/確認コマンドまとめ

# 概要

- WindowsサーバにおけるNTPの状況確認や設定変更・確認は基本「w32tm」コマンドを使用する。
- 実際のNTP設定はレジストリに保管されている。その為設定値の確認・変更はレジストリエディタでも可能。
- NTPはサービス「W32Time」により提供されている。設定変更時はサービス再起動が必要。

# 状況確認

NTPがうまくいっていない時など、現在のNTP同期状況を確認する時に使用。

| 用途 | コマンド | 備考 |
|:--|:--|:--|
| Windows タイム サービスの状態を表示  | w32tm /query /status  |   |
| ピアの一覧とそれらの状態の詳細情報を表示  | w32tm /query /peers /verbose  |   |
| 現在の参照先を確認  | w32tm /query /source  | /statusで事足りる  |
| 任意のNTPサーバとの通信を確認  | w32tm /monitor /computers:ntp.nict.jp  | IPアドレスも指定可  |
| 任意のNTPサーバとのズレを継続的に確認 | w32tm /stripchart /computer:ntp.nict.jp | IPアドレスも指定可  |

# 設定確認

w32tmコマンドで確認する方法とレジストリ値を直接参照する方法がある。

#### w32tmコマンドで確認

```w32tm /query /configuration
```
#### レジストリ値を参照

| 設定項目| コマンド |
|:--|:--|
| NTPサーバー  | reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Parameters" /v "NtpServer" |
| 同期タイプ | reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Parameters" /v "Type" |

# 設定変更

w32tmコマンドで変更する方法とレジストリ値を直接変更する方法がある。

#### w32tmコマンドで変更

| 設定項目 | コマンド |
|:--|:--|
| NTPサーバー | w32tm /config /manualpeerlist:ntp.nict.jp,0x8  |
| 同期タイプ  | w32tm /config /syncfromflags:ALL |

#### レジストリ値を更新

| 設定項目 | コマンド |
|:--|:--|
| NTPサーバー | reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Parameters" /v "NtpServer" /t REG_SZ /d  "ntp.nict.jp,0x8" |
| 同期タイプ  | reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\Parameters" /v "Type" /t REG_SZ /d AllSync |

#### NTPサーバーの後ろで指定する同期モードについて（0x8の部分）

- 時刻同期先のNTPサーバーを設定・指定する時にNTPサーバーの後ろに付ける0x8や0x9は時刻同期するモードを意味する。NTPクライアントとして設定する場合は「0x8」が無難。
- ドメイン環境でADサーバ＋外部NTPサーバの構成としたい場合は「0x2」を指定し、さらに同期タイプを「AllSync」に設定。

| 設定 | 同期モード | 説明 |
|:--|:--|:--|
| 0x0 | Symmetric Active/Passive Mode | Windows端末同士を含む標準的なNTP時刻同期方法 |
| 0x1 | Special Interval | Windows上のみ実装された定間隔での同期方法 |
| 0x2 | Use As Fallback Only | ドメインおよび外部の両方から時刻を同期する方法 |
| 0x4 | Symmetric Active | 明示的なSymmetric Active/Passive Modeによる同期方法。NTPサーバー同士のピアで使われる時刻同期モード。 |
| 0x8 | ClientモードでのNTP要求 | 明示的なClient/Server Modeによる同期方法 |

#### 同期タイプについて

- ドメイン環境ではNT5DSがデフォルトとなる。
- w32tmコマンドで変更する場合はそれぞれのタイプに対応するコマンドを実行。
- レジストリを更新する場合は同期タイプ名をそのまま指定。（NT5DS、NTP等）

| 同期タイプ | 説明 | コマンド |
|:--|:--|:--|
| NT5DS   | ドメインの階層と同期  | w32tm /config /syncfromflags:DOMHIER  |
| NTP   | 手動で構成されたソースと同期 | w32tm /config /syncfromflags:MANUAL  |
| NoSync  | 時刻の同期を行わない  | w32tm /config /syncfromflags:NO  |
| AllSync  | ドメインと手動で構成されたソースと同期  | w32tm /config /syncfromflags:ALL  |

# NTPサービス停止・起動

設定変更した後はサービス再起動が必要。

| 操作 | コマンド |
|:--|:--|
| サービス停止 | net stop w32time  |
| サービス起動 | net start w32time |


# 設定変更後の手動同期

設定変更・再起動後に手動同期を実行して正常に動作する事を確認する。
うまく同期先が切り替わらない時には rediscover オプションをつけてみる。

| 操作 | コマンド |
|:--|:--|
| 時刻同期を手動で実行 | w32tm /resync |
| 参照先NTPサーバーのサンプルをリセットして時刻同期を実行 | w32tm /resync /rediscover |

# 参考ページ
[puti se blog | Windowsで時刻同期が正常に出来てるか確認する方法。w32tmコマンド](https://blog.putise.com/windows%E3%81%A7%E6%99%82%E5%88%BB%E5%90%8C%E6%9C%9F%E3%81%8C%E6%AD%A3%E5%B8%B8%E3%81%AB%E5%87%BA%E6%9D%A5%E3%81%A6%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%80%82w32t/)
[PROJECT GROUP | 時刻同期の処理が正常に実行されているか確認する方法](https://www.projectgroup.info/tips/Windows/cmd_0007.html)
[MURA's HomePage | ドメインの時刻をNICTのNTPと同期させる](https://www.vwnet.jp/windows/WS08R2/NTP/w32time.html)