仮想基盤上のActive Directory ドメインコントローラーの時刻同期を構成する — 企業でよくあるWindows/M365環境を構築してみるシリーズ Part8
この記事の内容
- 仮想環境(Hyper-V)上のActive Directory ドメインコントローラーで注意が必要な時刻同期の設定を解説します
- Hyper-Vの時刻同期統合サービスを無効化し、Windowsタイムサービス(w32tm)による正しい構成に切り替える手順を紹介します
- PDCエミュレーター(1台目のDC)を外部NTPサーバーと同期させる設定コマンドを紹介します
- 2台目以降のDCおよびメンバーサーバーはドメイン階層から自動的に時刻同期する構成の確認方法を説明します
- 設定を怠ると時刻ずれが発生し、Kerberos認証が失敗するなど深刻な障害につながるため、正しく構成されているか確認いただける内容です
はじめに
このシリーズでは、企業でよくあるWindows/M365環境を検証環境で再現しながら構築しています。前回まででActive Directoryを構築し、ユーザーを追加して同期を設定するところまで完了しました。
しかし、まだ1つ重要な設定が残っています。それが時刻同期の構成です。
Active Directoryにおいて時刻は非常に重要な要素です。特にKerberos認証では、ドメインコントローラーとクライアント間の時刻差が5分以内でなければ認証が失敗します。時刻がずれてしまうと認証エラーが発生し、ドメイン全体に影響が及ぶ深刻な障害となります。
仮想環境でのAD DCサポートについて
かなり以前はドメインコントローラーを仮想環境で動作させることが推奨されない時代もありましたが、Windows Server 2012以降は仮想化環境での動作が正式にサポートされています。Server 2016以降はさらに改善が加えられています。
Microsoftの公式ドキュメント「Active Directory ドメイン サービス(AD DS)の安全な仮想化」でも、USNロールバックなどの問題が発生しないよう保護機能が導入されていることが説明されています。
仮想環境でのDCの時刻同期に関する重要な注意点
仮想環境でドメインコントローラーを運用する場合、多くの企業で時刻同期が推奨構成になっていないというケースが見受けられます。
Microsoftのドキュメントでは以下のように説明されています。
- 仮想環境で動作するドメインコントローラーに対してWindowsタイムサービスを正しく構成するには、ホストとゲスト(DC)間の時刻同期を無効化することが推奨されます
- Hyper-Vの場合、具体的にはHyper-V時刻同期プロバイダー(統合サービスの「時刻の同期」チェックボックス)をオフにします
- その上で、PDCエミュレーターが外部NTPサーバーと同期するよう構成します
- 2台目以降のDCやメンバーサーバーはドメインの階層構造に従って時刻を同期します
現在の時刻同期状態を確認する
まず、現在の時刻同期がどのような状態になっているかを確認します。コマンドプロンプトを管理者として開き、以下のコマンドを実行します。
w32tm /query /status
設定変更前は、出力に VMICTimeProvider や VM IC Time Synchronization Provider と表示され、Hyper-Vの時刻同期機能と同期していることが確認できます。
Hyper-Vの時刻同期統合サービスを無効化する
Hyper-Vマネージャーから、ドメインコントローラーの仮想マシンの設定を変更します。変更はVMをシャットダウンした状態で行います。
- Hyper-Vマネージャーで対象VMを右クリックし、**「シャットダウン」**を選択します
- VMの**「設定」**を開きます
- 左メニューの**「統合サービス」**を選択します
- 「時刻の同期」チェックボックスをオフにします
- 「OK」をクリックして設定を保存します
複数のDCがある場合は、すべてのDCで同様の操作を行います。
起動・停止の順序について
複数のDCをシャットダウン・起動する場合、2台目以降のDCから停止し、1台目のDC(PDCエミュレーター)を最後にシャットダウンするとよいでしょう。起動時は逆に1台目のDCを最初に起動します。クラスターなどと同様に、マスターとなるサーバーを最後まで残し最初に起動することで、不要なトラブルを防ぐことができます。
PDCエミュレーターを外部NTPサーバーと同期させる
DCを起動したら、フォレストルートのPDCエミュレーター(1台目のDC)に外部NTPサーバーとの同期を設定します。
以下のコマンドを実行します。ntp.nict.jp は国立研究開発法人情報通信研究機構(NICT)が提供する日本の標準時サーバーです。
w32tm /config /syncfromflags:manual /manualpeerlist:"ntp.nict.jp" /update
設定後、以下のコマンドで強制的に再同期します。
w32tm /resync
インターネットに接続できない環境の場合
検証環境やセキュリティ上の理由でインターネットへの直接アクセスができない場合、ntp.nict.jpへの同期はエラーになります。その場合は、組織内のNTPサーバーのIPアドレスまたはホスト名を/manualpeerlistに指定してください。
同期状態を再確認します。
w32tm /query /status
指定したソースから時刻を取得できていれば設定は完了です。
2台目以降のDCとメンバーサーバーの設定
2台目以降のDCおよびメンバーサーバーは、ドメイン階層から時刻を同期する設定にします。以下のコマンドを実行します。
w32tm /config /syncfromflags:domhier /update
このコマンドを実行すると、Windowsタイムサービスがドメイン上における自分の役割(DCなのか、メンバーサーバーなのか)を判断し、適切な上位サーバーと時刻を同期するようになります。
なお、ドメインに参加しているDCやメンバーサーバーは、既定でドメイン階層から時刻を取得する設定になっている場合がほとんどですが、改めてコマンドを実行して確認しておくことを推奨します。
同期状態を確認すると、ソースとして1台目のDC(例:dc01.example.ad)が表示されます。これは、1台目のDCがドメイン階層のトップとして外部NTPと同期しており、2台目以降はそこから時刻を取得していることを示しています。
まとめ
今回は、仮想環境(Hyper-V)上に構築したActive Directoryドメインコントローラーの時刻同期設定を行いました。要点を整理します。
- Hyper-Vの時刻同期統合サービスは無効化する — 仮想マシンの設定 → 統合サービス → 「時刻の同期」をオフにします(VMシャットダウン状態で変更)
- PDCエミュレーターは外部NTPサーバーと同期する —
w32tm /config /syncfromflags:manual /manualpeerlist:"ntp.nict.jp" /updateで設定します - 2台目以降のDCとメンバーサーバーはドメイン階層から同期する —
w32tm /config /syncfromflags:domhier /updateで設定します - 時刻同期の確認には
w32tm /query /statusコマンドを使用します
この設定は「なくても動く」と思われがちですが、時刻がずれるとKerberos認証の失敗など深刻な障害につながります。特に仮想化環境でドメインコントローラーを運用している場合は、ぜひこの機会に設定状況をご確認ください。
次回は、ファイルサーバーの構築やクラウド(Azure AD)との連携など、より典型的な企業環境の再現に進む予定です。