仮想化環境でのWindowsの時刻同期の問題

仮想環境だけではなく、物理環境でも、w32tm /resync を実行すると

「時刻データが利用できなかったため、コンピュータは同期を取り直しませんでした。」

となる場合があります。これがドメインコントローラである場合は致命的です。
マイクロソフトの次のドキュメントを参考に

Windows Server 2003 で Windows 以外の NTP サーバーとの同期が成功しない
http://support.microsoft.com/default.aspx?scid=kb;ja;875424

ここから>>>>
デフォルトでは、Windows Server 2003 ドメイン コントローラはタイム サー
バーとして構成され、対称アクティブ モードを使用して同期要求を送信しま
す。Windows が実行されていない一部の NTP サーバーは、クライアント モード
を使用する要求以外には応答しません。

<<<ここまで

Windows が実行されていないNTPサーバ(通常の公開NTPサーバなどは「Windows が実行されていない」のが普通だと思います。UNIX/Linux やNTP内臓のLAN内のコアルータなどからは、Windows は時刻同期が取れない場合があるようです。

上のマイクロソフトドキュメントから次のバッチファイルを作り実行しました。

w32tm /config /manualpeerlist:NTP_server_IP_Address,0x8 
syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /resync

NTP_server の後ろにある 0x8 はクライアントモードを意味します。

デフォルトでは NTP_server は time.windows.com で、
0x1、「特別なポーリング間隔 SpecialInterval を使用」です。

ただし、0x8 を使用した場合は、クライアントモードとなるため、タイムサーバとしては利用できないことになります。

Windows NTP,SNTP は Windows ネットワーク内部(AD環境)で最適化されて利用されることを前提としているため、ドメインに参加しない Windows サーバは排他的に、他のプラットフォームとは実に相性が悪いよということになります。


-ntpd を使って対策-
オープンソースのWindows 用 NTPD(4.2.4p8) を導入してみました。

NTP Download
http://www.meinberg.de/english/sw/ntp.htm

プログラムは NetWork Time Protocol として自動スタートします。
Windows 標準の Windows Time は「無効」となります。
イベントビューワの「アプリケーション」に NTP というソースの
動作状況が確認できます。

Syncronized to 192.168.1.240 stratum2

とあれば、同期先との通信しています。
わざとローカルクロックをずらすと

time reset NUMxxxxxxx

が記録され、時刻を取り直します。

仮想化環境でのWindowsの時刻同期の問題_a0056607_13263244.gif


NTPDの場合、起動後にサービスが開始され、良くあるNTPサーバに同期を開始します。 xm destroy などの処理を行った直後に Windows はハイパーバイザーからハードウェアクロック(RTC)が取れない場合があるので、 w32tm のように「時刻が狂ったまま」になることは少ないようです。

C:\Program Files\NTP\etc に ntpd.conf が作成されます。

# NTP Network Time Protocol
# **** ATTENTION ****: *You have to restart the NTP service when you
change this file to activate the changes*
# PLEASE CHECK THIS FILE CAREFULLY AND MODIFY IT IF REQUIRED
# Configuration File created by Windows Binary Distribution Installer
Rev.: 1.26 mbg
# please check http://www.ntp.org for additional documentation and
background information
# Use drift file
driftfile "C:\Program Files\NTP\etc\ntp.drift"

# your local system clock, could be used as a backup
# (this is only useful if you need to distribute time no matter how
good or bad it is)
#server 127.127.1.0
# but it should operate at a high stratum level to let the clients
know and force them to
# use any other timesource they may have.
#fudge 127.127.1.0 stratum 12

# Use a NTP server from the ntp pool project (see http://www.pool.ntp.org)
# Please note that you need at least four different servers to be at
least protected against
# one falseticker. If you only rely on internet time, it is highly
recommended to add
# additional servers here.
# The 'iburst' keyword speeds up initial synchronization, please check
the documentation for more details!
server 192.168.1.240
server ntp.nict.jp

server 2.asia.pool.ntp.org iburst
server 0.us.pool.ntp.org iburst
server 1.us.pool.ntp.org iburst
server 2.us.pool.ntp.org iburst


# End of generated ntp.conf --- Please edit this to suite your needs


このように server に続けてLAN内の ntp サーバや公開サーバを指定します。公共サービスは公共のトラフィックのことも考えて、予備としておきます。なるべく地理的に近いサーバを指定することが重要です。間違っても地球の反対側のtime.windows.com などのNTPソースを参照すべきではないでしょう。ISP 指定のNTPや nict, mfeed などを指定することをお勧めします。ntp pool を利用する場合もなるべく asia のものを使うのが理想です。
http://www.pool.ntp.org/jp/

-Ping は飛べども同期が取れない?-

Ping は反応するのに port 123 番から反応が受けられない場合があります。なぜか、特定の Windows サーバには反応するのに、ドメインコントローラであれども、ntpd サーバであっても駄目という奇妙な現象です。直接アドレス指定しても駄目なので、どうも Windows の名前解決の問題のようなので、原因は全く不明です。おとなしく再インストールするしかないようです。ファイアウォールも開いているのに何故でしょうね。

あわせて読んでください。
仮想環境で仮想マシンの時刻のズレを修正する
http://islandcnt.exblog.jp/8952179/

-Key word-
Novell SUSE Linux, SLES11, Windows W32tim, 時刻同期,時刻が狂う, 仮想化, プライベートクラウド
問い合わせは
islandcenter.jp

Commented by ぐう管 at 2010-11-13 01:29 x
おぉ、長年の ntp失敗問題が解決しました!XP64bitで client設定できました。

KBの日付では4年も前に公開されてたんですねぇ。

しかし、何で linuxの ntpdで成功する時があるんでしょうねぇ?

ちなみに職場のPCは、以前は windowsの ntpだけで時刻同期してましたが、
学生が日付を10年前とかに勝手に変える奴がいて、レンジ逸脱で、
ntp補正が無効になって、CADとかのネットワーク・ライセンスが取得
できない状態になっていました。
 現在は、C32のログイン時刻同期で、対策としては完璧です B-)
Commented by islandcenter at 2010-11-13 11:33
コメントありがとうございます。お役に立てたようですね。
Commented by ぐう管 at 2010-12-06 09:55 x
>しかし、何で linuxの ntpdで成功する時があるんでしょうねぇ?

その後、気になって試してみると、ntpサーバーと同一セグメントPCのみ
時々 ntp同期成功する。別セグメントだと(たぶん)必ず同期失敗する。
って挙動をしめす様です。

#ところで、記事毎のコメント欄じゃなくて、掲示板を開設して欲しいなぁ、、
って思ってます。
Commented by islandcenter at 2010-12-13 21:38
WindowsのNTPの動きは挙動不審です。まだ悩みの種です。

#ところで、記事毎のコメント欄じゃなくて、掲示板を開設して欲しいなぁ、、
って思ってます

そこまで手を広げられない零細事業者なので、ご勘弁ください。
コメントやリクエストにはできるだけ応えます。
勉強のネタがあれば投下してください。時間がかかりますが、時々行き詰まるのでとてもコメントは大事にしています。

いつもコメント有難うございます。
by islandcenter | 2010-05-24 10:44 | プライベートクラウド | Comments(4)