Active Directory 環境における NTP サーバーの冗長化設定

Active Directory 環境における NTP サーバーの冗長化設定

こんにちは、ひらたつです。

Active Directory 環境では、時刻同期は階層構造となり以下のように時刻が参照されます。

  • ドメインコントローラー (FSMO, Flexible Single Master Operation):外部の NTP サーバー
  • ドメインコントローラー (FSMO 以外):ドメインコントローラー (FSMO)
  • サーバー・クライアント端末:いずれかのドメインコントローラー

※ FSMO の役割の1つに PDC (Primary Domain Controller) エミュレーターがあり、この機能を持っているドメインコントローラーがドメインの中のメインの NTP サーバーとなります。
※以下では PDC エミュレーターの役割を持つドメインコントローラーを DC1、PDC エミュレーターの役割を持たないドメインコントローラーを DC2 と表記します。

DC1, 2 以外のサーバーや、クライアント端末はいずれかのドメインコントローラーを参照します。
しかし、DC2 は DC1 を参照するため、DC1 が停止すると DC2 が時刻同期できなくなり、それに伴いサーバーやクライアント端末が正しい時刻に同期できなくなります。

上記の解決策として以下が考えられます。

  • DC2 は DC1 が停止した時に外部の NTP サーバーに同期するようにしておく
  • DC2 も常に外部の NTP サーバーに同期するようにしておく

ドメインの中でプライマリーとセカンダリーの関係を明確にできる前者の構成のほうが適していると思われます。

この記事では、PDC エミュレーターが停止した時に、DC2 が外部のドメインコントローラーを参照することで NTP サーバーを冗長構成とする方法を紹介します。

想定環境

  • 2台のドメインコントローラーで Active Directory を構成している
  • FSMO のドメインコントローラーは外部 NTP サーバー ntp.sample.jp を参照している

2台目のドメインコントローラーの設定

NTP の設定項目には以下の2つがあります。

  • Type:時刻同期を行う方法を設定する
  • NtpServer:上記の TypeNTP または AllSync の時に参照される NTP サーバーを設定する

各項目の詳細については以下ご参照ください。
Windows Server 2003 で NTP 設定の Type エントリを AllSync にする方法 | MSeeeeN

この TypeNtpServer を変更することで冗長化します。

具体的には DC2 で以下コマンドを実行ください。

C:\Users\Administrator.DC2>w32tm /config /syncfromflags:ALL /manualpeerlist:ntp.sample.jp,0xa /update
C:\Users\Administrator.DC2>w32tm /resync

上記コマンドでは、以下のように設定しています。

  • TypeAllSync
  • NtpServerntp.sample.jp,0xa

TypeAllSync とすることで、ドメイン階層と外部NTPサーバーの両方から同期を行う 動作となります。また、NtpServerntp.sample.jp,0xa とすることで、フォールバック時に利用する NTP サーバーを ntp.sample.jp と設定しています。

0x2 + 0x8 = 0xa ですので、0xa を設定することで、0x20x8 を設定しています。
0x2 を設定することで、ntp.sample.jp をフォールバック時に利用する NTP サーバーとして指定できます。
0x8 を指定することで ntp.sample.jp と明示的に Client/Server Mode による時刻同期ができます。

つまり、このように設定することで以下の動作を実現できます。

  • DC2 は通常 DC1 を時刻同期先として参照する
  • 何らかの要因で DC1 を時刻同期先として参照できない場合には、NtpServer の設定値に基づき外部 NTP サーバーを参照する

この設定で、NTP サーバーを冗長構成にできます。

ご参考になれば幸いです。

hiratatsu04