【NTP入門 第11回】時刻同期の設計演習 ― 3拠点の階層設計、オンプレとAWSのログ、Kerberosの散発的な失敗、UTCから1ms以内

NTP入門 第11回 時刻同期の設計演習 NTP サーバー
スポンサーリンク
スポンサーリンク

「で、うちの会社の時刻同期は、結局どう組めばいいんですか?」

仕組みや設定を学んだ後に出てくるのが、この問いです。時刻同期の設計にも、正解は1つではありません。拠点の数、インターネットの出口、クラウドの有無、求められる精度……どの要件を重く見るかで、選ぶ案が変わります。

連載の最終回となる第11回では、第1回〜第10回の知識を使って、4つの設計演習に取り組みます。答えを覚えるのではなく、要件から案を選ぶ筋道を身に付けましょう。


演習の進め方

問題を読んで要件に線を引き無い条件は仮定を書く、個人で5分案と理由と確かめるコマンドを書く、グループで共有してほかの人の案と比べる、解答例と解説で決め手になった要件を確かめる、の4つの手順を示す図
  • 各問は「問題 → 解答例 → 解説」の順に進みます
  • まず5分考え、選ぶ案と、その理由を書き出します。可能なら、chronyc・w32tmで確かめる手順も書きます
  • 最初にすべきことは、要件と現状の確認です。問題文に書かれていない条件(予算、体制、将来の拡張)は、どう仮定したかを明記します

案が分かれたら、重く見た要件の違いを比べてみてください。


問1 拠点が3つある会社の時刻同期の階層を設計する

本社(東京)がインターネットの出口とFWを持ち、DC×2(うちPDCエミュレーターはVMでtime.windows.comを参照)、Linuxサーバー×20(OSの既定のプール)、ESXi×4・vCenter、ルーター・L3スイッチ・複合機(一部は停止方針の福岡大学、複合機は未設定)があり、閉域網で大阪支社(DC×1・Linux×5)と福岡営業所(サーバーなし)につながる現状と、数十ms以内でそろう・出口が止まってもそろう・外へ出る台数は最小という要件を示す図
  • 状況:従業員500名の会社で、本社(東京)・大阪支社・福岡営業所を閉域網でつないでいる。インターネットの出口は本社だけ
  • 機器:本社にDC 2台(うち1台がフォレストルートのPDCエミュレーター、VM)、Linuxサーバー20台、vSphere(ESXi 4台とvCenter)。大阪にDC 1台とLinuxサーバー5台。福岡はサーバーなし。各拠点にルーター・L3スイッチ・複合機、本社にファイアウォール
  • 現状:参照先がばらばら。PDCはtime.windows.com、LinuxはOSの既定のプール、ネットワーク機器の一部は停止の方針が出ている福岡大学の公開NTPのまま、複合機は未設定
  • 要件:全社の時刻を数十ミリ秒以内でそろえ、インターネットの出口が止まっても社内の時刻はそろったままにする。出口のファイアウォールでNTPを通すサーバーは最小限にする

考えるポイント:外部の時刻源の選び方と数、社内のNTPサーバーの台数と置き場所、PDCエミュレーターとの関係、機器の参照先。

問1 解答例

案構成メリットデメリット
Aすべての機器がインターネットの公開 NTP を直接参照する(福岡・大阪も本社の出口を通る)社内にサーバーが要らない出口で多くの機器に UDP 123 を開ける。出口が止まると機器ごとにずれていく。参照先が機器ごとにばらつく
B本社に社内 NTP サーバー(chrony)を2台置き、独立した外部の時刻源4つ以上を参照する。PDC は社内 NTP を参照し、ほかの Windows はドメイン階層、Linux・ESXi・vCenter・ネットワーク機器・複合機は社内 NTP を参照する外へ出るのは2台だけ。全社の時刻の元が1つになる。費用が小さい本社の2台に全社が依存する。出口が止まると、社内はそろったまま UTC から少しずつずれる
C案B に加え、大阪にも社内 NTP を1台置き(計3台で互いに比べる)、本社に GNSS 受信機付きの時刻サーバー(stratum 1)を置く出口が止まっても UTC にそろう。3台以上で多数決が効き、拠点の障害にも強いGNSS のアンテナの設置と機器の費用、運用が増える
案A(全機器が直接外へ)、案B(社内NTP×2で外へは2台)、案C(社内NTP×3+GNSSでUTC)を、出口で開ける台数が少ない、出口の障害時も社内がそろう、出口の障害時もUTCを保つ、費用が小さい、の4つの観点で比べた図

