Active Directory環境では、フォレスト・ルート・ドメインのPDCエミュレータ以外は、すべて自動的に最適な時刻同期環境が設定されているため、基本的に特別な調整や制御は不要である。しかし、この恩恵が受けられるコンピュータはドメインに参加しているWindows 2000以降のOSのみであり、ワークグループ構成のWindowsやLinuxコンピュータは、手動で設定を行わなければならない。
またドメインに参加しているコンピュータ間においても、例えば複数サイトが存在する環境で、サイト間の通信を明示的に制限する必要がある場合など(セキュアなルータや、DMZを介した環境で各サイトのゲートウェイに要さいホストを設置するなど)、手動で制限を行う必要があるケースは考えられる。以下、順を追って見ていこう。
Active Directory上の時刻同期はNTP階層のそれとは異なる、と第1回で述べたが、実際のところは、NTPプロトコルに則した時刻同期は行われているため、ワークグループのWindowsやLinuxコンピュータは、Active Directory環境の任意のNTPサーバ(=ドメイン・コントローラ)から時刻を同期させることができる。
Active Directory環境であっても、Windows Timeサービスは(ntpdとは異なり)時刻同期のため接続してくるほかのコンピュータを拒否することはできない。よって、簡便な方法であればネットワーク的に直近のドメイン・コントローラを参照先に指定するか、正確性を求めるのであれば(Active Directory環境で基準となっている)フォレスト・ルート・ドメインPDCエミュレータに同期を行えばよい。
ただし、PDCエミュレータが信頼に足る時刻を保持していないと、それ以外のドメイン・コントローラも含めて時刻同期が行えないため、基本的にはPDCエミュレータが外部のNTPサーバから時刻同期を行っている必要がある。閉じたネットワーク環境で利用している場合、以下のマイクロソフトの資料にある「内部のハードウェア クロックを使用するように Windows タイム サービスを構成する」方法に基づいて、権威あるサーバとして設定しておく。ntpdで同期させたいのであれば、併せて前述したLocalClockDispersionレジストリ値を0に設定しておく必要があるだろう。
Active Directory環境では、通常は、サイト内ドメイン・コントローラ間の時刻同期は、親ドメインのドメイン・コントローラが参照先NTPサーバとなって行われるが(詳細は第1回を参照)、フォレスト・ルート・ドメイン(シングル・ドメイン含む)では親ドメインがないため、ドメイン内のすべてのドメイン・コントローラはPDCエミュレータに対して、同期を行おうとする。
サイト間での、このNTPパケットのトラフィックを最小限に抑え、かつ特定のサーバ間だけでやりとりさせたい場合は、各サイト内に権威ある時刻サーバを明示的に設定すればよい。すると、サイト内のドメイン・コントローラは、サイト内の権威ある時刻サーバに対して時刻同期を行うようになる(ほかのドメイン・コントローラにレジストリ設定を加える必要はないが、w32tm /resync /rediscover コマンドでの同期情報の初期化が必要)。そして各サイトの権威ある時刻サーバについて、明示的にPDCエミュレータを時刻同期先として設定し、PDCエミュレータが外部NTPと同期を取るようにすればよいだろう。
サイト内での権威ある時刻サーバを指定するためには、以下のレジストリ値を、権威を与えたいドメイン・コントローラにそれぞれ設定する。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEのSYSTEM\CurrentControlSet\Services\W32Time\Config |
値の名前 | AnnounceFlags |
型 | DWORD |
値の内容 | 0x5 |
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEのSYSTEM\CurrentControlSet\Services\W32Time\Parameters |
値の名前 | Type |
型 | REG_SZ |
値の内容 | NTP |
値の名前 | NTPServer |
型 | REG_SZ |
値の内容 | <PDCエミュレータのIPアドレス> |
サイト内での権威ある時刻サーバを指定するための設定 |
AnnounceFlagsレジストリ値の意味であるが、マイクロソフトの資料および筆者が検証した限りでは、値の内容は4bit相当の構成となっていると考えられる。それぞれのbitはフラグとして機能し、時刻サーバとしての機能の公開と時刻サーバとしての権威の有無について、以下のような意味を持っている。
値 | 意味 |
---|---|
0(全bitが0) | 自身を時刻サーバとして公開しない |
1(1bit目が1) | 明示的に、自身を時刻サーバとして公開する |
2(2bit目が1) | (Windows Timeサービスの設定に応じて)自動的に、自身を時刻サーバとして公開するかどうか決定する |
4(3bit目が1) | 明示的に、自身の時刻サーバに権威があると公開する |
8(4bit目が1) | (Windows Timeサービスの設定に応じて)自動的に、自身の時刻サーバに権威があると公開するかどうか決定する |
AnnounceFlagsレジストリ値の意味 bit位置は、最下位bitが1bit目、その隣が2bit目、……と数える。 |
例えば明示的に権威を保持し、かつ明示的に時刻サーバとして動作させる必要があるコンピュータは、AnnounceFlagsレジストリ値を“0x5(16進数)=0101(2進数)”と設定することになる。上記 AnnounceFlags値の設定の詳細については、マイクロソフトの以下の資料を参照していただきたい。
ちなみに、上記の設定を行った状態でw32tm /monitor /domainコマンドを実行すると、“RefID”項目より、それぞれのNTPサーバの実際の参照先が確認できる。
※これは、ドメイン・コントローラchabvssv10をPDCエミュレータとする3サイトの構成となっており、chabvssv12およびchabvssv14が各サイトの権威あるNTPサーバとなり、chabvssv11、chabvssv13、cahbvssv15が各サイト内の権威ある NTP サーバから時刻同期を行う設定となっている。
C:\>w32tm /monitor /domain:chabcorp
※サイト1:chabvssv10…PDCエミュレータ
chabvssv10.chabcorp.local *** PDC *** [192.168.10.40]:
ICMP: 12ms delay.
NTP: +0.0000000s offset from chabvssv10.chabcorp.local
RefID: ntp1.jst.mfeed.ad.jp [210.173.160.27]
※サイト1:chabvssv11…chabvssv10に同期
chabvssv11.chabcorp.local [192.168.10.41]:
ICMP: 13ms delay.
NTP: +0.1412353s offset from chabvssv10.chabcorp.local
RefID: chabvssv10.chabcorp.local [192.168.10.40]
※サイト2:chabvssv12…権威あるNTPサーバ
chabvssv12.chabcorp.local [192.168.10.67]:
ICMP: 15ms delay.
NTP: -9.8110144s offset from chabvssv10.chabcorp.local
RefID: chabvssv10.chabcorp.local [192.168.10.40]
※サイト2:chabvssv13…chabvssv12に同期
chabvssv13.chabcorp.local [192.168.10.68]:
ICMP: 11ms delay.
NTP: -0.6986206s offset from chabvssv10.chabcorp.local
RefID: chabvssv12.chabcorp.local [192.168.10.67]
※サイト3:chabvssv14…権威あるNTPサーバ
chabvssv14.chabcorp.local [192.168.10.99]:
ICMP: 4ms delay.
NTP: -0.7682548s offset from chabvssv10.chabcorp.local
RefID: chabvssv10.chabcorp.local [192.168.10.40]
※サイト3:chabvssv15…chabvssv14に同期
chabvssv15.chabcorp.local [192.168.10.100]:
ICMP: 5ms delay.
NTP: -12.5348394s offset from chabvssv10.chabcorp.local
RefID: chabvssv14.chabcorp.local [192.168.10.99]
また、上記の応用例として、NTPServerレジストリ値に、(PDCエミュレータの代わりに)同一の外部NTPサーバ名を参照先として設定することで、サイト間のNTPパケットのやり取りを行わせず、サイト単位でそれぞれ、外部NTPサーバにある時刻を取り込むこともできる。さらに以下の設定を併用すれば、サイト間のNTPパケットを完全に抑止することもできるだろう。
Active Directory環境では、通常自身が属するサイト内の(接続するコンピュータにとって)権威あるドメイン・コントローラから時刻同期を行おうとする(詳細は第1回を参照)。これが仮に失敗した場合、デフォルトではサイト外の任意の(参照が可能な)ドメイン・コントローラから時刻同期を行うが、これを行わせない運用も可能だ。
項目 | 内容 |
---|---|
キー | HKEY_LOCAL_MACHINEのSYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient |
値の名前 | CrossSiteSyncFlags |
型 | DWORD |
値の内容 | 0x0 (デフォルト値は0x2:任意のドメイン・コントローラに対して時刻同期を行う) |
サイト外のドメイン・コントローラに同期させないための設定 |
ちなみに、上記の値の内容を0x1とした場合、(サイト外にある)PDCエミュレータに対して明示的に時刻同期が行われる。
なお、Windows Timeサービスに関するレジストリの設定は、ほかの項目と同じくグループ・ポリシーを利用して設定することもできる。
グループ・ポリシー・エディタを使って、[コンピュータの構成]−[管理用テンプレート]−[システム]−[Windows タイム サービス]項目を編集すれば、コンピュータ・オブジェクトに対して各種の設定ができる(詳細は連載第1回の「3.Active Directory 環境における時刻同期―Windows Timeサービスでの時刻同期間隔について」や連載第2回の「3.Windows Timeサービスのさまざまな設定」を参照)。例えば、ドメイン環境下でのすべてのコンピュータの時刻同期間隔を変更したければ、[グローバル構成設定]にあるMinPollIntervalおよびMaxPollIntervalレジストリ値を設定したポリシーを“ドメイン”コンテナに直接リンクすれば、一括で再設定させることができるだろう。
ポリシー設定の詳細については特にここでは列挙しないので、実際のグループ・ポリシーの説明項目を参照いただきたい。
Copyright© Digital Advantage Corp. All Rights Reserved.