none
NTPサーバの設定について RRS feed

  • 質問

  • NTPサーバの設定について教えていただきたいことがあります。Windows2012R2環境のADサーバを2台構築しました。

    ■構築後、PDCエミュレータサーバで時刻を外部NTPサーバと同期させるため、

    w32tm /config /update /manualpeerlist:外部エミュレータサーバ,0xa /syncfromflags:all

    を指定しましたが、「?????????」となっていました。

    w32tm /query /source を確認すると[VM IC Time Synchronization Provider]となっていました。

    しかし、レジストリ値を確認すると外部NTPサーバの値になっており、イベントログでも外部NTPサーバと同期されているログはありました。

    外部NTPサーバを設定するコマンドでは、???なので設定できていないように思えますし、w32tm /query /sourceでもNTPサーバが表示されていませんが、ログは正常にでているのでどちらが正しいのでしょうか。

    ■FSMOではない2台目のドメインコントローラーのNTPサーバを確認するとw32tm /query /source を確認すると[VM IC Time Synchronization Provider]となっていました。、レジストリ値を確認すると「time.windows.com,0x9」なのでFSMOサーバと同期できていないと思われますが、
    イベントログでは、PDCエミュレータサーバと同期しているログが出ていました。
    コマンドの出力結果とイベントログでの結果に差異があるのですが、どちらを正としたらいいでしょうか。

    ■PDCエミュレータサーバは、NTPサーバになるのでしょうか。NTPクライアントになるのでしょうか。

    2014年10月3日 8:54

回答

  • チャブーンです。

    動作的に不可解だったので、w32timeデバッグログを取得して確認しました。結論として、(指定した)外部NTPサーバとは同期していないことがわかりました。ログを見ると、以下のような挙動になっています。

    1. 外部NTPサーバから時刻同期情報(時刻サンプル)を取得する
    2. VM IC Time Synchronization Providerから、ホストマシンの内部時刻(時刻サンプル)を取得する
    3. 1と2の時刻サンプルを比較し、常に2を選択する
    4. 2の時刻サンプルをシステム時刻に反映する
    5. 以下繰り返し

    w32tm /query /sourceは「実際の同期先」を示していますので、デバッグログと挙動が一致しています。また、先の投稿で示したVM IC Time Synchronization Providerの挙動に関して、NTP同期する場合も外部NTPサーバから同期するとは書かれておらず、VM IC Time Synchronization Providerが同期情報を提供するとあるので、挙動と一致します。

    ----
    NTP Time Provider から Time sample を提供します。時刻同期を行うかどうかは NTP (w32time) に委任します。(Hyper-V 統合サービスの "時刻の同期" は、VM IC Time Synchronization Provider という名前の NTP Time Provider を提供します)
    ----

    うえの内容から、統合サービスの「時刻の同期」が有効な場合、外部NTPサーバとは最終的には同期関係になりません。w32tm /query /peersで同期できているように見えるのは、あくまで「同期可能な時刻サンプル候補」を取得した、という意味で、サンプル候補を受け入れるかどうかは別問題です。この意味でVM IC Time Synchronization Provider が有効である限り、常に優先する動作となる、といえるでしょう。


    2014年10月7日 19:01
    モデレータ