案Bが基本で、出口の障害でもUTCを保ちたい、または精度を示す必要がある場合に案Cを選びます。どの案でも、ADの時刻の元はPDCエミュレーター1台だけにし、ほかのDCに個別の参照先を設定しません(第5回)。

問1 解説:時刻の階層

階層機器参照先注意
外部公開の時刻源NICT(ntp.nict.jp)、jp.pool.ntp.org、NTS に対応した公開サーバーなど、運用者の違う4つ以上リープスメアをするサーバー(time.google.com・time.aws.com)を混ぜない
社内 NTP本社 chrony 2台(案C は大阪1台と GNSS を追加)外部4つ以上と、社内 NTP どうしallow で社内だけに応答。ntp.corp.example.jp のような名前で配る
AD の頂点フォレストルートの PDC エミュレーター社内 NTP(w32tm /config /manualpeerlist:… /syncfromflags:manual /reliable:yes /update)VM ならホストからの時刻同期を止める。PDC を移したら設定も移す
ADほかの DC、ドメイン参加の Windowsドメイン階層(NT5DS)個別に参照先を設定しない
サーバー・基盤Linux、ESXi、vCenter社内 NTP 2〜3台近い拠点の NTP を先に書く
機器ルーター、L3 スイッチ、ファイアウォール、複合機社内 NTP(1台しか書けない機器は名前で指定)福岡大学などの古い参照先を棚卸しして消す
外部のNICT・jp.pool.ntp.org・NTS対応の公開サーバー・運用者の別のほかの時刻源(スメアありのtime.google.com・time.aws.comは混ぜない)を本社chrony×2(案Cは大阪×1とGNSS時刻サーバーを追加)が参照し、ADはPDCエミュレーターを入口にほかのDCとWindows端末がNT5DSでたどり、Linux・ESXi・vCenterとルーター・L3SW・FW・複合機はすべて社内NTPを直接見ることを示す図

外部を4つ以上にするのは、1つが誤っても多数決で外せるようにするためです(RFC 8633。第3回・第7回)。実際にNICTの公開NTPも、2026年9月9日に誤った時刻を10分あまり配信しました。ネットワーク機器やLinuxを、DCではなく社内NTPに向けると、ADの更新作業やDCの再起動の影響を受けずに済みます。


問2 オンプレとAWSのログの時刻をそろえる

オンプレの本社の社内NTP(NICTなどを参照)に合わせたLinuxとDB・基幹システムの連携がDirect ConnectでAWS東京リージョンにつながり、EC2 Web・APはAmazon Time Sync Service 169.254.169.123のまま、ほかのEC2はpool.ntp.org・社内NTPを追加していて、ログはEC2がUTC、オンプレがJSTで年・ミリ秒がない形式もあるため、同じ注文のログを10msの目安で1つの時系列に並べられるかを問う図
  • 状況:受注システムのWeb・APサーバーはAWSの東京リージョン(EC2のLinux)、DBと基幹システムとの連携はオンプレの本社にあり、Direct Connectで接続している
  • 現状①:EC2はAL2023の既定(Amazon Time Sync Serviceの169.254.169.123)に、担当者がpool.ntp.orgと社内NTPを追加した台と、していない台が混在している
  • 現状②:オンプレのLinuxは社内NTP(NICTなどを参照)に合わせている。ログはEC2がUTC、オンプレがJSTで、年やミリ秒がない形式もある
  • 要件:障害のとき、両方のログを1つの時系列に並べ、1件の注文の流れを追えるようにする(目安は10ミリ秒以内)。どの時刻源を使っていたかも後から示せるようにする

考えるポイント:EC2とオンプレがそれぞれ何を参照するか、リープスメアの混在、ログの時刻の記録形式。

問2 解答例と解説

