Windows Server 2008 R2を頂点とした、インターネット非接続環境でのNTP構成について
WindowsとLinuxが混在するオンプレミス環境で、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のプロパティを開く。スタートアップの種類を、自動(遅延開始)とする。
ここでは、サービスを「遅延開始」にするのがミソ。
- \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ではこの方法で同期ができました。
オンプレミス環境で同期できたらまた書こうと思います。