すべての返信

  • チャブーンです。

    まず、はっきり言えることは[VM IC Time Synchronization Provider]は、仮想マシンにおける「統合サービス」が提供する機能ですので、仮想マシン上の挙動をお尋ねになっていると認識しています。

    仮想マシン上で、統合サービスによる時刻同期が行われている場合、そちらが優先になります。(動作レイヤが違うため)NTP時刻同期が併走して当初のログが記録されたのかもしれませんが、直近の同期状況はw32tm /query /statusで出てくるものが正しいといえるでしょう。

    本来的なNTPの動作をさせたい場合、各仮想マシンの[設定]にある、統合サービスの「時刻の同期」機能をOFFにして、再起動してください。

    • 回答の候補に設定 佐伯玲 2014年10月8日 1:25
    2014年10月4日 10:03
    モデレータ
  • ありがとうございます。
    仮想ではありますが、Azure上に構築しているので統合サービスでは設定できないという事ですかね?

    設定についてですが

    w32tm /config /update /manualpeerlist:外部NTPサーバ,0xa /syncfromflags:all
    で「?????」になっていたのは、コマンドプロンプトに日本語文字コードがセットできていなかったからです。

    「??????」の内容は「次の引数は予期されていません:8」という内容でした。0xaの指定をはずしてて実行すると、
    コマンドは正常に終了しました。

    w32tm /query /source を見ると「ソース: VM IC Time Syncronization Provider」でしたが、
    W32tm /query /peers コマンドで確認するとピア1、ピア2ともにNTPサーバが指定されておりました。

    かつ、イベントログを見ても設定したNTPサーバと同期しているログが出ていたので、NTPサーバと同期ができているのではないかと思います。

    上記でも、統合サービスによるホストOSとの時刻同期が優先されているのでしょうか。

    2014年10月6日 8:53
  • チャブーンです。

    Azure IaaS(仮想マシン)ということでしたら、Hyper-Vの[設定]からの制御はムリだと思います。

    Azure IaaSであってもHyper-V仮想マシンであることは変わりないので、該当機能が有効になっている限り、[VM IC Time Syncronization Provider]が優先されます。w32tm /query /sourceコマンドで明示されているのはそのためです。

    ただ、[VM IC Time Syncronization Provider]の挙動に関しては、以下のページにあるように、ホストマシンとの時刻ずれが少ない状況(5秒以内)では、統合サービス機能を維持しつつもNTPとして時刻同期を行う、という挙動のようです。

    http://technet.microsoft.com/ja-jp/virtualization/gg491389

    この意味では、現状ではNTP時刻同期をしているということのようですが、時刻が想定以上にずれた場合は強制同期が走るので、厳密にはNTP時刻同期に準拠している、とは違うようにも思います。無効にしたい場合、Azure仮想マシン上で動作している[Hyper-V Time Synchronization Service]を停止させれば、完全にNTP時刻同期に準拠する動作になりますが、このような操作はAzure IaaSとしては多分サポートされていないでしょう(MS有償サポートに聞かないとはっきりとはわかりませんが)。

    結論として、うえのMS情報を根拠に、上手にコマンド結果を解釈する、という流れになると思いますが、Azure IaaSをNTPサーバとしてLinux等と組み合わせて使いたい、というような場合、(Linuxのntpdの解釈は厳密なので)予期しない問題が起こるかもしれませんね。

    追記:実際にデバッグログを取った結果、外部NTPサーバには「同期していない」ことがわかりました。追加コメントします。




    2014年10月7日 11:27
    モデレータ
  • チャブーンです。

    動作的に不可解だったので、w32timeデバッグログを取得して確認しました。結論として、(指定した)外部NTPサーバとは同期していないことがわかりました。ログを見ると、以下のような挙動になっています。

    1. 外部NTPサーバから時刻同期情報(時刻サンプル)を取得する
    2. VM IC Time Synchronization Providerから、ホストマシンの内部時刻(時刻サンプル)を取得する
    3. 1と2の時刻サンプルを比較し、常に2を選択する
    4. 2の時刻サンプルをシステム時刻に反映する
    5. 以下繰り返し

    w32tm /query /sourceは「実際の同期先」を示していますので、デバッグログと挙動が一致しています。また、先の投稿で示したVM IC Time Synchronization Providerの挙動に関して、NTP同期する場合も外部NTPサーバから同期するとは書かれておらず、VM IC Time Synchronization Providerが同期情報を提供するとあるので、挙動と一致します。

    ----
    NTP Time Provider から Time sample を提供します。時刻同期を行うかどうかは NTP (w32time) に委任します。(Hyper-V 統合サービスの "時刻の同期" は、VM IC Time Synchronization Provider という名前の NTP Time Provider を提供します)
    ----

    うえの内容から、統合サービスの「時刻の同期」が有効な場合、外部NTPサーバとは最終的には同期関係になりません。w32tm /query /peersで同期できているように見えるのは、あくまで「同期可能な時刻サンプル候補」を取得した、という意味で、サンプル候補を受け入れるかどうかは別問題です。この意味でVM IC Time Synchronization Provider が有効である限り、常に優先する動作となる、といえるでしょう。


    2014年10月7日 19:01
    モデレータ
  • ご連絡が遅くなりました。調べていただきありがとうございます。

    Azure環境に依存している内容ということですので、Azure環境として同対処するか考えていきます。

    2014年10月14日 0:35