案構成メリットデメリット
AEC2 も Direct Connect 経由で社内 NTP だけを参照する時刻の元が1つになる回線の遅延と非対称で EC2 の精度が落ちる。回線が切れると AWS 側がずれていく
BEC2 は Amazon Time Sync Service だけ、オンプレは社内 NTP だけを参照し、1台の設定にスメアありとなしを混ぜない。ログはすべて UTC(ミリ秒、オフセット付き)で記録するそれぞれの場所で最も精度が高い。回線の障害に強いうるう秒の日だけ、両者に最大約0.5秒の差が出る
C案B に加え、社内 NTP の上位もスメアありの時刻源(time.aws.com など)にそろえるうるう秒の日も両者がそろう外部の時刻源をすべてスメアありにする必要があり、独立した4つをそろえにくい
2026-09-26T01:23:45.678Z web01 order=A1234 accepted            # EC2(UTC)
2026-09-26T10:23:45.702+09:00 db01 order=A1234 committed       # オンプレ(JST、オフセット付き)
Sep 26 10:23:45 db02 app: order=A1234 shipped                  # 年・ミリ秒・タイムゾーンがない(避ける)
オンプレはNICTなど(スメアなし)を参照する社内NTPにLinux・DBを合わせ、AWSはAmazon Time Sync 169.254.169.123(スメアあり)にEC2を合わせてpool.ntp.orgや社内NTPを混ぜず、ログの収集基盤ではUTC・ミリ秒・オフセット付きで1本の時系列にし、両者の差はうるう秒の日だけ最大約0.5秒になることを示す図

案Bが有力です。AWSも、うるう秒のときにスメアありとなしを同じ設定に混ぜないよう勧めています(第7回)。うるう秒は2026年12月末も挿入されず(IERS Bulletin C 72)、2027年5月20日から連続したUTCに移ることが決まっています(第2回)。EC2の設定を統一し、chronyc sourcesを定期的に記録して、使っていた時刻源を示せるようにします。

時刻源は場所ごとに1系統。両側をつなぐのは時刻源ではなく、UTCで書いたログです。


問3 「ときどきKerberos認証に失敗し、ログの時刻もずれている」

週末にファイアウォールのルールを更新し、dc01(物理)とdc02(VM)のDCの記録に4771(0x25)があり、vSphereクラスターのesx01〜03と先週末に追加したesx04のうち、古いテンプレートから作ったfs01(Windows Server)とapp01(Linux、SSSD)がesx04へ移動していて、利用者は時々失敗して資格情報を求められ、ログの収集基盤ではfs01とapp01のログが数分先になったり巻き戻ったりしていることを示す図
  • 状況:月曜の朝から「ファイルサーバーfs01に時々つながらず、資格情報を求められる」「業務アプリapp01のログインが時々失敗する」と報告が続いている
  • 記録:DCのセキュリティログに4771(失敗コード0x25)が散発している。ログの収集基盤で見ると、fs01とapp01のログだけ時刻が数分ずれ、ときどき巻き戻っている
  • 構成:DCは2台(物理1台、VM 1台)。fs01(Windows Server)とapp01(Linux、SSSDでAD認証)はvSphereのVMで、古いテンプレートから作った。先週末にESXiホストesx04を追加し、fs01とapp01をesx04へ移した
  • 同じ週末に、サーバーのセグメントのファイアウォールのルールも更新している

考えるポイント:どの順に何を確かめるか、考えられる原因、直し方と再発の防止。

問3 解答例と解説

案対応メリットデメリット
AKerberos の許容範囲を5分から10分に広げるすぐに失敗が減る原因が残り、ずれが広がれば再発する。リプレイ攻撃への耐性も下がる
Bfs01 で w32tm /resync を実行し、w32time を再起動するすぐに試せる数分後にまたずれる。app01 も直らない
C共通点(esx04 上の VM)から、同期の状態 → 誰が時計を動かしたか → ホストの順に確かめ、原因を直す原因を特定し、再発を防げる手間と、vSphere・Windows・Linux の知識が要る
PS> w32tm /stripchart /computer:dc01.corp.example.jp /samples:4 /dataonly
10:02:11, +00.0012034s
10:02:13, -359.8420961s                         # fs01 が約6分進んだ
PS> & "C:\Program Files\VMware\VMware Tools\VMwareToolboxCmd.exe" timesync status
Enabled
$ journalctl -u chronyd | grep 'time jump'          # app01
... Forward time jump detected!
①共通点を整理するとesx04上のVMだけ、②w32tm /query /status・chronyc trackingで同期の状態を見ると同期はしていて通信もできる、③w32tm /stripchartでDCとの差を続けて見ると0と約6分を行き来する、④VMware Toolsのtimesyncとchronyのtime jumpを見ると定期同期が有効でForward jump、⑤esx04の時刻の構成はNTP未設定で約6分進み、⑥esx04に社内NTPを設定しツールの定期同期を無効にしてテンプレートを修正し監視する、とゲストの中から外へ調べる手順を示す図

