Windows Server 2012 R2 の PDC エミュレーターで、Microsemi(GPS/NTP)装置を冗長な同期先として設定したいのに、GPO「Configure Windows NTP Client」の NtpServer 書式でつまずくケースは少なくありません。この記事では、複数 IP の正しい書き方と、レジストリ・w32tm を使った確実な確認方法まで、運用目線で整理します。
結論:NtpServer は「スペース(空白)区切り」。カンマは「IP(ホスト名)とフラグ」の区切り
GPO の「Configure Windows NTP Client」で指定する NtpServer は、複数サーバーをスペース(空白)で区切って並べるのが正解です。
カンマ(,)は「サーバー名(または IP)」と「フラグ(例:0x8)」を分けるために使います。つまり、サーバー同士をカンマで区切るものではありません。
| 目的 | 例 | 判定 | ポイント |
|---|---|---|---|
| 複数の NTP を指定(推奨) | 192.0.2.10,0x8 192.0.2.11,0x8 | OK | サーバー同士はスペース区切り |
| カンマでサーバー同士を区切る | 192.0.2.10,0x8,192.0.2.11,0x8 | NG | 解析に失敗したり、意図した動作になりにくい |
| フラグなしで並べる | 192.0.2.10 192.0.2.11 | 非推奨 | 明示的にフラグを付けた方がトラブルが減る |
Microsemi 装置の冗長構成(2台以上)を Windows の同期先として登録したいなら、まずは 「スペース区切り + フラグ付き」で統一すると運用が安定します。
前提:Active Directory の時刻同期は「ドメイン階層(NT5DS)」が基本
Windows ドメイン環境では、通常クライアント(メンバーサーバー/PC)は外部 NTP を見に行きません。基本の考え方は次の通りです。
- PDC エミュレーター(PDC Emulator):外部(Microsemi 等)に同期させる「根っこ」
- その他のドメインコントローラー(DC):PDC エミュレーターから時刻を受け取る
- ドメイン参加クライアント:DC(ドメイン階層)から時刻を受け取る(
Type=NT5DS)
このため、クライアント側で w32tm を見たときに「Microsemi の IP が出ない」こと自体は、異常ではなく仕様どおりであるケースが多いです。クライアントが NT5DS のまま動作しており、PDC エミュレーターが外部同期に成功していれば、結果的にクライアントも正しい時刻を DC 経由で受け取れます。
| 対象 | 理想的な同期元 | クライアントで見える「同期元」 | よくある誤解 |
|---|---|---|---|
| PDC エミュレーター | Microsemi(GPS/NTP)装置 | Microsemi の IP / FQDN | 複数台書いたのに 1台しか使われないのでは? |
| 他の DC | PDC エミュレーター | PDC エミュレーターのホスト名 | DC も外部 NTP を見ないと不安 |
| ドメイン参加クライアント | DC(ドメイン階層) | 最寄りの DC | Microsemi の IP が表示されない=失敗 |
GPO で「PDC エミュレーターだけ」に外部 NTP(Microsemi)を設定する実務手順
PDC エミュレーターを特定する
まず「どの DC が PDC エミュレーターか」を確実に把握します。定番は次のどちらかです。
netdom query fsmo
または、Active Directory モジュールが使えるなら PowerShell でも確認できます。
Get-ADDomain | Select-Object PDCEmulator
PDC エミュレーターが分からないまま GPO を DC 全体に適用すると、全 DC が外部 NTP を見に行く構成になり、設計意図(階層同期)から外れやすくなります。
GPO の適用範囲を「PDC エミュレーターだけ」に絞る
おすすめは、GPO を Domain Controllers OU にリンクしつつ、セキュリティ フィルタリングで PDC だけに適用する方法です。
- 例:セキュリティ グループ
PDC-TimeSourceを作成し、PDC エミュレーターのコンピューター アカウントだけを加入させる - GPO の「セキュリティ フィルタリング」をそのグループに限定する
この方式の利点は、将来 PDC エミュレーターの役割が別 DC に移っても、グループ メンバーを入れ替えるだけで追従できる点です(OU の構造をいじらずに済みます)。
GPO の設定箇所:「Windows Time Service」→「Time Providers」
設定パスは次のとおりです。
- コンピューターの構成
- ポリシー
- 管理用テンプレート
- システム
- Windows Time Service
- Time Providers
ここで主に触るのは 「Configure Windows NTP Client」です。
| 項目 | 推奨値(例) | 意図 | 補足 |
|---|---|---|---|
| Configure Windows NTP Client | 有効 | GPO で NTP クライアント設定を強制 | ここが無効だと反映されない |
| NtpServer | 192.0.2.10,0x8 192.0.2.11,0x8 | Microsemi を冗長な同期先として登録 | スペース区切りが重要 |
| Type | NTP | PDC を「手動指定(外部)」で同期させる | クライアントや他 DC は通常 NT5DS のまま |
| Enable Windows NTP Client | 有効 | NTP クライアント自体を有効化 | 環境によっては既に有効 |
この時点で、GPO の「NtpServer」欄に入力すべき形が明確になります。Microsemi が複数台あるなら、台数分をスペースで連結するだけです。
NtpServer の書式をもう一段だけ理解しておく(運用で差が出るポイント)
サーバーは「スペース」で並べる
Windows Time サービスが読む NtpServer 文字列は、概ね次の構造です。
<peer1>,<flags> <peer2>,<flags> <peer3>,<flags> ...
<peer>:IP アドレスまたはホスト名<flags>:0xで始まるビットフラグ
ここで「スペース」がピアの区切りで、カンマがフラグ指定の区切りです。区切りの役割が違うので、混ぜると意図が崩れます。
よく使うフラグ(0x8 / 0x9 など)
フラグはビットマスクで、複数の意味を合成できます。現場でよく出るものを、運用で迷わない範囲に絞ってまとめます。
| フラグ | 意味(ざっくり) | 使いどころ | 例 |
|---|---|---|---|
0x8 | クライアント モードで問い合わせ | 外部 NTP を「同期先」として扱いたい | 192.0.2.10,0x8 |
0x1 | SpecialPollInterval を使う(固定間隔寄り) | ポーリング間隔を明示的に管理したい | 192.0.2.10,0x1 |
0x9 | 0x8 + 0x1(合成) | クライアントモード + 特別ポーリングを両立したい | 192.0.2.10,0x9 |
Microsemi 装置を同期先にするだけなら、まずは 0x8 で始めるのが分かりやすいです。もし「監査要件で 3600 秒ごとに取りたい」など間隔を固定したい意図があるなら、0x9 を使い、併せて SpecialPollInterval を GPO で管理する、といった設計にすると説明責任を果たしやすくなります。
「反映されたか?」はレジストリ単体で判断しない。w32tm を主軸にする
GPO を使うと、設定は「ポリシー用のレジストリ領域」に書かれ、実際の動作は Windows Time サービスがポリシーを読み込んで決まります。そのため、よくある落とし穴が次のパターンです。
- ポリシー側(Policies)には入っているのに、Parameters 側だけ見て「入ってない」と判断してしまう
- 逆に、Parameters は古い値のままでも、実際は GPO が優先されて動いている
だからこそ、確認は w32tm の出力を軸にするのが確実です。
確認観点と「見る場所」の対応表
| 確認したいこと | おすすめの確認手段 | 補足 |
|---|---|---|
| GPO が効いているか(NtpServer / Type が期待どおりか) | w32tm /query /configuration | 「(Policy)」と出ればポリシー由来 |
| 複数の同期先が登録されているか | w32tm /query /peers | 候補が一覧で出る |
| 今この瞬間、どれと同期しているか | w32tm /query /source | 1つだけ表示されるのが普通 |
| 状態(Stratum、最終同期、オフセットなど) | w32tm /query /status | 同期できているかの一次判断に便利 |
| レジストリでポリシー値を直接見たい | HKLM\SOFTWARE\Policies\Microsoft\W32Time\... | 「ポリシーが入っている」確認 |
| 従来の設定値(ローカル設定)を見たい | HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters | ローカル設定の確認(GPO が優先されることに注意) |
w32tm での具体的な確認手順(PDC/DC/クライアントで見え方が違う)
PDC エミュレーターでやること(外部 NTP が見えているか)
まずは GPO の反映を促して、サービスを再読み込みさせます。運用ポリシーに合わせて実施してください。
gpupdate /force
必要に応じて Windows Time サービスを再起動します。
net stop w32time
net start w32time
同期を明示的に要求します。
w32tm /resync /rediscover
次に、設定が期待どおりか確認します(最重要)。
w32tm /query /configuration
ここで見るポイントは次の 2つです。
- NtpServer に Microsemi の IP がスペース区切りで並んでいる
- Type が NTP(手動同期)になっている
同期先候補の一覧も確認します。
w32tm /query /peers
最後に「いま同期している相手」を見ます。
w32tm /query /source
ここは 1つしか表示されないのが普通です。複数の Microsemi を指定していても、「現在の同期元」はその時点で選ばれた 1台になります。冗長化は「候補を複数持つ」「切替できる」ことに価値があり、常に全台へ同時同期するわけではありません。
他の DC/クライアントでやること(NT5DS が正常か)
他の DC やクライアントでは、同期元が Microsemi ではなく「ドメイン」になっているのが自然です。確認は次で十分です。
w32tm /query /source
w32tm /query /status
/source に DC 名が出て、/status で同期が継続しているなら、PDC → DC → クライアントという階層が機能している可能性が高いです。
「レジストリに反映されるべき?」への実務的な答え
質問として多いのが、「GPO で設定したのだから HKLM\SYSTEM\CurrentControlSet\Services\W32Time\Parameters にも同じ値が入るはずでは?」という点です。
実務的には、次のように整理すると混乱が減ります。
- GPO の値は主に Policies 側に入る(=「ポリシーとしての意図」)
- 実際の動作の正解は w32tm の出力(=「サービスが読み込んだ結果」)
- Parameters 側は「ローカル設定」の領域で、GPO 運用では必ずしもここだけを見て判断できない
つまり、レジストリの一箇所だけを“正”と決め打ちしないのがポイントです。最終的に時刻同期は「動いているか」がすべてなので、w32tm /query /configuration と w32tm /query /source の両方で整合が取れているかを見ます。
よくあるつまずきと対処(Microsemi 複数指定の現場で多い)
カンマ区切りでサーバーを並べてしまう
「複数だからカンマで列挙」と思いがちですが、Windows の NtpServer はそうではありません。サーバー間はスペースで直してください。
Type が NT5DS のままで、外部 NTP を見に行っていない
PDC エミュレーターに外部 NTP を持たせたいのに、Type=NT5DS のままだと、ドメイン階層を優先して外部同期が効かない(または期待どおりにならない)ことがあります。
GPO の「Configure Windows NTP Client」で Type=NTP を明示し、w32tm /query /configuration で (Policy) になっているか確認します。
UDP 123 が通っていない(ファイアウォール/ACL/経路)
Microsemi 装置が別セグメントにある場合、ルーティングや ACL で UDP 123 が落ちていることがあります。疎通の一次確認には stripchart が便利です。
w32tm /stripchart /computer:192.0.2.10 /samples:5 /dataonly
w32tm /stripchart /computer:192.0.2.11 /samples:5 /dataonly
応答が返り、オフセットが大きく暴れないなら「通信は成立している」可能性が上がります。
仮想環境の時刻同期機能が上書きする
PDC エミュレーターが仮想マシンの場合、Hyper-V や VMware の「ホストとゲストの時刻同期」が意図せず効いていると、外部 NTP と競合して挙動が不安定に見えることがあります。時刻同期の責務をどこに持たせるか(ホスト側か、ゲスト OS の NTP か)を設計として決め、混在を避けるのがコツです。
GPO が PDC に当たっていない(スコープ/権限/フィルタ)
セキュリティ フィルタリングで PDC だけを対象にした場合、次を重点的に確認します。
- 対象グループに PDC のコンピューター アカウントが入っているか
- GPO の「読み取り」と「適用」が許可されているか
gpresultで該当 GPO が適用済みになっているか
gpresult /h C:\Temp\gpresult.html
運用のコツ:複数 Microsemi 指定を“意味のある冗長化”にする
複数の NTP サーバーを指定したとき、Windows は常に全台と同時に同期するわけではありません。だからこそ、次のような運用観点を入れると「複数指定した意味」が出ます。
- 監視は「source が切り替わること」を前提にする(片系メンテナンス時でも同期が継続するのが理想)
- 時刻差の監視(オフセットが一定以上ならアラート)
- Microsemi 側の状態(GPS 捕捉/Stratum など)も合わせて見る
特に PDC エミュレーターはドメイン全体の時刻の根になるため、同期が止まってもすぐに気付ける体制(イベントログ監視、定期的な w32tm /query /status 取得など)を作ると安心です。
まとめ(この手順で迷いが消える)
- GPO「Configure Windows NTP Client」の
NtpServerは、複数サーバーをスペース区切りで指定する - カンマは「サーバー」と「フラグ(0x8 など)」の区切り。サーバー同士の区切りではない
- 確認はレジストリの一箇所に依存せず、
w32tm /query /configurationを主軸にする - クライアントは通常
NT5DSでドメイン階層同期。Microsemi の IP がクライアントで見えなくても正常なことが多い

コメント