プロトコル補足

NTP(Network Time Protocol) えぬてぃーぴー

時刻同期StratumNTPサーバーUDPSNTPクロックドリフト
NTPについて教えて

簡単に言うとこんな感じ!

NTPは「ネットワーク上のすべての機器の時計を合わせる仕組み」だよ! 腕時計をテレビの時報に合わせるイメージで、パソコンやサーバーがインターネット上の「超正確な時計」に自動で時刻を合わせてくれるプロトコルなんだ。これがないと、ログの時刻がバラバラになって障害調査が大混乱になるってこと!


NTPとは

NTP(Network Time Protocol)は、ネットワークに接続された機器の時刻を正確に同期させるためのプロトコルです。1985年にデイビッド・L・ミルズ(David L. Mills)によって設計され、現在はバージョン4(NTPv4)が広く使われています。ポート番号UDP 123番を使用します。

コンピューターの内部時計は、放置しておくと少しずつズレていく「クロックドリフト」という現象が起こります。このズレはわずかでも、ログの記録・認証トークンの有効期限・データベーストランザクション順序など、あらゆるシステムの信頼性に影響します。NTPはこのズレを自動で検知・補正し、ミリ秒以下の精度で時刻を揃え続ける役割を担っています。

企業システムでは「全サーバーの時刻が揃っていること」はセキュリティ要件にも含まれることがあり、特にKerberos認証(Windows Active Directoryで使われる)は時刻が5分以上ズレると認証が失敗するという厳しい仕様になっています。NTPはインフラの「縁の下の力持ち」として、多くのシステムが正常に動くための前提条件になっています。


NTPの仕組みと構造

NTPは「Stratum(ストラタム)」と呼ばれる階層構造で時刻を伝播させます。Stratumは「正確な時計源からの距離」を表す数値で、0に近いほど精度が高い時刻源です。

Stratumの階層構造

Stratumレベル内容具体例
Stratum 0一次時刻源(参照時計)。ネットワークには接続しない原子時計・GPS・電波時計
Stratum 1Stratum 0に直接接続されたNTPサーバーntp.nict.jp(情報通信研究機構)
Stratum 2Stratum 1から時刻を受け取るサーバー企業の内部NTPサーバーなど
Stratum 3〜15下流のクライアントやサーバー社内PC・ルーター・スイッチなど
Stratum 16未同期(エラー状態)時刻源と接続できていない機器

時刻同期の仕組み(4つのタイムスタンプ)

NTPは通信の往復時間(ラウンドトリップタイム)を計算して、ネットワーク遅延を差し引いた正確な時刻を割り出します。

クライアント          NTPサーバー
    │                     │
    │──①送信時刻 T1 ────►│
    │                     │ ←②受信時刻 T2
    │                     │ ←③送信時刻 T3
    │◄─────────────────── │
    │ 受信時刻 T4          │

オフセット = ((T2-T1) + (T3-T4)) / 2
遅延      = (T4-T1) - (T3-T2)

この計算によってネットワーク遅延の影響を除去し、正確な時刻差(オフセット)を求めます。

覚え方:Stratumは「電話ゲームの段数」

原子時計(Stratum 0)→ 公開サーバー(Stratum 1)→ 社内サーバー(Stratum 2)→ 自分のPC(Stratum 3)

伝言ゲームと同じで、段数が増えるほど誤差が蓄積します。重要なシステムはできるだけStratumの浅い時刻源に同期させるのがベストプラクティスです。


歴史と背景

  • 1981年 — ARPANETでの時刻同期の問題意識が高まり、初期の時刻同期プロトコルが研究される
  • 1985年 — デイビッド・L・ミルズが NTP v1 を RFC 958 として発表。インターネット黎明期から設計された息の長いプロトコル
  • 1989年 — NTP v2(RFC 1119)で信頼性と精度が向上
  • 1992年 — NTP v3(RFC 1305)が策定。現在も一部環境で使用
  • 2010年 — NTP v4(RFC 5905)が正式化。IPv6対応・セキュリティ改善を含む現在の主流バージョン
  • 2016年 — NTPのセキュリティ脆弱性(増幅DDoS攻撃)が問題視され、認証機能の重要性が再認識される
  • 近年 — クラウド環境での利用拡大にともない、AWS・Azure・GCPがそれぞれマネージドNTPサービスを提供。Amazon Time Sync Serviceなどが登場

NTP・SNTP・PTP の比較

NTPに似たプロトコルが複数あります。用途に応じた使い分けが重要です。

時刻同期プロトコルの比較 NTP v4 精度: ミリ秒〜数十μs 対象: サーバー・PC 複雑さ: 中 セキュリティ: NTS対応 用途: 汎用インフラ RFC: 5905 SNTP 精度: 秒〜ミリ秒 対象: 組み込み機器 複雑さ: 低(軽量) セキュリティ: 最小限 用途: IoT・監視カメラ RFC: 4330 PTP(IEEE 1588) 精度: ナノ秒〜マイクロ秒 対象: 産業・通信設備 複雑さ: 高 セキュリティ: 環境依存 用途: 金融・5G基地局 IEEE 1588-2019 ◀ 一般的なシステムの標準選択 超高精度が必要な特殊用途 ▶

NTSとは(最新のセキュリティ強化版)

従来のNTPには認証が弱いという問題がありました。NTS(Network Time Security)はNTPv4に対してTLSベースの認証を追加した拡張仕様(RFC 8915、2020年)です。改ざんやなりすまし攻撃を防ぐために、セキュリティ意識の高い環境では採用が進んでいます。

パブリックNTPサーバー(無料で使える代表例)

提供者アドレス備考
情報通信研究機構(NICT)ntp.nict.jp国内の公式時刻源
NTPプール(世界規模)pool.ntp.orgボランティアサーバー群
Googletime.google.comGoogleインフラ利用
Cloudflaretime.cloudflare.comNTS対応
Amazon169.254.169.123EC2インスタンス向け

関連する規格・RFC

規格・RFC番号内容
RFC 5905NTPv4の現行標準仕様
RFC 4330SNTP(簡易版NTP)の仕様
RFC 8915NTS(Network Time Security)。NTPの認証拡張
RFC 1305NTPv3(レガシー環境で参照されることがある)
IEEE 1588-2019PTP(Precision Time Protocol)。ナノ秒精度の時刻同期

関連用語

  • UDP — NTPが使用するトランスポートプロトコル。ポート123番を使用する
  • DNS — NTPサーバーのホスト名解決に使われる。NTPより先に動作している必要がある
  • Kerberos — 時刻同期に強く依存する認証プロトコル。5分以上のズレで認証失敗になる
  • Active Directory — Kerberosを使うWindows認証基盤。NTPとの連携が必須
  • ファイアウォール — UDPポート123番の通信を許可する設定が必要