【えぬてぃーぴー】

NTP(時刻同期プロトコル) とは?

最終更新:
💡 時計のずれを見積もり、ネットワークで合わせる

Network Time Protocolの略。ネットワーク経由で時刻情報を交換し、コンピュータの時計を同期するプロトコル。通信の遅れなどを見積もるが、得られる精度はネットワークや機器の条件による。

📌 このページのポイント
基準時計から階層に沿って同期 基準時計 原子時計など NTPサーバー Stratum 1 NTPサーバー Stratum 2 Stratumは段数で、精度の点数ではない 要求・応答の4つの時刻を使う クライアント サーバー 要求 応答 t1 送信 t2 受信 t3 送信 t4 受信 時計のずれと往復遅延を見積もる 行き・帰りの遅れの違いなどで誤差は残る
上段の矢印は同期元からの関係、下段は要求・応答の向きです。下段は時間の順序を表す模式図で、遅延や時計の誤差の大きさを表してはいません。
ひよこ ひよこ
なんで時刻を揃える必要があるの?
ペンギン先生 ペンギン先生
複数の機器のログを比べるときや、証明書の有効期間・認証の時刻を確かめるときに役立つよ。たとえばWindowsドメインのKerberos認証では、時計のずれの許容値は標準で5分だけれど、ポリシーで変更できる。すべての環境で一律5分という決まりではないんだ。
ひよこ ひよこ
時計はピッタリ揃うの?
ペンギン先生 ペンギン先生
完全に一致する保証はないよ。要求の送信・受信と応答の送信・受信の4つの時刻から、時計のずれと通信の往復遅延を見積もる。行きと帰りの遅れが大きく違う場合などには誤差が残るので、必要な精度に合う構成を選ぶんだ。
ひよこ ひよこ
Stratumって何?
ペンギン先生 ペンギン先生
基準時計からの階層の段数だよ。原子時計やGPS受信機などに直接つながるNTPサーバーがStratum 1。それと同期する機器が2、その先が3となる。基準時計自体を便宜上Stratum 0と呼ぶこともあるけれど、通常のNTPサーバーの階層値ではない。数字は精度の点数ではなく、通信経路なども精度に影響するよ。NICTのntp.nict.jpはStratum 1の例だね。
ひよこ ひよこ
WindowsやLinuxにも時刻同期の機能があるよね?
ペンギン先生 ペンギン先生
あるよ。Windowsはドメインに参加していない場合、標準ではtime.windows.comと同期する。Active Directoryのドメイン参加機器は、通常はドメインの階層に沿って同期するんだ。LinuxではchronydなどのNTP実装を使えるけれど、採用するサービスや設定は環境によるよ。
ひよこ ひよこ
NTPのセキュリティ対策って、NTPsecで暗号化すること?
ペンギン先生 ペンギン先生
NTPsecは安全性の向上を目指したNTP実装の名前で、「暗号化されたNTP」というプロトコル名ではないよ。NTSはTLSで鍵などを交換し、NTPの時刻メッセージに認証や改ざん検出を加える仕組み。時刻を含む基本ヘッダーは暗号化されないんだ。また、管理用問い合わせの悪用による増幅・反射への対策は別に必要で、実装の更新や問い合わせの制限、応答のレート制限などを検討するよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「NTP」って出てきたら「ネットワーク経由で機器の時計を合わせるプロトコル」と思えばだいたいOK!
📖 おまけ:英語の意味
「Network Time Protocol」 = ネットワーク時刻プロトコル
💬 Networkはネットワーク、Timeは時刻、Protocolは通信の取り決め。1985年のRFC 958で初期のNTPが記述され、その後も改良されているよ。

参考資料

← 用語集にもどる