案Cです。w32timeの参照先はDCで、通信もできています(ファイアウォールではない)。それでも時刻が跳ぶのは、古いテンプレートで有効なVMware Toolsの定期同期が、NTPが未設定で約6分進んだesx04の時刻を押し付けているためです(第6回・第10回の二重の同期)。

esx04に社内NTPを設定し、定期同期を無効にして、テンプレートも直します。ゲストの中から外へ調べると、揺れの原因はゲストの外、ホストの時計にありました。同じ週末のファイアウォールの変更は、疑わしく見えても、同期の状態を確かめれば外せます。


問4 監査の要件で、UTCから1ms以内にそろえる

UTCから1ms以内とそれを示す記録を1年保管という要件に対し、データセンターの社内NTP(chrony、VM)がインターネットの公開NTPを参照していてRoot delay約20ms・Root dispersion約3msで、受付Linux×6(物理)と記録用Windows Server 2025×2(vSphereのVM)、AWSの分析基盤EC2(M7i)があり、予算は時刻の専用機器とNW機器の更新が可という状況で、20ms先の時刻源で1msを示せるかを問う図
  • 状況:取引を記録するシステムで、監査の要件として「記録サーバーの時刻をUTCから1ms以内に保ち、それを示す記録を1年間保管する」ことが求められた
  • 構成:オンプレのデータセンターに、受付用のLinuxサーバー6台(物理)と、記録用のWindows Server 2025が2台(vSphereのVM)。分析基盤はAWSのEC2(Linux、M7i)
  • 現状:社内NTP(chrony、VM)が、インターネット経由で公開NTPを参照している。記録サーバーでw32tm /query /statusを見ると、Root Delayが約20ms、Root Dispersionが約3ms
  • 予算:時刻の専用機器とネットワーク機器の更新は、必要なら認められる

考えるポイント:今の構成で1msを示せるか、NTPとPTPの使い分け、Windowsの高精度時刻の条件、クラウドのPTPハードウェアクロック、監視と証跡。

問4 解答例

案構成メリットデメリット
A今の構成のまま、社内 NTP と記録サーバーのポーリング間隔を短くする費用がかからない誤差の上限が約13ms(ずれの絶対値+3ms+20ms÷2)以上で、1ms を示せない
Bデータセンターに GNSS 受信機付きの時刻サーバー(stratum 1、NTP と PTP に対応)を2台置く。物理の Linux は PTP(ptp4l・phc2sys、PTP 対応スイッチ)、Windows の VM は同じ LAN から NTP(高精度の設定)、EC2 は精度重視の配置グループで PTP ハードウェアクロックを使うどこでも 1ms に十分な余裕があり、根拠を示しやすい時刻サーバー、PTP 対応スイッチ、アンテナの費用と運用
C時刻サーバーは案B と同じにし、配布は NTP だけにする(chrony のハードウェアタイムスタンプ、短いポーリング間隔)スイッチの入れ替えが要らないネットワークの負荷と非対称の影響を受けやすく、余裕が小さい。測定で確かめる必要がある
GNSSを受信するstratum 1の時刻サーバー×2がNTPとPTPを配り、PTP対応スイッチ経由で物理Linux×6にptp4l・phc2sysでµs以下、同じLANからWindows Server 2025×2(ESXi上のVM、高精度の設定)にNTPで条件を満たせば1ms未満、AWSではAmazon Time SyncのPTPハードウェアクロックを精度重視の配置グループのEC2(Linux)がµs級で使い、時刻の元をデータセンターの中に置いて配り方を機器ごとに選ぶことを示す図

案Bが有力で、測定で余裕が確かめられれば案Cでも要件を満たせます。

案Aが駄目な理由は、第4回(Linuxの時刻同期)の誤差の上限の式で分かります。Root delayが20msあると、それだけで上限は10ms以上になり、1msは示せません。時刻源をデータセンターの中に置くことが出発点です。

Windowsで1msを狙うには、時刻源までの遅延0.1ms未満、stratum 5以内、4ホップ以内、CPU使用率の1日平均80%以下(VMはホストも)がMicrosoftの条件です(第5回)。EC2のWindowsはPTPハードウェアクロックを使えず、NTPで受けます(第9回)。

問4 解説:精度の示し方(監視と証跡)

