Windows Server 2008 R2を頂点とした、インターネット非接続環境でのNTP構成について

WindowsLinuxが混在するオンプレミス環境で、Windowsを頂点としたNTP構成がうまく機能しなかった。
NTP構成については巷に情報があふれており、何をどう取捨選択して反映させればよいのだか、という感じだったが、このご時世、AWSでそれなりに簡単に検証できた。

【参考URL】
http://blog.syo-ko.com/?eid=1050
http://support.microsoft.com/kb/2385818/ja

検証したかった環境は下記の通り。
本来はWindows Server 2008 R2 Standard Editionと、RedHat Enterprise Linux 5.6環境で実施したいのだが、AWS上ではそれぞれData Center EditionとAmazon Linuxで代用した。

Windowsサーバの設定

  • スタートメニューに「gpedit.msc」と入力し、ローカルグループポリシーオブジェクトエディタを開く。
  • ローカルコンピュータポリシー>コンピュータの構成>管理用テンプレート>システム>タイムプロバイダー

Windows NTP サーバーを有効にする」 を 「有効」にする。

  • サービスから、Windows Timeのプロパティを開く。スタートアップの種類を、自動(遅延開始)とする。

ここでは、サービスを「遅延開始」にするのがミソ。

Windowsサーバのレジストリエディタの設定

  • \HKEY_LOCAL__MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config\AnnouncedFlags

⇒「5」にする。(独立した権威あるNTPサーバとする)

  • \HKEY_LOCAL__MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters\LocalClockDispersion

⇒「0」にする。

  • \HKEY_LOCAL__MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Parameters\NtpServer

⇒「空欄」にする。

レジストリエディタを編集しても「日付と時刻の調整」には値が残ってしまうが、
残った値は消してしまっても構わない。ただし、その場合は再度レジストリエディタでNTPServerを空欄にする必要がある。
これで、Windowsサーバ側のNTP設定は完了。

次に、Linux側でNTPサーバとなるマシンの/etc/ntp.confを開く。*1
あ、当然ですがrootで操作してください。

デフォルトのサーバをコメントアウトし、見ないようにする。

# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.amazon.pool.ntp.org
#server 1.amazon.pool.ntp.org
#server 2.amazon.pool.ntp.org
#server 3.amazon.pool.ntp.org

server と fudge のコメントアウトを外し、server欄には上記で設定した
Windowsサーバのサーバ名、またはIPアドレスを記入する。

# Undisciplined Local Clock. This is a fake driver intended for backup
# and when no outside source of synchronized time is available.
server hogehoge # local clock
fudge 127.127.1.0 stratum 10

Linux側のNTPサーバ設定はこれで終了。終了後はNTPサービスを再起動する。*2

最後に、LinuxのNTPクライアントの設定を行う。
「server」に、Linux側のNTPサーバ名を指定する。

server 10.150.190.138

設定終了後はNTPサービスを再起動。ntp.confの詳しい設定方法は下記URLが詳しい。
http://www.aconus.com/~oyaji/ntp/ntp.htm

全設定が終了したところで、Linux側のNTPサーバとNTPクライアントで下記コマンドを発行し、
行頭に「*」がついていれば同期されていることとなる。

# ntpq -p

だいぶ駆け足になりましたが、EC2ではこの方法で同期ができました。
オンプレミス環境で同期できたらまた書こうと思います。

*1:viの使い方ぐらいはggrks

*2:# service ntpd restart