対象記録する値取り方保管と警告
Linux(chrony)System time、Root delay、Root dispersion から誤差の上限(ずれの絶対値+Root dispersion+Root delay÷2)chronyc tracking を定期的に取得、または log tracking measurements statistics上限が 0.5ms を超えたら警告。1年保管
Linux(PTP)ptp4l・phc2sys のずれ(offset)と状態ptp4l・phc2sys のログ状態の変化とずれを警告
WindowsComputed Time Offset、NTP Roundtrip Delay、使っていた時刻源パフォーマンスカウンター、w32tm /debug /enable、システムログ(Time-Service・Kernel-General)カウンターとログをまとめて保管
時刻サーバーGNSS の受信状態、ホールドオーバー(受信断の間の自走)への切り替えSNMP・syslog、機器のログ受信断と切り替えを警告
EC2誤差の上限ClockBound(AWS のオープンソースのデーモン)CloudWatch に記録
誤差の上限を30日間グラフにし、要件1msと警告0.5msの線を引いた監視と、GNSS(UTCの源)から時刻サーバー×2(受信状態・ホールドオーバー)、記録サーバー・EC2(chrony・ptp4l・w32time)までの記録を証跡の保管庫に1年保管し、記録が途切れた期間は1msを示せない期間になることを示す図

1msの根拠は、ずれの値だけでなく「誤差の上限」と、UTCまでたどれる時刻源の連鎖(トレーサビリティー)で示します。Microsoftも、w32timeのログ・イベントログ・パフォーマンスカウンターを保管して後から示す方法を案内しています。GNSSは妨害や受信断もあるため、時刻サーバーは2台とし、互いに比べます(第7回)。

記録が途切れた期間は、1msを示せない期間になることも、忘れないようにしましょう。


振り返り

全11回を通じて、持ち帰ってほしいことは3つです。

  1. 時刻はUTCを基準に、独立した4つ以上の時刻源から、1本の階層でそろえる。外部は社内NTPだけが参照し、リープスメアの有無を混ぜず、ログはUTCで記録する
  2. 時計を動かす仕組みは1台に1つ。chrony・w32timeと仮想化のツールによる二重の同期を避け、大きなずれのstepは業務への影響を考えて行う
  3. 同期の状態は数値で読み、監視して示す。届くか → 使われるか → 誰が時計を動かしたか、の順に確かめる

まずは自分のサーバーでchronyc sources -v(Windowsはw32tm /query /status)を実行し、どの時刻源に合わせているかを確かめてみてください。困ったときに戻る場所は、第10回の「連載の早見表」にまとめています。時刻に深く関わる証明書とDNSは、連載「証明書入門」「DNS入門」もあわせてどうぞ。


まとめ

  • 設計は要件と現状の確認から。書かれていない条件は仮定を明記する
  • 問1:外へ出るのは社内NTPだけ。ADの元はPDCエミュレーター1台。出口の障害でもUTCを保つならGNSS
  • 問2:時刻源は場所ごとに1系統、スメアを混ぜない。つなぐのはUTCで書いたログ
  • 問3:共通点から、同期の状態 → 誰が時計を動かしたか → ホストの順に。許容範囲を広げるのは対症療法
  • 問4:1msは時刻源を近くに置き、誤差の上限と記録で示す。記録が途切れた期間は示せない

「NTP入門」全11回、最後までお読みいただき、ありがとうございました。


連載「NTP入門」全11回

全回の目次と、読む順番・目的別の読み方は、NTP入門の入口のページにまとめています。

  1. なぜ時刻同期が必要か
  2. 時刻の基礎知識
  3. NTPの仕組み
  4. Linuxの時刻同期(chrony)
  5. Windowsの時刻同期
  6. ネットワーク機器・仮想基盤
  7. 設計と推奨構成
  8. NTPのセキュリティ
  9. PTPと高精度同期
  10. 時刻同期のトラブルシュート
  11. 時刻同期の設計演習(この記事)
seichan

ご連絡は X (twitter) の DM へお願いします.
AWS Certified Solutions Architect – Professional (https://www.credly.com/badges/fd8feb88-6f1f-42ff-a94b-445bb6661cb8/public_url)
Nutanix Certified Professional - Multicloud Infrastructure 6 (https://www.credly.com/badges/5c081bef-a425-42e4-809c-85138e676630/public_url)
Palo Alto Networks System Engineer (PSE) - Hardware Firewall Professional (https://www.credly.com/badges/69dc3880-4a51-47eb-8843-47ba6ea7d013/public_url)

seichanをフォローする
スポンサーリンク
スポンサーリンク
NTP サーバー
シェアする
seichanをフォローする

スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました